1 | This is Info file autoconf.info, produced by Makeinfo version 1.67 from
|
---|
2 | the input file /home/bje/autoconf-2.13/autoconf.texi.
|
---|
3 |
|
---|
4 | START-INFO-DIR-ENTRY
|
---|
5 | * Autoconf: (autoconf). Create source code configuration scripts.
|
---|
6 | END-INFO-DIR-ENTRY
|
---|
7 |
|
---|
8 | Autoconf: Creating Automatic Configuration Scripts, by David
|
---|
9 | MacKenzie.
|
---|
10 |
|
---|
11 | This file documents the GNU Autoconf package for creating scripts to
|
---|
12 | configure source code packages using templates and an `m4' macro
|
---|
13 | package.
|
---|
14 |
|
---|
15 | Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998 Free Software
|
---|
16 | Foundation, Inc.
|
---|
17 |
|
---|
18 | Permission is granted to make and distribute verbatim copies of this
|
---|
19 | manual provided the copyright notice and this permission notice are
|
---|
20 | preserved on all copies.
|
---|
21 |
|
---|
22 | Permission is granted to copy and distribute modified versions of
|
---|
23 | this manual under the conditions for verbatim copying, provided that
|
---|
24 | the entire resulting derived work is distributed under the terms of a
|
---|
25 | permission notice identical to this one.
|
---|
26 |
|
---|
27 | Permission is granted to copy and distribute translations of this
|
---|
28 | manual into another language, under the above conditions for modified
|
---|
29 | versions, except that this permission notice may be stated in a
|
---|
30 | translation approved by the Foundation.
|
---|
31 |
|
---|
32 |
|
---|
33 | File: autoconf.info, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
|
---|
34 |
|
---|
35 | This file documents the GNU Autoconf package for creating scripts to
|
---|
36 | configure source code packages using templates and an `m4' macro
|
---|
37 | package. This is edition 2.13, for Autoconf version 2.13.
|
---|
38 |
|
---|
39 | * Menu:
|
---|
40 |
|
---|
41 | * Introduction:: Autoconf's purpose, strengths, and weaknesses.
|
---|
42 | * Making configure Scripts:: How to organize and produce Autoconf scripts.
|
---|
43 | * Setup:: Initialization and output.
|
---|
44 | * Existing Tests:: Macros that check for particular features.
|
---|
45 | * Writing Tests:: How to write new feature checks.
|
---|
46 | * Results:: What to do with results from feature checks.
|
---|
47 | * Writing Macros:: Adding new macros to Autoconf.
|
---|
48 | * Manual Configuration:: Selecting features that can't be guessed.
|
---|
49 | * Site Configuration:: Local defaults for `configure'.
|
---|
50 | * Invoking configure:: How to use the Autoconf output.
|
---|
51 | * Invoking config.status:: Recreating a configuration.
|
---|
52 | * Questions:: Questions about Autoconf, with answers.
|
---|
53 | * Upgrading:: Tips for upgrading from version 1.
|
---|
54 | * History:: History of Autoconf.
|
---|
55 | * Old Macro Names:: Backward compatibility macros.
|
---|
56 | * Environment Variable Index:: Index of environment variables used.
|
---|
57 | * Output Variable Index:: Index of variables set in output files.
|
---|
58 | * Preprocessor Symbol Index:: Index of C preprocessor symbols defined.
|
---|
59 | * Macro Index:: Index of Autoconf macros.
|
---|
60 |
|
---|
61 | -- The Detailed Node Listing --
|
---|
62 |
|
---|
63 | Making `configure' Scripts
|
---|
64 |
|
---|
65 | * Writing configure.in:: What to put in an Autoconf input file.
|
---|
66 | * Invoking autoscan:: Semi-automatic `configure.in' writing.
|
---|
67 | * Invoking ifnames:: Listing the conditionals in source code.
|
---|
68 | * Invoking autoconf:: How to create configuration scripts.
|
---|
69 | * Invoking autoreconf:: Remaking multiple `configure' scripts.
|
---|
70 |
|
---|
71 | Initialization and Output Files
|
---|
72 |
|
---|
73 | * Input:: Where Autoconf should find files.
|
---|
74 | * Output:: Creating output files.
|
---|
75 | * Makefile Substitutions:: Using output variables in `Makefile's.
|
---|
76 | * Configuration Headers:: Creating a configuration header file.
|
---|
77 | * Subdirectories:: Configuring independent packages together.
|
---|
78 | * Default Prefix:: Changing the default installation prefix.
|
---|
79 | * Versions:: Version numbers in `configure'.
|
---|
80 |
|
---|
81 | Substitutions in Makefiles
|
---|
82 |
|
---|
83 | * Preset Output Variables:: Output variables that are always set.
|
---|
84 | * Build Directories:: Supporting multiple concurrent compiles.
|
---|
85 | * Automatic Remaking:: Makefile rules for configuring.
|
---|
86 |
|
---|
87 | Configuration Header Files
|
---|
88 |
|
---|
89 | * Header Templates:: Input for the configuration headers.
|
---|
90 | * Invoking autoheader:: How to create configuration templates.
|
---|
91 |
|
---|
92 | Existing Tests
|
---|
93 |
|
---|
94 | * Alternative Programs:: Selecting between alternative programs.
|
---|
95 | * Libraries:: Library archives that might be missing.
|
---|
96 | * Library Functions:: C library functions that might be missing.
|
---|
97 | * Header Files:: Header files that might be missing.
|
---|
98 | * Structures:: Structures or members that might be missing.
|
---|
99 | * Typedefs:: `typedef's that might be missing.
|
---|
100 | * C Compiler Characteristics::
|
---|
101 | * Fortran 77 Compiler Characteristics::
|
---|
102 | * System Services:: Operating system services.
|
---|
103 | * UNIX Variants:: Special kludges for specific UNIX variants.
|
---|
104 |
|
---|
105 | Alternative Programs
|
---|
106 |
|
---|
107 | * Particular Programs:: Special handling to find certain programs.
|
---|
108 | * Generic Programs:: How to find other programs.
|
---|
109 |
|
---|
110 | Library Functions
|
---|
111 |
|
---|
112 | * Particular Functions:: Special handling to find certain functions.
|
---|
113 | * Generic Functions:: How to find other functions.
|
---|
114 |
|
---|
115 | Header Files
|
---|
116 |
|
---|
117 | * Particular Headers:: Special handling to find certain headers.
|
---|
118 | * Generic Headers:: How to find other headers.
|
---|
119 |
|
---|
120 | Typedefs
|
---|
121 |
|
---|
122 | * Particular Typedefs:: Special handling to find certain types.
|
---|
123 | * Generic Typedefs:: How to find other types.
|
---|
124 |
|
---|
125 | Writing Tests
|
---|
126 |
|
---|
127 | * Examining Declarations:: Detecting header files and declarations.
|
---|
128 | * Examining Syntax:: Detecting language syntax features.
|
---|
129 | * Examining Libraries:: Detecting functions and global variables.
|
---|
130 | * Run Time:: Testing for run-time features.
|
---|
131 | * Portable Shell:: Shell script portability pitfalls.
|
---|
132 | * Testing Values and Files:: Checking strings and files.
|
---|
133 | * Multiple Cases:: Tests for several possible values.
|
---|
134 | * Language Choice:: Selecting which language to use for testing.
|
---|
135 |
|
---|
136 | Checking Run Time Behavior
|
---|
137 |
|
---|
138 | * Test Programs:: Running test programs.
|
---|
139 | * Guidelines:: General rules for writing test programs.
|
---|
140 | * Test Functions:: Avoiding pitfalls in test programs.
|
---|
141 |
|
---|
142 | Results of Tests
|
---|
143 |
|
---|
144 | * Defining Symbols:: Defining C preprocessor symbols.
|
---|
145 | * Setting Output Variables:: Replacing variables in output files.
|
---|
146 | * Caching Results:: Speeding up subsequent `configure' runs.
|
---|
147 | * Printing Messages:: Notifying users of progress or problems.
|
---|
148 |
|
---|
149 | Caching Results
|
---|
150 |
|
---|
151 | * Cache Variable Names:: Shell variables used in caches.
|
---|
152 | * Cache Files:: Files `configure' uses for caching.
|
---|
153 |
|
---|
154 | Writing Macros
|
---|
155 |
|
---|
156 | * Macro Definitions:: Basic format of an Autoconf macro.
|
---|
157 | * Macro Names:: What to call your new macros.
|
---|
158 | * Quoting:: Protecting macros from unwanted expansion.
|
---|
159 | * Dependencies Between Macros:: What to do when macros depend on other macros.
|
---|
160 |
|
---|
161 | Dependencies Between Macros
|
---|
162 |
|
---|
163 | * Prerequisite Macros:: Ensuring required information.
|
---|
164 | * Suggested Ordering:: Warning about possible ordering problems.
|
---|
165 | * Obsolete Macros:: Warning about old ways of doing things.
|
---|
166 |
|
---|
167 | Manual Configuration
|
---|
168 |
|
---|
169 | * Specifying Names:: Specifying the system type.
|
---|
170 | * Canonicalizing:: Getting the canonical system type.
|
---|
171 | * System Type Variables:: Variables containing the system type.
|
---|
172 | * Using System Type:: What to do with the system type.
|
---|
173 |
|
---|
174 | Site Configuration
|
---|
175 |
|
---|
176 | * External Software:: Working with other optional software.
|
---|
177 | * Package Options:: Selecting optional features.
|
---|
178 | * Site Details:: Configuring site details.
|
---|
179 | * Transforming Names:: Changing program names when installing.
|
---|
180 | * Site Defaults:: Giving `configure' local defaults.
|
---|
181 |
|
---|
182 | Transforming Program Names When Installing
|
---|
183 |
|
---|
184 | * Transformation Options:: `configure' options to transform names.
|
---|
185 | * Transformation Examples:: Sample uses of transforming names.
|
---|
186 | * Transformation Rules:: `Makefile' uses of transforming names.
|
---|
187 |
|
---|
188 | Running `configure' Scripts
|
---|
189 |
|
---|
190 | * Basic Installation:: Instructions for typical cases.
|
---|
191 | * Compilers and Options:: Selecting compilers and optimization.
|
---|
192 | * Multiple Architectures:: Compiling for multiple architectures at once.
|
---|
193 | * Installation Names:: Installing in different directories.
|
---|
194 | * Optional Features:: Selecting optional features.
|
---|
195 | * System Type:: Specifying the system type.
|
---|
196 | * Sharing Defaults:: Setting site-wide defaults for `configure'.
|
---|
197 | * Operation Controls:: Changing how `configure' runs.
|
---|
198 |
|
---|
199 | Questions About Autoconf
|
---|
200 |
|
---|
201 | * Distributing:: Distributing `configure' scripts.
|
---|
202 | * Why GNU m4:: Why not use the standard `m4'?
|
---|
203 | * Bootstrapping:: Autoconf and GNU `m4' require each other?
|
---|
204 | * Why Not Imake:: Why GNU uses `configure' instead of Imake.
|
---|
205 |
|
---|
206 | Upgrading From Version 1
|
---|
207 |
|
---|
208 | * Changed File Names:: Files you might rename.
|
---|
209 | * Changed Makefiles:: New things to put in `Makefile.in'.
|
---|
210 | * Changed Macros:: Macro calls you might replace.
|
---|
211 | * Invoking autoupdate:: Replacing old macro names in `configure.in'.
|
---|
212 | * Changed Results:: Changes in how to check test results.
|
---|
213 | * Changed Macro Writing:: Better ways to write your own macros.
|
---|
214 |
|
---|
215 | History of Autoconf
|
---|
216 |
|
---|
217 | * Genesis:: Prehistory and naming of `configure'.
|
---|
218 | * Exodus:: The plagues of `m4' and Perl.
|
---|
219 | * Leviticus:: The priestly code of portability arrives.
|
---|
220 | * Numbers:: Growth and contributors.
|
---|
221 | * Deuteronomy:: Approaching the promises of easy configuration.
|
---|
222 |
|
---|
223 |
|
---|
224 | File: autoconf.info, Node: Introduction, Next: Making configure Scripts, Prev: Top, Up: Top
|
---|
225 |
|
---|
226 | Introduction
|
---|
227 | ************
|
---|
228 |
|
---|
229 | A physicist, an engineer, and a computer scientist were
|
---|
230 | discussing the nature of God. Surely a Physicist, said the
|
---|
231 | physicist, because early in the Creation, God made Light; and you
|
---|
232 | know, Maxwell's equations, the dual nature of electro-magnetic
|
---|
233 | waves, the relativist consequences... An Engineer!, said the
|
---|
234 | engineer, because before making Light, God split the Chaos into
|
---|
235 | Land and Water; it takes a hell of an engineer to handle that big
|
---|
236 | amount of mud, and orderly separation of solids from
|
---|
237 | liquids... The computer scientist shouted: And the Chaos,
|
---|
238 | where do you think it was coming from, hmm?
|
---|
239 |
|
---|
240 | ---Anonymous
|
---|
241 |
|
---|
242 | Autoconf is a tool for producing shell scripts that automatically
|
---|
243 | configure software source code packages to adapt to many kinds of
|
---|
244 | UNIX-like systems. The configuration scripts produced by Autoconf are
|
---|
245 | independent of Autoconf when they are run, so their users do not need to
|
---|
246 | have Autoconf.
|
---|
247 |
|
---|
248 | The configuration scripts produced by Autoconf require no manual user
|
---|
249 | intervention when run; they do not normally even need an argument
|
---|
250 | specifying the system type. Instead, they test for the presence of each
|
---|
251 | feature that the software package they are for might need individually.
|
---|
252 | (Before each check, they print a one-line message stating what they are
|
---|
253 | checking for, so the user doesn't get too bored while waiting for the
|
---|
254 | script to finish.) As a result, they deal well with systems that are
|
---|
255 | hybrids or customized from the more common UNIX variants. There is no
|
---|
256 | need to maintain files that list the features supported by each release
|
---|
257 | of each variant of UNIX.
|
---|
258 |
|
---|
259 | For each software package that Autoconf is used with, it creates a
|
---|
260 | configuration script from a template file that lists the system
|
---|
261 | features that the package needs or can use. After the shell code to
|
---|
262 | recognize and respond to a system feature has been written, Autoconf
|
---|
263 | allows it to be shared by many software packages that can use (or need)
|
---|
264 | that feature. If it later turns out that the shell code needs
|
---|
265 | adjustment for some reason, it needs to be changed in only one place;
|
---|
266 | all of the configuration scripts can be regenerated automatically to
|
---|
267 | take advantage of the updated code.
|
---|
268 |
|
---|
269 | The Metaconfig package is similar in purpose to Autoconf, but the
|
---|
270 | scripts it produces require manual user intervention, which is quite
|
---|
271 | inconvenient when configuring large source trees. Unlike Metaconfig
|
---|
272 | scripts, Autoconf scripts can support cross-compiling, if some care is
|
---|
273 | taken in writing them.
|
---|
274 |
|
---|
275 | There are several jobs related to making portable software packages
|
---|
276 | that Autoconf currently does not do. Among these are automatically
|
---|
277 | creating `Makefile' files with all of the standard targets, and
|
---|
278 | supplying replacements for standard library functions and header files
|
---|
279 | on systems that lack them. Work is in progress to add those features in
|
---|
280 | the future.
|
---|
281 |
|
---|
282 | Autoconf imposes some restrictions on the names of macros used with
|
---|
283 | `#ifdef' in C programs (*note Preprocessor Symbol Index::.).
|
---|
284 |
|
---|
285 | Autoconf requires GNU `m4' in order to generate the scripts. It
|
---|
286 | uses features that some UNIX versions of `m4' do not have. It also
|
---|
287 | overflows internal limits of some versions of `m4', including GNU `m4'
|
---|
288 | 1.0. You must use version 1.1 or later of GNU `m4'. Using version 1.3
|
---|
289 | or later will be much faster than 1.1 or 1.2.
|
---|
290 |
|
---|
291 | *Note Upgrading::, for information about upgrading from version 1.
|
---|
292 | *Note History::, for the story of Autoconf's development. *Note
|
---|
293 | Questions::, for answers to some common questions about Autoconf.
|
---|
294 |
|
---|
295 | Mail suggestions and bug reports for Autoconf to
|
---|
296 | `bug-gnu-utils@prep.ai.mit.edu'. Please include the Autoconf version
|
---|
297 | number, which you can get by running `autoconf --version'.
|
---|
298 |
|
---|
299 |
|
---|
300 | File: autoconf.info, Node: Making configure Scripts, Next: Setup, Prev: Introduction, Up: Top
|
---|
301 |
|
---|
302 | Making `configure' Scripts
|
---|
303 | **************************
|
---|
304 |
|
---|
305 | The configuration scripts that Autoconf produces are by convention
|
---|
306 | called `configure'. When run, `configure' creates several files,
|
---|
307 | replacing configuration parameters in them with appropriate values.
|
---|
308 | The files that `configure' creates are:
|
---|
309 |
|
---|
310 | * one or more `Makefile' files, one in each subdirectory of the
|
---|
311 | package (*note Makefile Substitutions::.);
|
---|
312 |
|
---|
313 | * optionally, a C header file, the name of which is configurable,
|
---|
314 | containing `#define' directives (*note Configuration Headers::.);
|
---|
315 |
|
---|
316 | * a shell script called `config.status' that, when run, will recreate
|
---|
317 | the files listed above (*note Invoking config.status::.);
|
---|
318 |
|
---|
319 | * a shell script called `config.cache' that saves the results of
|
---|
320 | running many of the tests (*note Cache Files::.);
|
---|
321 |
|
---|
322 | * a file called `config.log' containing any messages produced by
|
---|
323 | compilers, to help debugging if `configure' makes a mistake.
|
---|
324 |
|
---|
325 | To create a `configure' script with Autoconf, you need to write an
|
---|
326 | Autoconf input file `configure.in' and run `autoconf' on it. If you
|
---|
327 | write your own feature tests to supplement those that come with
|
---|
328 | Autoconf, you might also write files called `aclocal.m4' and
|
---|
329 | `acsite.m4'. If you use a C header file to contain `#define'
|
---|
330 | directives, you might also write `acconfig.h', and you will distribute
|
---|
331 | the Autoconf-generated file `config.h.in' with the package.
|
---|
332 |
|
---|
333 | Here is a diagram showing how the files that can be used in
|
---|
334 | configuration are produced. Programs that are executed are suffixed by
|
---|
335 | `*'. Optional files are enclosed in square brackets (`[]').
|
---|
336 | `autoconf' and `autoheader' also read the installed Autoconf macro
|
---|
337 | files (by reading `autoconf.m4').
|
---|
338 |
|
---|
339 | Files used in preparing a software package for distribution:
|
---|
340 | your source files --> [autoscan*] --> [configure.scan] --> configure.in
|
---|
341 |
|
---|
342 | configure.in --. .------> autoconf* -----> configure
|
---|
343 | +---+
|
---|
344 | [aclocal.m4] --+ `---.
|
---|
345 | [acsite.m4] ---' |
|
---|
346 | +--> [autoheader*] -> [config.h.in]
|
---|
347 | [acconfig.h] ----. |
|
---|
348 | +-----'
|
---|
349 | [config.h.top] --+
|
---|
350 | [config.h.bot] --'
|
---|
351 |
|
---|
352 | Makefile.in -------------------------------> Makefile.in
|
---|
353 |
|
---|
354 | Files used in configuring a software package:
|
---|
355 | .-------------> config.cache
|
---|
356 | configure* ------------+-------------> config.log
|
---|
357 | |
|
---|
358 | [config.h.in] -. v .-> [config.h] -.
|
---|
359 | +--> config.status* -+ +--> make*
|
---|
360 | Makefile.in ---' `-> Makefile ---'
|
---|
361 |
|
---|
362 | * Menu:
|
---|
363 |
|
---|
364 | * Writing configure.in:: What to put in an Autoconf input file.
|
---|
365 | * Invoking autoscan:: Semi-automatic `configure.in' writing.
|
---|
366 | * Invoking ifnames:: Listing the conditionals in source code.
|
---|
367 | * Invoking autoconf:: How to create configuration scripts.
|
---|
368 | * Invoking autoreconf:: Remaking multiple `configure' scripts.
|
---|
369 |
|
---|
370 |
|
---|
371 | File: autoconf.info, Node: Writing configure.in, Next: Invoking autoscan, Prev: Making configure Scripts, Up: Making configure Scripts
|
---|
372 |
|
---|
373 | Writing `configure.in'
|
---|
374 | ======================
|
---|
375 |
|
---|
376 | To produce a `configure' script for a software package, create a
|
---|
377 | file called `configure.in' that contains invocations of the Autoconf
|
---|
378 | macros that test the system features your package needs or can use.
|
---|
379 | Autoconf macros already exist to check for many features; see *Note
|
---|
380 | Existing Tests::, for their descriptions. For most other features, you
|
---|
381 | can use Autoconf template macros to produce custom checks; see *Note
|
---|
382 | Writing Tests::, for information about them. For especially tricky or
|
---|
383 | specialized features, `configure.in' might need to contain some
|
---|
384 | hand-crafted shell commands. The `autoscan' program can give you a
|
---|
385 | good start in writing `configure.in' (*note Invoking autoscan::., for
|
---|
386 | more information).
|
---|
387 |
|
---|
388 | The order in which `configure.in' calls the Autoconf macros is not
|
---|
389 | important, with a few exceptions. Every `configure.in' must contain a
|
---|
390 | call to `AC_INIT' before the checks, and a call to `AC_OUTPUT' at the
|
---|
391 | end (*note Output::.). Additionally, some macros rely on other macros
|
---|
392 | having been called first, because they check previously set values of
|
---|
393 | some variables to decide what to do. These macros are noted in the
|
---|
394 | individual descriptions (*note Existing Tests::.), and they also warn
|
---|
395 | you when creating `configure' if they are called out of order.
|
---|
396 |
|
---|
397 | To encourage consistency, here is a suggested order for calling the
|
---|
398 | Autoconf macros. Generally speaking, the things near the end of this
|
---|
399 | list could depend on things earlier in it. For example, library
|
---|
400 | functions could be affected by typedefs and libraries.
|
---|
401 |
|
---|
402 | `AC_INIT(FILE)'
|
---|
403 | checks for programs
|
---|
404 | checks for libraries
|
---|
405 | checks for header files
|
---|
406 | checks for typedefs
|
---|
407 | checks for structures
|
---|
408 | checks for compiler characteristics
|
---|
409 | checks for library functions
|
---|
410 | checks for system services
|
---|
411 | `AC_OUTPUT([FILE...])'
|
---|
412 |
|
---|
413 | It is best to put each macro call on its own line in `configure.in'.
|
---|
414 | Most of the macros don't add extra newlines; they rely on the newline
|
---|
415 | after the macro call to terminate the commands. This approach makes
|
---|
416 | the generated `configure' script a little easier to read by not
|
---|
417 | inserting lots of blank lines. It is generally safe to set shell
|
---|
418 | variables on the same line as a macro call, because the shell allows
|
---|
419 | assignments without intervening newlines.
|
---|
420 |
|
---|
421 | When calling macros that take arguments, there must not be any blank
|
---|
422 | space between the macro name and the open parenthesis. Arguments can be
|
---|
423 | more than one line long if they are enclosed within the `m4' quote
|
---|
424 | characters `[' and `]'. If you have a long line such as a list of file
|
---|
425 | names, you can generally use a backslash at the end of a line to
|
---|
426 | continue it logically on the next line (this is implemented by the
|
---|
427 | shell, not by anything special that Autoconf does).
|
---|
428 |
|
---|
429 | Some macros handle two cases: what to do if the given condition is
|
---|
430 | met, and what to do if the condition is not met. In some places you
|
---|
431 | might want to do something if a condition is true but do nothing if it's
|
---|
432 | false, or vice versa. To omit the true case, pass an empty value for
|
---|
433 | the ACTION-IF-FOUND argument to the macro. To omit the false case,
|
---|
434 | omit the ACTION-IF-NOT-FOUND argument to the macro, including the comma
|
---|
435 | before it.
|
---|
436 |
|
---|
437 | You can include comments in `configure.in' files by starting them
|
---|
438 | with the `m4' builtin macro `dnl', which discards text up through the
|
---|
439 | next newline. These comments do not appear in the generated
|
---|
440 | `configure' scripts. For example, it is helpful to begin
|
---|
441 | `configure.in' files with a line like this:
|
---|
442 |
|
---|
443 | dnl Process this file with autoconf to produce a configure script.
|
---|
444 |
|
---|
445 |
|
---|
446 | File: autoconf.info, Node: Invoking autoscan, Next: Invoking ifnames, Prev: Writing configure.in, Up: Making configure Scripts
|
---|
447 |
|
---|
448 | Using `autoscan' to Create `configure.in'
|
---|
449 | =========================================
|
---|
450 |
|
---|
451 | The `autoscan' program can help you create a `configure.in' file for
|
---|
452 | a software package. `autoscan' examines source files in the directory
|
---|
453 | tree rooted at a directory given as a command line argument, or the
|
---|
454 | current directory if none is given. It searches the source files for
|
---|
455 | common portability problems and creates a file `configure.scan' which
|
---|
456 | is a preliminary `configure.in' for that package.
|
---|
457 |
|
---|
458 | You should manually examine `configure.scan' before renaming it to
|
---|
459 | `configure.in'; it will probably need some adjustments. Occasionally
|
---|
460 | `autoscan' outputs a macro in the wrong order relative to another
|
---|
461 | macro, so that `autoconf' produces a warning; you need to move such
|
---|
462 | macros manually. Also, if you want the package to use a configuration
|
---|
463 | header file, you must add a call to `AC_CONFIG_HEADER' (*note
|
---|
464 | Configuration Headers::.). You might also have to change or add some
|
---|
465 | `#if' directives to your program in order to make it work with Autoconf
|
---|
466 | (*note Invoking ifnames::., for information about a program that can
|
---|
467 | help with that job).
|
---|
468 |
|
---|
469 | `autoscan' uses several data files, which are installed along with
|
---|
470 | the distributed Autoconf macro files, to determine which macros to
|
---|
471 | output when it finds particular symbols in a package's source files.
|
---|
472 | These files all have the same format. Each line consists of a symbol,
|
---|
473 | whitespace, and the Autoconf macro to output if that symbol is
|
---|
474 | encountered. Lines starting with `#' are comments.
|
---|
475 |
|
---|
476 | `autoscan' is only installed if you already have Perl installed.
|
---|
477 | `autoscan' accepts the following options:
|
---|
478 |
|
---|
479 | `--help'
|
---|
480 | Print a summary of the command line options and exit.
|
---|
481 |
|
---|
482 | `--macrodir=DIR'
|
---|
483 | Look for the data files in directory DIR instead of the default
|
---|
484 | installation directory. You can also set the `AC_MACRODIR'
|
---|
485 | environment variable to a directory; this option overrides the
|
---|
486 | environment variable.
|
---|
487 |
|
---|
488 | `--verbose'
|
---|
489 | Print the names of the files it examines and the potentially
|
---|
490 | interesting symbols it finds in them. This output can be
|
---|
491 | voluminous.
|
---|
492 |
|
---|
493 | `--version'
|
---|
494 | Print the version number of Autoconf and exit.
|
---|
495 |
|
---|
496 |
|
---|
497 | File: autoconf.info, Node: Invoking ifnames, Next: Invoking autoconf, Prev: Invoking autoscan, Up: Making configure Scripts
|
---|
498 |
|
---|
499 | Using `ifnames' to List Conditionals
|
---|
500 | ====================================
|
---|
501 |
|
---|
502 | `ifnames' can help when writing a `configure.in' for a software
|
---|
503 | package. It prints the identifiers that the package already uses in C
|
---|
504 | preprocessor conditionals. If a package has already been set up to
|
---|
505 | have some portability, this program can help you figure out what its
|
---|
506 | `configure' needs to check for. It may help fill in some gaps in a
|
---|
507 | `configure.in' generated by `autoscan' (*note Invoking autoscan::.).
|
---|
508 |
|
---|
509 | `ifnames' scans all of the C source files named on the command line
|
---|
510 | (or the standard input, if none are given) and writes to the standard
|
---|
511 | output a sorted list of all the identifiers that appear in those files
|
---|
512 | in `#if', `#elif', `#ifdef', or `#ifndef' directives. It prints each
|
---|
513 | identifier on a line, followed by a space-separated list of the files
|
---|
514 | in which that identifier occurs.
|
---|
515 |
|
---|
516 | `ifnames' accepts the following options:
|
---|
517 |
|
---|
518 | `--help'
|
---|
519 | `-h'
|
---|
520 | Print a summary of the command line options and exit.
|
---|
521 |
|
---|
522 | `--macrodir=DIR'
|
---|
523 | `-m DIR'
|
---|
524 | Look for the Autoconf macro files in directory DIR instead of the
|
---|
525 | default installation directory. Only used to get the version
|
---|
526 | number. You can also set the `AC_MACRODIR' environment variable
|
---|
527 | to a directory; this option overrides the environment variable.
|
---|
528 |
|
---|
529 | `--version'
|
---|
530 | Print the version number of Autoconf and exit.
|
---|
531 |
|
---|
532 |
|
---|
533 | File: autoconf.info, Node: Invoking autoconf, Next: Invoking autoreconf, Prev: Invoking ifnames, Up: Making configure Scripts
|
---|
534 |
|
---|
535 | Using `autoconf' to Create `configure'
|
---|
536 | ======================================
|
---|
537 |
|
---|
538 | To create `configure' from `configure.in', run the `autoconf'
|
---|
539 | program with no arguments. `autoconf' processes `configure.in' with
|
---|
540 | the `m4' macro processor, using the Autoconf macros. If you give
|
---|
541 | `autoconf' an argument, it reads that file instead of `configure.in'
|
---|
542 | and writes the configuration script to the standard output instead of
|
---|
543 | to `configure'. If you give `autoconf' the argument `-', it reads the
|
---|
544 | standard input instead of `configure.in' and writes the configuration
|
---|
545 | script on the standard output.
|
---|
546 |
|
---|
547 | The Autoconf macros are defined in several files. Some of the files
|
---|
548 | are distributed with Autoconf; `autoconf' reads them first. Then it
|
---|
549 | looks for the optional file `acsite.m4' in the directory that contains
|
---|
550 | the distributed Autoconf macro files, and for the optional file
|
---|
551 | `aclocal.m4' in the current directory. Those files can contain your
|
---|
552 | site's or the package's own Autoconf macro definitions (*note Writing
|
---|
553 | Macros::., for more information). If a macro is defined in more than
|
---|
554 | one of the files that `autoconf' reads, the last definition it reads
|
---|
555 | overrides the earlier ones.
|
---|
556 |
|
---|
557 | `autoconf' accepts the following options:
|
---|
558 |
|
---|
559 | `--help'
|
---|
560 | `-h'
|
---|
561 | Print a summary of the command line options and exit.
|
---|
562 |
|
---|
563 | `--localdir=DIR'
|
---|
564 | `-l DIR'
|
---|
565 | Look for the package file `aclocal.m4' in directory DIR instead of
|
---|
566 | in the current directory.
|
---|
567 |
|
---|
568 | `--macrodir=DIR'
|
---|
569 | `-m DIR'
|
---|
570 | Look for the installed macro files in directory DIR. You can also
|
---|
571 | set the `AC_MACRODIR' environment variable to a directory; this
|
---|
572 | option overrides the environment variable.
|
---|
573 |
|
---|
574 | `--version'
|
---|
575 | Print the version number of Autoconf and exit.
|
---|
576 |
|
---|
577 |
|
---|
578 | File: autoconf.info, Node: Invoking autoreconf, Prev: Invoking autoconf, Up: Making configure Scripts
|
---|
579 |
|
---|
580 | Using `autoreconf' to Update `configure' Scripts
|
---|
581 | ================================================
|
---|
582 |
|
---|
583 | If you have a lot of Autoconf-generated `configure' scripts, the
|
---|
584 | `autoreconf' program can save you some work. It runs `autoconf' (and
|
---|
585 | `autoheader', where appropriate) repeatedly to remake the Autoconf
|
---|
586 | `configure' scripts and configuration header templates in the directory
|
---|
587 | tree rooted at the current directory. By default, it only remakes
|
---|
588 | those files that are older than their `configure.in' or (if present)
|
---|
589 | `aclocal.m4'. Since `autoheader' does not change the timestamp of its
|
---|
590 | output file if the file wouldn't be changing, this is not necessarily
|
---|
591 | the minimum amount of work. If you install a new version of Autoconf,
|
---|
592 | you can make `autoreconf' remake *all* of the files by giving it the
|
---|
593 | `--force' option.
|
---|
594 |
|
---|
595 | If you give `autoreconf' the `--macrodir=DIR' or `--localdir=DIR'
|
---|
596 | options, it passes them down to `autoconf' and `autoheader' (with
|
---|
597 | relative paths adjusted properly).
|
---|
598 |
|
---|
599 | `autoreconf' does not support having, in the same directory tree,
|
---|
600 | both directories that are parts of a larger package (sharing
|
---|
601 | `aclocal.m4' and `acconfig.h'), and directories that are independent
|
---|
602 | packages (each with their own `aclocal.m4' and `acconfig.h'). It
|
---|
603 | assumes that they are all part of the same package, if you use
|
---|
604 | `--localdir', or that each directory is a separate package, if you
|
---|
605 | don't use it. This restriction may be removed in the future.
|
---|
606 |
|
---|
607 | *Note Automatic Remaking::, for `Makefile' rules to automatically
|
---|
608 | remake `configure' scripts when their source files change. That method
|
---|
609 | handles the timestamps of configuration header templates properly, but
|
---|
610 | does not pass `--macrodir=DIR' or `--localdir=DIR'.
|
---|
611 |
|
---|
612 | `autoreconf' accepts the following options:
|
---|
613 |
|
---|
614 | `--help'
|
---|
615 | `-h'
|
---|
616 | Print a summary of the command line options and exit.
|
---|
617 |
|
---|
618 | `--force'
|
---|
619 | `-f'
|
---|
620 | Remake even `configure' scripts and configuration headers that are
|
---|
621 | newer than their input files (`configure.in' and, if present,
|
---|
622 | `aclocal.m4').
|
---|
623 |
|
---|
624 | `--localdir=DIR'
|
---|
625 | `-l DIR'
|
---|
626 | Have `autoconf' and `autoheader' look for the package files
|
---|
627 | `aclocal.m4' and (`autoheader' only) `acconfig.h' (but not
|
---|
628 | `FILE.top' and `FILE.bot') in directory DIR instead of in the
|
---|
629 | directory containing each `configure.in'.
|
---|
630 |
|
---|
631 | `--macrodir=DIR'
|
---|
632 | `-m DIR'
|
---|
633 | Look for the Autoconf macro files in directory DIR instead of the
|
---|
634 | default installation directory. You can also set the `AC_MACRODIR'
|
---|
635 | environment variable to a directory; this option overrides the
|
---|
636 | environment variable.
|
---|
637 |
|
---|
638 | `--verbose'
|
---|
639 | Print the name of each directory where `autoreconf' runs
|
---|
640 | `autoconf' (and `autoheader', if appropriate).
|
---|
641 |
|
---|
642 | `--version'
|
---|
643 | Print the version number of Autoconf and exit.
|
---|
644 |
|
---|
645 |
|
---|
646 | File: autoconf.info, Node: Setup, Next: Existing Tests, Prev: Making configure Scripts, Up: Top
|
---|
647 |
|
---|
648 | Initialization and Output Files
|
---|
649 | *******************************
|
---|
650 |
|
---|
651 | Autoconf-generated `configure' scripts need some information about
|
---|
652 | how to initialize, such as how to find the package's source files; and
|
---|
653 | about the output files to produce. The following sections describe
|
---|
654 | initialization and creating output files.
|
---|
655 |
|
---|
656 | * Menu:
|
---|
657 |
|
---|
658 | * Input:: Where Autoconf should find files.
|
---|
659 | * Output:: Creating output files.
|
---|
660 | * Makefile Substitutions:: Using output variables in `Makefile's.
|
---|
661 | * Configuration Headers:: Creating a configuration header file.
|
---|
662 | * Subdirectories:: Configuring independent packages together.
|
---|
663 | * Default Prefix:: Changing the default installation prefix.
|
---|
664 | * Versions:: Version numbers in `configure'.
|
---|
665 |
|
---|
666 |
|
---|
667 | File: autoconf.info, Node: Input, Next: Output, Prev: Setup, Up: Setup
|
---|
668 |
|
---|
669 | Finding `configure' Input
|
---|
670 | =========================
|
---|
671 |
|
---|
672 | Every `configure' script must call `AC_INIT' before doing anything
|
---|
673 | else. The only other required macro is `AC_OUTPUT' (*note Output::.).
|
---|
674 |
|
---|
675 | - Macro: AC_INIT (UNIQUE-FILE-IN-SOURCE-DIR)
|
---|
676 | Process any command-line arguments and find the source code
|
---|
677 | directory. UNIQUE-FILE-IN-SOURCE-DIR is some file that is in the
|
---|
678 | package's source directory; `configure' checks for this file's
|
---|
679 | existence to make sure that the directory that it is told contains
|
---|
680 | the source code in fact does. Occasionally people accidentally
|
---|
681 | specify the wrong directory with `--srcdir'; this is a safety
|
---|
682 | check. *Note Invoking configure::, for more information.
|
---|
683 |
|
---|
684 | Packages that do manual configuration or use the `install' program
|
---|
685 | might need to tell `configure' where to find some other shell scripts
|
---|
686 | by calling `AC_CONFIG_AUX_DIR', though the default places it looks are
|
---|
687 | correct for most cases.
|
---|
688 |
|
---|
689 | - Macro: AC_CONFIG_AUX_DIR(DIR)
|
---|
690 | Use the `install-sh', `config.sub', `config.guess', and Cygnus
|
---|
691 | `configure' scripts that are in directory DIR. These are
|
---|
692 | auxiliary files used in configuration. DIR can be either absolute
|
---|
693 | or relative to `SRCDIR'. The default is `SRCDIR' or `SRCDIR/..' or
|
---|
694 | `SRCDIR/../..', whichever is the first that contains `install-sh'.
|
---|
695 | The other files are not checked for, so that using
|
---|
696 | `AC_PROG_INSTALL' does not automatically require distributing the
|
---|
697 | other auxiliary files. It checks for `install.sh' also, but that
|
---|
698 | name is obsolete because some `make' programs have a rule that
|
---|
699 | creates `install' from it if there is no `Makefile'.
|
---|
700 |
|
---|
701 |
|
---|
702 | File: autoconf.info, Node: Output, Next: Makefile Substitutions, Prev: Input, Up: Setup
|
---|
703 |
|
---|
704 | Creating Output Files
|
---|
705 | =====================
|
---|
706 |
|
---|
707 | Every Autoconf-generated `configure' script must finish by calling
|
---|
708 | `AC_OUTPUT'. It is the macro that creates the `Makefile's and optional
|
---|
709 | other files resulting from configuration. The only other required
|
---|
710 | macro is `AC_INIT' (*note Input::.).
|
---|
711 |
|
---|
712 | - Macro: AC_OUTPUT ([FILE... [, EXTRA-CMDS [, INIT-CMDS]]])
|
---|
713 | Create output files. Call this macro once, at the end of
|
---|
714 | `configure.in'. The FILE... argument is a whitespace-separated
|
---|
715 | list of output files; it may be empty. This macro creates each
|
---|
716 | file `FILE' by copying an input file (by default named `FILE.in'),
|
---|
717 | substituting the output variable values. *Note Makefile
|
---|
718 | Substitutions::, for more information on using output variables.
|
---|
719 | *Note Setting Output Variables::, for more information on creating
|
---|
720 | them. This macro creates the directory that the file is in if it
|
---|
721 | doesn't exist (but not the parents of that directory). Usually,
|
---|
722 | `Makefile's are created this way, but other files, such as
|
---|
723 | `.gdbinit', can be specified as well.
|
---|
724 |
|
---|
725 | If `AC_CONFIG_HEADER', `AC_LINK_FILES', or `AC_CONFIG_SUBDIRS' has
|
---|
726 | been called, this macro also creates the files named as their
|
---|
727 | arguments.
|
---|
728 |
|
---|
729 | A typical call to `AC_OUTPUT' looks like this:
|
---|
730 | AC_OUTPUT(Makefile src/Makefile man/Makefile X/Imakefile)
|
---|
731 |
|
---|
732 | You can override an input file name by appending to FILE a
|
---|
733 | colon-separated list of input files. Examples:
|
---|
734 | AC_OUTPUT(Makefile:templates/top.mk lib/Makefile:templates/lib.mk)
|
---|
735 | AC_OUTPUT(Makefile:templates/vars.mk:Makefile.in:templates/rules.mk)
|
---|
736 | Doing this allows you to keep your file names acceptable to
|
---|
737 | MS-DOS, or to prepend and/or append boilerplate to the file.
|
---|
738 |
|
---|
739 | If you pass EXTRA-CMDS, those commands will be inserted into
|
---|
740 | `config.status' to be run after all its other processing. If
|
---|
741 | INIT-CMDS are given, they are inserted just before EXTRA-CMDS,
|
---|
742 | with shell variable, command, and backslash substitutions
|
---|
743 | performed on them in `configure'. You can use INIT-CMDS to pass
|
---|
744 | variables from `configure' to the EXTRA-CMDS. If
|
---|
745 | `AC_OUTPUT_COMMANDS' has been called, the commands given to it are
|
---|
746 | run just before the commands passed to this macro.
|
---|
747 |
|
---|
748 | - Macro: AC_OUTPUT_COMMANDS (EXTRA-CMDS [, INIT-CMDS])
|
---|
749 | Specify additional shell commands to run at the end of
|
---|
750 | `config.status', and shell commands to initialize any variables
|
---|
751 | from `configure'. This macro may be called multiple times. Here
|
---|
752 | is an unrealistic example:
|
---|
753 |
|
---|
754 | fubar=27
|
---|
755 | AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.], fubar=$fubar)
|
---|
756 | AC_OUTPUT_COMMANDS([echo this is another, extra, bit], [echo init bit])
|
---|
757 |
|
---|
758 | If you run `make' on subdirectories, you should run it using the
|
---|
759 | `make' variable `MAKE'. Most versions of `make' set `MAKE' to the name
|
---|
760 | of the `make' program plus any options it was given. (But many do not
|
---|
761 | include in it the values of any variables set on the command line, so
|
---|
762 | those are not passed on automatically.) Some old versions of `make' do
|
---|
763 | not set this variable. The following macro allows you to use it even
|
---|
764 | with those versions.
|
---|
765 |
|
---|
766 | - Macro: AC_PROG_MAKE_SET
|
---|
767 | If `make' predefines the variable `MAKE', define output variable
|
---|
768 | `SET_MAKE' to be empty. Otherwise, define `SET_MAKE' to contain
|
---|
769 | `MAKE=make'. Calls `AC_SUBST' for `SET_MAKE'.
|
---|
770 |
|
---|
771 | To use this macro, place a line like this in each `Makefile.in' that
|
---|
772 | runs `MAKE' on other directories:
|
---|
773 |
|
---|
774 | @SET_MAKE@
|
---|
775 |
|
---|
776 |
|
---|
777 | File: autoconf.info, Node: Makefile Substitutions, Next: Configuration Headers, Prev: Output, Up: Setup
|
---|
778 |
|
---|
779 | Substitutions in Makefiles
|
---|
780 | ==========================
|
---|
781 |
|
---|
782 | Each subdirectory in a distribution that contains something to be
|
---|
783 | compiled or installed should come with a file `Makefile.in', from which
|
---|
784 | `configure' will create a `Makefile' in that directory. To create a
|
---|
785 | `Makefile', `configure' performs a simple variable substitution,
|
---|
786 | replacing occurrences of `@VARIABLE@' in `Makefile.in' with the value
|
---|
787 | that `configure' has determined for that variable. Variables that are
|
---|
788 | substituted into output files in this way are called "output
|
---|
789 | variables". They are ordinary shell variables that are set in
|
---|
790 | `configure'. To make `configure' substitute a particular variable into
|
---|
791 | the output files, the macro `AC_SUBST' must be called with that
|
---|
792 | variable name as an argument. Any occurrences of `@VARIABLE@' for
|
---|
793 | other variables are left unchanged. *Note Setting Output Variables::,
|
---|
794 | for more information on creating output variables with `AC_SUBST'.
|
---|
795 |
|
---|
796 | A software package that uses a `configure' script should be
|
---|
797 | distributed with a file `Makefile.in', but no `Makefile'; that way, the
|
---|
798 | user has to properly configure the package for the local system before
|
---|
799 | compiling it.
|
---|
800 |
|
---|
801 | *Note Makefile Conventions: (standards)Makefile Conventions, for
|
---|
802 | more information on what to put in `Makefile's.
|
---|
803 |
|
---|
804 | * Menu:
|
---|
805 |
|
---|
806 | * Preset Output Variables:: Output variables that are always set.
|
---|
807 | * Build Directories:: Supporting multiple concurrent compiles.
|
---|
808 | * Automatic Remaking:: Makefile rules for configuring.
|
---|
809 |
|
---|
810 |
|
---|
811 | File: autoconf.info, Node: Preset Output Variables, Next: Build Directories, Prev: Makefile Substitutions, Up: Makefile Substitutions
|
---|
812 |
|
---|
813 | Preset Output Variables
|
---|
814 | -----------------------
|
---|
815 |
|
---|
816 | Some output variables are preset by the Autoconf macros. Some of the
|
---|
817 | Autoconf macros set additional output variables, which are mentioned in
|
---|
818 | the descriptions for those macros. *Note Output Variable Index::, for a
|
---|
819 | complete list of output variables. Here is what each of the preset ones
|
---|
820 | contains. *Note Variables for Installation Directories:
|
---|
821 | (standards)Directory Variables, for more information about the
|
---|
822 | variables with names that end in `dir'.
|
---|
823 |
|
---|
824 | - Variable: bindir
|
---|
825 | The directory for installing executables that users run.
|
---|
826 |
|
---|
827 | - Variable: configure_input
|
---|
828 | A comment saying that the file was generated automatically by
|
---|
829 | `configure' and giving the name of the input file. `AC_OUTPUT'
|
---|
830 | adds a comment line containing this variable to the top of every
|
---|
831 | `Makefile' it creates. For other files, you should reference this
|
---|
832 | variable in a comment at the top of each input file. For example,
|
---|
833 | an input shell script should begin like this:
|
---|
834 |
|
---|
835 | #! /bin/sh
|
---|
836 | # @configure_input@
|
---|
837 |
|
---|
838 | The presence of that line also reminds people editing the file
|
---|
839 | that it needs to be processed by `configure' in order to be used.
|
---|
840 |
|
---|
841 | - Variable: datadir
|
---|
842 | The directory for installing read-only architecture-independent
|
---|
843 | data.
|
---|
844 |
|
---|
845 | - Variable: exec_prefix
|
---|
846 | The installation prefix for architecture-dependent files.
|
---|
847 |
|
---|
848 | - Variable: includedir
|
---|
849 | The directory for installing C header files.
|
---|
850 |
|
---|
851 | - Variable: infodir
|
---|
852 | The directory for installing documentation in Info format.
|
---|
853 |
|
---|
854 | - Variable: libdir
|
---|
855 | The directory for installing object code libraries.
|
---|
856 |
|
---|
857 | - Variable: libexecdir
|
---|
858 | The directory for installing executables that other programs run.
|
---|
859 |
|
---|
860 | - Variable: localstatedir
|
---|
861 | The directory for installing modifiable single-machine data.
|
---|
862 |
|
---|
863 | - Variable: mandir
|
---|
864 | The top-level directory for installing documentation in man format.
|
---|
865 |
|
---|
866 | - Variable: oldincludedir
|
---|
867 | The directory for installing C header files for non-gcc compilers.
|
---|
868 |
|
---|
869 | - Variable: prefix
|
---|
870 | The installation prefix for architecture-independent files.
|
---|
871 |
|
---|
872 | - Variable: sbindir
|
---|
873 | The directory for installing executables that system
|
---|
874 | administrators run.
|
---|
875 |
|
---|
876 | - Variable: sharedstatedir
|
---|
877 | The directory for installing modifiable architecture-independent
|
---|
878 | data.
|
---|
879 |
|
---|
880 | - Variable: srcdir
|
---|
881 | The directory that contains the source code for that `Makefile'.
|
---|
882 |
|
---|
883 | - Variable: sysconfdir
|
---|
884 | The directory for installing read-only single-machine data.
|
---|
885 |
|
---|
886 | - Variable: top_srcdir
|
---|
887 | The top-level source code directory for the package. In the
|
---|
888 | top-level directory, this is the same as `srcdir'.
|
---|
889 |
|
---|
890 | - Variable: CFLAGS
|
---|
891 | Debugging and optimization options for the C compiler. If it is
|
---|
892 | not set in the environment when `configure' runs, the default
|
---|
893 | value is set when you call `AC_PROG_CC' (or empty if you don't).
|
---|
894 | `configure' uses this variable when compiling programs to test for
|
---|
895 | C features.
|
---|
896 |
|
---|
897 | - Variable: CPPFLAGS
|
---|
898 | Header file search directory (`-IDIR') and any other miscellaneous
|
---|
899 | options for the C preprocessor and compiler. If it is not set in
|
---|
900 | the environment when `configure' runs, the default value is empty.
|
---|
901 | `configure' uses this variable when compiling or preprocessing
|
---|
902 | programs to test for C features.
|
---|
903 |
|
---|
904 | - Variable: CXXFLAGS
|
---|
905 | Debugging and optimization options for the C++ compiler. If it is
|
---|
906 | not set in the environment when `configure' runs, the default
|
---|
907 | value is set when you call `AC_PROG_CXX' (or empty if you don't).
|
---|
908 | `configure' uses this variable when compiling programs to test for
|
---|
909 | C++ features.
|
---|
910 |
|
---|
911 | - Variable: FFLAGS
|
---|
912 | Debugging and optimization options for the Fortran 77 compiler.
|
---|
913 | If it is not set in the environment when `configure' runs, the
|
---|
914 | default value is set when you call `AC_PROG_F77' (or empty if you
|
---|
915 | don't). `configure' uses this variable when compiling programs to
|
---|
916 | test for Fortran 77 features.
|
---|
917 |
|
---|
918 | - Variable: DEFS
|
---|
919 | `-D' options to pass to the C compiler. If `AC_CONFIG_HEADER' is
|
---|
920 | called, `configure' replaces `@DEFS@' with `-DHAVE_CONFIG_H'
|
---|
921 | instead (*note Configuration Headers::.). This variable is not
|
---|
922 | defined while `configure' is performing its tests, only when
|
---|
923 | creating the output files. *Note Setting Output Variables::, for
|
---|
924 | how to check the results of previous tests.
|
---|
925 |
|
---|
926 | - Variable: LDFLAGS
|
---|
927 | Stripping (`-s') and any other miscellaneous options for the
|
---|
928 | linker. If it is not set in the environment when `configure' runs,
|
---|
929 | the default value is empty. `configure' uses this variable when
|
---|
930 | linking programs to test for C features.
|
---|
931 |
|
---|
932 | - Variable: LIBS
|
---|
933 | `-l' and `-L' options to pass to the linker.
|
---|
934 |
|
---|
935 |
|
---|
936 | File: autoconf.info, Node: Build Directories, Next: Automatic Remaking, Prev: Preset Output Variables, Up: Makefile Substitutions
|
---|
937 |
|
---|
938 | Build Directories
|
---|
939 | -----------------
|
---|
940 |
|
---|
941 | You can support compiling a software package for several
|
---|
942 | architectures simultaneously from the same copy of the source code.
|
---|
943 | The object files for each architecture are kept in their own directory.
|
---|
944 |
|
---|
945 | To support doing this, `make' uses the `VPATH' variable to find the
|
---|
946 | files that are in the source directory. GNU `make' and most other
|
---|
947 | recent `make' programs can do this. Older `make' programs do not
|
---|
948 | support `VPATH'; when using them, the source code must be in the same
|
---|
949 | directory as the object files.
|
---|
950 |
|
---|
951 | To support `VPATH', each `Makefile.in' should contain two lines that
|
---|
952 | look like:
|
---|
953 |
|
---|
954 | srcdir = @srcdir@
|
---|
955 | VPATH = @srcdir@
|
---|
956 |
|
---|
957 | Do not set `VPATH' to the value of another variable, for example
|
---|
958 | `VPATH = $(srcdir)', because some versions of `make' do not do variable
|
---|
959 | substitutions on the value of `VPATH'.
|
---|
960 |
|
---|
961 | `configure' substitutes in the correct value for `srcdir' when it
|
---|
962 | produces `Makefile'.
|
---|
963 |
|
---|
964 | Do not use the `make' variable `$<', which expands to the pathname
|
---|
965 | of the file in the source directory (found with `VPATH'), except in
|
---|
966 | implicit rules. (An implicit rule is one such as `.c.o', which tells
|
---|
967 | how to create a `.o' file from a `.c' file.) Some versions of `make'
|
---|
968 | do not set `$<' in explicit rules; they expand it to an empty value.
|
---|
969 |
|
---|
970 | Instead, `Makefile' command lines should always refer to source
|
---|
971 | files by prefixing them with `$(srcdir)/'. For example:
|
---|
972 |
|
---|
973 | time.info: time.texinfo
|
---|
974 | $(MAKEINFO) $(srcdir)/time.texinfo
|
---|
975 |
|
---|
976 |
|
---|
977 | File: autoconf.info, Node: Automatic Remaking, Prev: Build Directories, Up: Makefile Substitutions
|
---|
978 |
|
---|
979 | Automatic Remaking
|
---|
980 | ------------------
|
---|
981 |
|
---|
982 | You can put rules like the following in the top-level `Makefile.in'
|
---|
983 | for a package to automatically update the configuration information when
|
---|
984 | you change the configuration files. This example includes all of the
|
---|
985 | optional files, such as `aclocal.m4' and those related to configuration
|
---|
986 | header files. Omit from the `Makefile.in' rules any of these files
|
---|
987 | that your package does not use.
|
---|
988 |
|
---|
989 | The `${srcdir}/' prefix is included because of limitations in the
|
---|
990 | `VPATH' mechanism.
|
---|
991 |
|
---|
992 | The `stamp-' files are necessary because the timestamps of
|
---|
993 | `config.h.in' and `config.h' will not be changed if remaking them does
|
---|
994 | not change their contents. This feature avoids unnecessary
|
---|
995 | recompilation. You should include the file `stamp-h.in' your package's
|
---|
996 | distribution, so `make' will consider `config.h.in' up to date. On
|
---|
997 | some old BSD systems, `touch' or any command that results in an empty
|
---|
998 | file does not update the timestamps, so use a command like `echo' as a
|
---|
999 | workaround.
|
---|
1000 |
|
---|
1001 | ${srcdir}/configure: configure.in aclocal.m4
|
---|
1002 | cd ${srcdir} && autoconf
|
---|
1003 |
|
---|
1004 | # autoheader might not change config.h.in, so touch a stamp file.
|
---|
1005 | ${srcdir}/config.h.in: stamp-h.in
|
---|
1006 | ${srcdir}/stamp-h.in: configure.in aclocal.m4 acconfig.h \
|
---|
1007 | config.h.top config.h.bot
|
---|
1008 | cd ${srcdir} && autoheader
|
---|
1009 | echo timestamp > ${srcdir}/stamp-h.in
|
---|
1010 |
|
---|
1011 | config.h: stamp-h
|
---|
1012 | stamp-h: config.h.in config.status
|
---|
1013 | ./config.status
|
---|
1014 |
|
---|
1015 | Makefile: Makefile.in config.status
|
---|
1016 | ./config.status
|
---|
1017 |
|
---|
1018 | config.status: configure
|
---|
1019 | ./config.status --recheck
|
---|
1020 |
|
---|
1021 | In addition, you should pass `echo timestamp > stamp-h' in the
|
---|
1022 | EXTRA-CMDS argument to `AC_OUTPUT', so `config.status' will ensure that
|
---|
1023 | `config.h' is considered up to date. *Note Output::, for more
|
---|
1024 | information about `AC_OUTPUT'.
|
---|
1025 |
|
---|
1026 | *Note Invoking config.status::, for more examples of handling
|
---|
1027 | configuration-related dependencies.
|
---|
1028 |
|
---|
1029 |
|
---|
1030 | File: autoconf.info, Node: Configuration Headers, Next: Subdirectories, Prev: Makefile Substitutions, Up: Setup
|
---|
1031 |
|
---|
1032 | Configuration Header Files
|
---|
1033 | ==========================
|
---|
1034 |
|
---|
1035 | When a package tests more than a few C preprocessor symbols, the
|
---|
1036 | command lines to pass `-D' options to the compiler can get quite long.
|
---|
1037 | This causes two problems. One is that the `make' output is hard to
|
---|
1038 | visually scan for errors. More seriously, the command lines can exceed
|
---|
1039 | the length limits of some operating systems. As an alternative to
|
---|
1040 | passing `-D' options to the compiler, `configure' scripts can create a
|
---|
1041 | C header file containing `#define' directives. The `AC_CONFIG_HEADER'
|
---|
1042 | macro selects this kind of output. It should be called right after
|
---|
1043 | `AC_INIT'.
|
---|
1044 |
|
---|
1045 | The package should `#include' the configuration header file before
|
---|
1046 | any other header files, to prevent inconsistencies in declarations (for
|
---|
1047 | example, if it redefines `const'). Use `#include <config.h>' instead
|
---|
1048 | of `#include "config.h"', and pass the C compiler a `-I.' option (or
|
---|
1049 | `-I..'; whichever directory contains `config.h'). That way, even if
|
---|
1050 | the source directory is configured itself (perhaps to make a
|
---|
1051 | distribution), other build directories can also be configured without
|
---|
1052 | finding the `config.h' from the source directory.
|
---|
1053 |
|
---|
1054 | - Macro: AC_CONFIG_HEADER (HEADER-TO-CREATE ...)
|
---|
1055 | Make `AC_OUTPUT' create the file(s) in the whitespace-separated
|
---|
1056 | list HEADER-TO-CREATE containing C preprocessor `#define'
|
---|
1057 | statements, and replace `@DEFS@' in generated files with
|
---|
1058 | `-DHAVE_CONFIG_H' instead of the value of `DEFS'. The usual name
|
---|
1059 | for HEADER-TO-CREATE is `config.h'.
|
---|
1060 |
|
---|
1061 | If HEADER-TO-CREATE already exists and its contents are identical
|
---|
1062 | to what `AC_OUTPUT' would put in it, it is left alone. Doing this
|
---|
1063 | allows some changes in configuration without needlessly causing
|
---|
1064 | object files that depend on the header file to be recompiled.
|
---|
1065 |
|
---|
1066 | Usually the input file is named `HEADER-TO-CREATE.in'; however,
|
---|
1067 | you can override the input file name by appending to
|
---|
1068 | HEADER-TO-CREATE, a colon-separated list of input files. Examples:
|
---|
1069 | AC_CONFIG_HEADER(defines.h:defines.hin)
|
---|
1070 | AC_CONFIG_HEADER(defines.h:defs.pre:defines.h.in:defs.post)
|
---|
1071 |
|
---|
1072 | Doing this allows you to keep your file names acceptable to
|
---|
1073 | MS-DOS, or to prepend and/or append boilerplate to the file.
|
---|
1074 |
|
---|
1075 | * Menu:
|
---|
1076 |
|
---|
1077 | * Header Templates:: Input for the configuration headers.
|
---|
1078 | * Invoking autoheader:: How to create configuration templates.
|
---|
1079 |
|
---|
1080 |
|
---|
1081 | File: autoconf.info, Node: Header Templates, Next: Invoking autoheader, Prev: Configuration Headers, Up: Configuration Headers
|
---|
1082 |
|
---|
1083 | Configuration Header Templates
|
---|
1084 | ------------------------------
|
---|
1085 |
|
---|
1086 | Your distribution should contain a template file that looks as you
|
---|
1087 | want the final header file to look, including comments, with default
|
---|
1088 | values in the `#define' statements. For example, suppose your
|
---|
1089 | `configure.in' makes these calls:
|
---|
1090 |
|
---|
1091 | AC_CONFIG_HEADER(conf.h)
|
---|
1092 | AC_CHECK_HEADERS(unistd.h)
|
---|
1093 |
|
---|
1094 | Then you could have code like the following in `conf.h.in'. On systems
|
---|
1095 | that have `unistd.h', `configure' will change the 0 to a 1. On other
|
---|
1096 | systems, it will leave the line unchanged.
|
---|
1097 |
|
---|
1098 | /* Define as 1 if you have unistd.h. */
|
---|
1099 | #define HAVE_UNISTD_H 0
|
---|
1100 |
|
---|
1101 | Alternately, if your code tests for configuration options using
|
---|
1102 | `#ifdef' instead of `#if', a default value can be to `#undef' the
|
---|
1103 | variable instead of to define it to a value. On systems that have
|
---|
1104 | `unistd.h', `configure' will change the second line to read `#define
|
---|
1105 | HAVE_UNISTD_H 1'. On other systems, it will comment that line out (in
|
---|
1106 | case the system predefines that symbol).
|
---|
1107 |
|
---|
1108 | /* Define if you have unistd.h. */
|
---|
1109 | #undef HAVE_UNISTD_H
|
---|
1110 |
|
---|
1111 |
|
---|
1112 | File: autoconf.info, Node: Invoking autoheader, Prev: Header Templates, Up: Configuration Headers
|
---|
1113 |
|
---|
1114 | Using `autoheader' to Create `config.h.in'
|
---|
1115 | ------------------------------------------
|
---|
1116 |
|
---|
1117 | The `autoheader' program can create a template file of C `#define'
|
---|
1118 | statements for `configure' to use. If `configure.in' invokes
|
---|
1119 | `AC_CONFIG_HEADER(FILE)', `autoheader' creates `FILE.in'; if multiple
|
---|
1120 | file arguments are given, the first one is used. Otherwise,
|
---|
1121 | `autoheader' creates `config.h.in'.
|
---|
1122 |
|
---|
1123 | If you give `autoheader' an argument, it uses that file instead of
|
---|
1124 | `configure.in' and writes the header file to the standard output
|
---|
1125 | instead of to `config.h.in'. If you give `autoheader' an argument of
|
---|
1126 | `-', it reads the standard input instead of `configure.in' and writes
|
---|
1127 | the header file to the standard output.
|
---|
1128 |
|
---|
1129 | `autoheader' scans `configure.in' and figures out which C
|
---|
1130 | preprocessor symbols it might define. It copies comments and `#define'
|
---|
1131 | and `#undef' statements from a file called `acconfig.h', which comes
|
---|
1132 | with and is installed with Autoconf. It also uses a file called
|
---|
1133 | `acconfig.h' in the current directory, if present. If you `AC_DEFINE'
|
---|
1134 | any additional symbols, you must create that file with entries for
|
---|
1135 | them. For symbols defined by `AC_CHECK_HEADERS', `AC_CHECK_FUNCS',
|
---|
1136 | `AC_CHECK_SIZEOF', or `AC_CHECK_LIB', `autoheader' generates comments
|
---|
1137 | and `#undef' statements itself rather than copying them from a file,
|
---|
1138 | since the possible symbols are effectively limitless.
|
---|
1139 |
|
---|
1140 | The file that `autoheader' creates contains mainly `#define' and
|
---|
1141 | `#undef' statements and their accompanying comments. If `./acconfig.h'
|
---|
1142 | contains the string `@TOP@', `autoheader' copies the lines before the
|
---|
1143 | line containing `@TOP@' into the top of the file that it generates.
|
---|
1144 | Similarly, if `./acconfig.h' contains the string `@BOTTOM@',
|
---|
1145 | `autoheader' copies the lines after that line to the end of the file it
|
---|
1146 | generates. Either or both of those strings may be omitted.
|
---|
1147 |
|
---|
1148 | An alternate way to produce the same effect is to create the files
|
---|
1149 | `FILE.top' (typically `config.h.top') and/or `FILE.bot' in the current
|
---|
1150 | directory. If they exist, `autoheader' copies them to the beginning
|
---|
1151 | and end, respectively, of its output. Their use is discouraged because
|
---|
1152 | they have file names that contain two periods, and so can not be stored
|
---|
1153 | on MS-DOS; also, they are two more files to clutter up the directory.
|
---|
1154 | But if you use the `--localdir=DIR' option to use an `acconfig.h' in
|
---|
1155 | another directory, they give you a way to put custom boilerplate in each
|
---|
1156 | individual `config.h.in'.
|
---|
1157 |
|
---|
1158 | `autoheader' accepts the following options:
|
---|
1159 |
|
---|
1160 | `--help'
|
---|
1161 | `-h'
|
---|
1162 | Print a summary of the command line options and exit.
|
---|
1163 |
|
---|
1164 | `--localdir=DIR'
|
---|
1165 | `-l DIR'
|
---|
1166 | Look for the package files `aclocal.m4' and `acconfig.h' (but not
|
---|
1167 | `FILE.top' and `FILE.bot') in directory DIR instead of in the
|
---|
1168 | current directory.
|
---|
1169 |
|
---|
1170 | `--macrodir=DIR'
|
---|
1171 | `-m DIR'
|
---|
1172 | Look for the installed macro files and `acconfig.h' in directory
|
---|
1173 | DIR. You can also set the `AC_MACRODIR' environment variable to a
|
---|
1174 | directory; this option overrides the environment variable.
|
---|
1175 |
|
---|
1176 | `--version'
|
---|
1177 | Print the version number of Autoconf and exit.
|
---|
1178 |
|
---|
1179 |
|
---|
1180 | File: autoconf.info, Node: Subdirectories, Next: Default Prefix, Prev: Configuration Headers, Up: Setup
|
---|
1181 |
|
---|
1182 | Configuring Other Packages in Subdirectories
|
---|
1183 | ============================================
|
---|
1184 |
|
---|
1185 | In most situations, calling `AC_OUTPUT' is sufficient to produce
|
---|
1186 | `Makefile's in subdirectories. However, `configure' scripts that
|
---|
1187 | control more than one independent package can use `AC_CONFIG_SUBDIRS'
|
---|
1188 | to run `configure' scripts for other packages in subdirectories.
|
---|
1189 |
|
---|
1190 | - Macro: AC_CONFIG_SUBDIRS (DIR ...)
|
---|
1191 | Make `AC_OUTPUT' run `configure' in each subdirectory DIR in the
|
---|
1192 | given whitespace-separated list. If a given DIR is not found, no
|
---|
1193 | error is reported, so a `configure' script can configure whichever
|
---|
1194 | parts of a large source tree are present. If a given DIR contains
|
---|
1195 | `configure.in' but no `configure', the Cygnus `configure' script
|
---|
1196 | found by `AC_CONFIG_AUXDIR' is used.
|
---|
1197 |
|
---|
1198 | The subdirectory `configure' scripts are given the same command
|
---|
1199 | line options that were given to this `configure' script, with
|
---|
1200 | minor changes if needed (e.g., to adjust a relative path for the
|
---|
1201 | cache file or source directory). This macro also sets the output
|
---|
1202 | variable `subdirs' to the list of directories `DIR ...'.
|
---|
1203 | `Makefile' rules can use this variable to determine which
|
---|
1204 | subdirectories to recurse into. This macro may be called multiple
|
---|
1205 | times.
|
---|
1206 |
|
---|
1207 |
|
---|
1208 | File: autoconf.info, Node: Default Prefix, Next: Versions, Prev: Subdirectories, Up: Setup
|
---|
1209 |
|
---|
1210 | Default Prefix
|
---|
1211 | ==============
|
---|
1212 |
|
---|
1213 | By default, `configure' sets the prefix for files it installs to
|
---|
1214 | `/usr/local'. The user of `configure' can select a different prefix
|
---|
1215 | using the `--prefix' and `--exec-prefix' options. There are two ways
|
---|
1216 | to change the default: when creating `configure', and when running it.
|
---|
1217 |
|
---|
1218 | Some software packages might want to install in a directory besides
|
---|
1219 | `/usr/local' by default. To accomplish that, use the
|
---|
1220 | `AC_PREFIX_DEFAULT' macro.
|
---|
1221 |
|
---|
1222 | - Macro: AC_PREFIX_DEFAULT (PREFIX)
|
---|
1223 | Set the default installation prefix to PREFIX instead of
|
---|
1224 | `/usr/local'.
|
---|
1225 |
|
---|
1226 | It may be convenient for users to have `configure' guess the
|
---|
1227 | installation prefix from the location of a related program that they
|
---|
1228 | have already installed. If you wish to do that, you can call
|
---|
1229 | `AC_PREFIX_PROGRAM'.
|
---|
1230 |
|
---|
1231 | - Macro: AC_PREFIX_PROGRAM (PROGRAM)
|
---|
1232 | If the user did not specify an installation prefix (using the
|
---|
1233 | `--prefix' option), guess a value for it by looking for PROGRAM in
|
---|
1234 | `PATH', the way the shell does. If PROGRAM is found, set the
|
---|
1235 | prefix to the parent of the directory containing PROGRAM;
|
---|
1236 | otherwise leave the prefix specified in `Makefile.in' unchanged.
|
---|
1237 | For example, if PROGRAM is `gcc' and the `PATH' contains
|
---|
1238 | `/usr/local/gnu/bin/gcc', set the prefix to `/usr/local/gnu'.
|
---|
1239 |
|
---|
1240 |
|
---|
1241 | File: autoconf.info, Node: Versions, Prev: Default Prefix, Up: Setup
|
---|
1242 |
|
---|
1243 | Version Numbers in `configure'
|
---|
1244 | ==============================
|
---|
1245 |
|
---|
1246 | The following macros manage version numbers for `configure' scripts.
|
---|
1247 | Using them is optional.
|
---|
1248 |
|
---|
1249 | - Macro: AC_PREREQ (VERSION)
|
---|
1250 | Ensure that a recent enough version of Autoconf is being used. If
|
---|
1251 | the version of Autoconf being used to create `configure' is earlier
|
---|
1252 | than VERSION, print an error message on the standard error output
|
---|
1253 | and do not create `configure'. For example:
|
---|
1254 |
|
---|
1255 | AC_PREREQ(1.8)
|
---|
1256 |
|
---|
1257 | This macro is useful if your `configure.in' relies on non-obvious
|
---|
1258 | behavior that changed between Autoconf releases. If it merely
|
---|
1259 | needs recently added macros, then `AC_PREREQ' is less useful,
|
---|
1260 | because the `autoconf' program already tells the user which macros
|
---|
1261 | are not found. The same thing happens if `configure.in' is
|
---|
1262 | processed by a version of Autoconf older than when `AC_PREREQ' was
|
---|
1263 | added.
|
---|
1264 |
|
---|
1265 | - Macro: AC_REVISION (REVISION-INFO)
|
---|
1266 | Copy revision stamp REVISION-INFO into the `configure' script,
|
---|
1267 | with any dollar signs or double-quotes removed. This macro lets
|
---|
1268 | you put a revision stamp from `configure.in' into `configure'
|
---|
1269 | without RCS or CVS changing it when you check in `configure'. That
|
---|
1270 | way, you can determine easily which revision of `configure.in' a
|
---|
1271 | particular `configure' corresponds to.
|
---|
1272 |
|
---|
1273 | It is a good idea to call this macro before `AC_INIT' so that the
|
---|
1274 | revision number is near the top of both `configure.in' and
|
---|
1275 | `configure'. To support doing that, the `AC_REVISION' output
|
---|
1276 | begins with `#! /bin/sh', like the normal start of a `configure'
|
---|
1277 | script does.
|
---|
1278 |
|
---|
1279 | For example, this line in `configure.in':
|
---|
1280 |
|
---|
1281 | AC_REVISION($Revision: 1.30 $)dnl
|
---|
1282 |
|
---|
1283 | produces this in `configure':
|
---|
1284 |
|
---|
1285 | #! /bin/sh
|
---|
1286 | # From configure.in Revision: 1.30
|
---|
1287 |
|
---|
1288 |
|
---|
1289 | File: autoconf.info, Node: Existing Tests, Next: Writing Tests, Prev: Setup, Up: Top
|
---|
1290 |
|
---|
1291 | Existing Tests
|
---|
1292 | **************
|
---|
1293 |
|
---|
1294 | These macros test for particular system features that packages might
|
---|
1295 | need or want to use. If you need to test for a kind of feature that
|
---|
1296 | none of these macros check for, you can probably do it by calling
|
---|
1297 | primitive test macros with appropriate arguments (*note Writing
|
---|
1298 | Tests::.).
|
---|
1299 |
|
---|
1300 | These tests print messages telling the user which feature they're
|
---|
1301 | checking for, and what they find. They cache their results for future
|
---|
1302 | `configure' runs (*note Caching Results::.).
|
---|
1303 |
|
---|
1304 | Some of these macros set output variables. *Note Makefile
|
---|
1305 | Substitutions::, for how to get their values. The phrase "define NAME"
|
---|
1306 | is used below as a shorthand to mean "define C preprocessor symbol NAME
|
---|
1307 | to the value 1". *Note Defining Symbols::, for how to get those symbol
|
---|
1308 | definitions into your program.
|
---|
1309 |
|
---|
1310 | * Menu:
|
---|
1311 |
|
---|
1312 | * Alternative Programs:: Selecting between alternative programs.
|
---|
1313 | * Libraries:: Library archives that might be missing.
|
---|
1314 | * Library Functions:: C library functions that might be missing.
|
---|
1315 | * Header Files:: Header files that might be missing.
|
---|
1316 | * Structures:: Structures or members that might be missing.
|
---|
1317 | * Typedefs:: `typedef's that might be missing.
|
---|
1318 | * C Compiler Characteristics::
|
---|
1319 | * Fortran 77 Compiler Characteristics::
|
---|
1320 | * System Services:: Operating system services.
|
---|
1321 | * UNIX Variants:: Special kludges for specific UNIX variants.
|
---|
1322 |
|
---|
1323 |
|
---|
1324 | File: autoconf.info, Node: Alternative Programs, Next: Libraries, Prev: Existing Tests, Up: Existing Tests
|
---|
1325 |
|
---|
1326 | Alternative Programs
|
---|
1327 | ====================
|
---|
1328 |
|
---|
1329 | These macros check for the presence or behavior of particular
|
---|
1330 | programs. They are used to choose between several alternative programs
|
---|
1331 | and to decide what to do once one has been chosen. If there is no
|
---|
1332 | macro specifically defined to check for a program you need, and you
|
---|
1333 | don't need to check for any special properties of it, then you can use
|
---|
1334 | one of the general program check macros.
|
---|
1335 |
|
---|
1336 | * Menu:
|
---|
1337 |
|
---|
1338 | * Particular Programs:: Special handling to find certain programs.
|
---|
1339 | * Generic Programs:: How to find other programs.
|
---|
1340 |
|
---|
1341 |
|
---|
1342 | File: autoconf.info, Node: Particular Programs, Next: Generic Programs, Prev: Alternative Programs, Up: Alternative Programs
|
---|
1343 |
|
---|
1344 | Particular Program Checks
|
---|
1345 | -------------------------
|
---|
1346 |
|
---|
1347 | These macros check for particular programs--whether they exist, and
|
---|
1348 | in some cases whether they support certain features.
|
---|
1349 |
|
---|
1350 | - Macro: AC_DECL_YYTEXT
|
---|
1351 | Define `YYTEXT_POINTER' if `yytext' is a `char *' instead of a
|
---|
1352 | `char []'. Also set output variable `LEX_OUTPUT_ROOT' to the base
|
---|
1353 | of the file name that the lexer generates; usually `lex.yy', but
|
---|
1354 | sometimes something else. These results vary according to whether
|
---|
1355 | `lex' or `flex' is being used.
|
---|
1356 |
|
---|
1357 | - Macro: AC_PROG_AWK
|
---|
1358 | Check for `mawk', `gawk', `nawk', and `awk', in that order, and
|
---|
1359 | set output variable `AWK' to the first one that it finds. It
|
---|
1360 | tries `mawk' first because that is reported to be the fastest
|
---|
1361 | implementation.
|
---|
1362 |
|
---|
1363 | - Macro: AC_PROG_CC
|
---|
1364 | Determine a C compiler to use. If `CC' is not already set in the
|
---|
1365 | environment, check for `gcc', and use `cc' if that's not found.
|
---|
1366 | Set output variable `CC' to the name of the compiler found.
|
---|
1367 |
|
---|
1368 | If using the GNU C compiler, set shell variable `GCC' to `yes',
|
---|
1369 | empty otherwise. If output variable `CFLAGS' was not already set,
|
---|
1370 | set it to `-g -O2' for the GNU C compiler (`-O2' on systems where
|
---|
1371 | GCC does not accept `-g'), or `-g' for other compilers.
|
---|
1372 |
|
---|
1373 | If the C compiler being used does not produce executables that can
|
---|
1374 | run on the system where `configure' is being run, set the shell
|
---|
1375 | variable `cross_compiling' to `yes', otherwise `no'. In other
|
---|
1376 | words, this tests whether the build system type is different from
|
---|
1377 | the host system type (the target system type is irrelevant to this
|
---|
1378 | test). *Note Manual Configuration::, for more on support for
|
---|
1379 | cross compiling.
|
---|
1380 |
|
---|
1381 | - Macro: AC_PROG_CC_C_O
|
---|
1382 | If the C compiler does not accept the `-c' and `-o' options
|
---|
1383 | simultaneously, define `NO_MINUS_C_MINUS_O'.
|
---|
1384 |
|
---|
1385 | - Macro: AC_PROG_CPP
|
---|
1386 | Set output variable `CPP' to a command that runs the C
|
---|
1387 | preprocessor. If `$CC -E' doesn't work, it uses `/lib/cpp'. It
|
---|
1388 | is only portable to run `CPP' on files with a `.c' extension.
|
---|
1389 |
|
---|
1390 | If the current language is C (*note Language Choice::.), many of
|
---|
1391 | the specific test macros use the value of `CPP' indirectly by
|
---|
1392 | calling `AC_TRY_CPP', `AC_CHECK_HEADER', `AC_EGREP_HEADER', or
|
---|
1393 | `AC_EGREP_CPP'.
|
---|
1394 |
|
---|
1395 | - Macro: AC_PROG_CXX
|
---|
1396 | Determine a C++ compiler to use. Check if the environment variable
|
---|
1397 | `CXX' or `CCC' (in that order) is set; if so, set output variable
|
---|
1398 | `CXX' to its value. Otherwise search for a C++ compiler under
|
---|
1399 | likely names (`c++', `g++', `gcc', `CC', `cxx', and `cc++'). If
|
---|
1400 | none of those checks succeed, as a last resort set `CXX' to `gcc'.
|
---|
1401 |
|
---|
1402 | If using the GNU C++ compiler, set shell variable `GXX' to `yes',
|
---|
1403 | empty otherwise. If output variable `CXXFLAGS' was not already
|
---|
1404 | set, set it to `-g -O2' for the GNU C++ compiler (`-O2' on systems
|
---|
1405 | where G++ does not accept `-g'), or `-g' for other compilers.
|
---|
1406 |
|
---|
1407 | If the C++ compiler being used does not produce executables that
|
---|
1408 | can run on the system where `configure' is being run, set the shell
|
---|
1409 | variable `cross_compiling' to `yes', otherwise `no'. In other
|
---|
1410 | words, this tests whether the build system type is different from
|
---|
1411 | the host system type (the target system type is irrelevant to this
|
---|
1412 | test). *Note Manual Configuration::, for more on support for
|
---|
1413 | cross compiling.
|
---|
1414 |
|
---|
1415 | - Macro: AC_PROG_CXXCPP
|
---|
1416 | Set output variable `CXXCPP' to a command that runs the C++
|
---|
1417 | preprocessor. If `$CXX -E' doesn't work, it uses `/lib/cpp'. It
|
---|
1418 | is only portable to run `CXXCPP' on files with a `.c', `.C', or
|
---|
1419 | `.cc' extension.
|
---|
1420 |
|
---|
1421 | If the current language is C++ (*note Language Choice::.), many of
|
---|
1422 | the specific test macros use the value of `CXXCPP' indirectly by
|
---|
1423 | calling `AC_TRY_CPP', `AC_CHECK_HEADER', `AC_EGREP_HEADER', or
|
---|
1424 | `AC_EGREP_CPP'.
|
---|
1425 |
|
---|
1426 | - Macro: AC_PROG_F77
|
---|
1427 | Determine a Fortran 77 compiler to use. If `F77' is not already
|
---|
1428 | set in the environment, check for `g77', `f77' and `f2c', in that
|
---|
1429 | order. Set the output variable `F77' to the name of the compiler
|
---|
1430 | found.
|
---|
1431 |
|
---|
1432 | If using `g77' (the GNU Fortran 77 compiler), then `AC_PROG_F77'
|
---|
1433 | will set the shell variable `G77' to `yes', and empty otherwise.
|
---|
1434 | If the output variable `FFLAGS' was not already set in the
|
---|
1435 | environment, then set it to `-g -02' for `g77' (or `-O2' where
|
---|
1436 | `g77' does not accept `-g'). Otherwise, set `FFLAGS' to `-g' for
|
---|
1437 | all other Fortran 77 compilers.
|
---|
1438 |
|
---|
1439 | - Macro: AC_PROG_F77_C_O
|
---|
1440 | Test if the Fortran 77 compiler accepts the options `-c' and `-o'
|
---|
1441 | simultaneously, and define `F77_NO_MINUS_C_MINUS_O' if it does not.
|
---|
1442 |
|
---|
1443 | - Macro: AC_PROG_GCC_TRADITIONAL
|
---|
1444 | Add `-traditional' to output variable `CC' if using the GNU C
|
---|
1445 | compiler and `ioctl' does not work properly without
|
---|
1446 | `-traditional'. That usually happens when the fixed header files
|
---|
1447 | have not been installed on an old system. Since recent versions
|
---|
1448 | of the GNU C compiler fix the header files automatically when
|
---|
1449 | installed, this is becoming a less prevalent problem.
|
---|
1450 |
|
---|
1451 | - Macro: AC_PROG_INSTALL
|
---|
1452 | Set output variable `INSTALL' to the path of a BSD compatible
|
---|
1453 | `install' program, if one is found in the current `PATH'.
|
---|
1454 | Otherwise, set `INSTALL' to `DIR/install-sh -c', checking the
|
---|
1455 | directories specified to `AC_CONFIG_AUX_DIR' (or its default
|
---|
1456 | directories) to determine DIR (*note Output::.). Also set the
|
---|
1457 | variables `INSTALL_PROGRAM' and `INSTALL_SCRIPT' to `${INSTALL}'
|
---|
1458 | and `INSTALL_DATA' to `${INSTALL} -m 644'.
|
---|
1459 |
|
---|
1460 | This macro screens out various instances of `install' known to not
|
---|
1461 | work. It prefers to find a C program rather than a shell script,
|
---|
1462 | for speed. Instead of `install-sh', it can also use `install.sh',
|
---|
1463 | but that name is obsolete because some `make' programs have a rule
|
---|
1464 | that creates `install' from it if there is no `Makefile'.
|
---|
1465 |
|
---|
1466 | A copy of `install-sh' which you may use comes with Autoconf. If
|
---|
1467 | you use `AC_PROG_INSTALL', you must include either `install-sh' or
|
---|
1468 | `install.sh' in your distribution, or `configure' will produce an
|
---|
1469 | error message saying it can't find them--even if the system you're
|
---|
1470 | on has a good `install' program. This check is a safety measure
|
---|
1471 | to prevent you from accidentally leaving that file out, which
|
---|
1472 | would prevent your package from installing on systems that don't
|
---|
1473 | have a BSD-compatible `install' program.
|
---|
1474 |
|
---|
1475 | If you need to use your own installation program because it has
|
---|
1476 | features not found in standard `install' programs, there is no
|
---|
1477 | reason to use `AC_PROG_INSTALL'; just put the pathname of your
|
---|
1478 | program into your `Makefile.in' files.
|
---|
1479 |
|
---|
1480 | - Macro: AC_PROG_LEX
|
---|
1481 | If `flex' is found, set output variable `LEX' to `flex' and
|
---|
1482 | `LEXLIB' to `-lfl', if that library is in a standard place.
|
---|
1483 | Otherwise set `LEX' to `lex' and `LEXLIB' to `-ll'.
|
---|
1484 |
|
---|
1485 | - Macro: AC_PROG_LN_S
|
---|
1486 | If `ln -s' works on the current filesystem (the operating system
|
---|
1487 | and filesystem support symbolic links), set output variable `LN_S'
|
---|
1488 | to `ln -s', otherwise set it to `ln'.
|
---|
1489 |
|
---|
1490 | If the link is put in a directory other than the current
|
---|
1491 | directory, its meaning depends on whether `ln' or `ln -s' is used.
|
---|
1492 | To safely create links using `$(LN_S)', either find out which
|
---|
1493 | form is used and adjust the arguments, or always invoke `ln' in
|
---|
1494 | the directory where the link is to be created.
|
---|
1495 |
|
---|
1496 | In other words, it does not work to do
|
---|
1497 | $(LN_S) foo /x/bar
|
---|
1498 |
|
---|
1499 | Instead, do
|
---|
1500 |
|
---|
1501 | (cd /x && $(LN_S) foo bar)
|
---|
1502 |
|
---|
1503 | - Macro: AC_PROG_RANLIB
|
---|
1504 | Set output variable `RANLIB' to `ranlib' if `ranlib' is found,
|
---|
1505 | otherwise to `:' (do nothing).
|
---|
1506 |
|
---|
1507 | - Macro: AC_PROG_YACC
|
---|
1508 | If `bison' is found, set output variable `YACC' to `bison -y'.
|
---|
1509 | Otherwise, if `byacc' is found, set `YACC' to `byacc'. Otherwise
|
---|
1510 | set `YACC' to `yacc'.
|
---|
1511 |
|
---|
1512 |
|
---|
1513 | File: autoconf.info, Node: Generic Programs, Prev: Particular Programs, Up: Alternative Programs
|
---|
1514 |
|
---|
1515 | Generic Program and File Checks
|
---|
1516 | -------------------------------
|
---|
1517 |
|
---|
1518 | These macros are used to find programs not covered by the particular
|
---|
1519 | test macros. If you need to check the behavior of a program as well as
|
---|
1520 | find out whether it is present, you have to write your own test for it
|
---|
1521 | (*note Writing Tests::.). By default, these macros use the environment
|
---|
1522 | variable `PATH'. If you need to check for a program that might not be
|
---|
1523 | in the user's `PATH', you can pass a modified path to use instead, like
|
---|
1524 | this:
|
---|
1525 |
|
---|
1526 | AC_PATH_PROG(INETD, inetd, /usr/libexec/inetd,
|
---|
1527 | $PATH:/usr/libexec:/usr/sbin:/usr/etc:etc)
|
---|
1528 |
|
---|
1529 | - Macro: AC_CHECK_FILE (FILE [, ACTION-IF-FOUND [,
|
---|
1530 | ACTION-IF-NOT-FOUND]])
|
---|
1531 | Check whether file FILE exists on the native system. If it is
|
---|
1532 | found, execute ACTION-IF-FOUND, otherwise do ACTION-IF-NOT-FOUND,
|
---|
1533 | if given.
|
---|
1534 |
|
---|
1535 | - Macro: AC_CHECK_FILES (FILES[, ACTION-IF-FOUND [,
|
---|
1536 | ACTION-IF-NOT-FOUND]])
|
---|
1537 | Executes `AC_CHECK_FILE' once for each file listed in FILES.
|
---|
1538 | Additionally, defines `HAVEFILE' for each file found, set to 1.
|
---|
1539 |
|
---|
1540 | - Macro: AC_CHECK_PROG (VARIABLE, PROG-TO-CHECK-FOR, VALUE-IF-FOUND [,
|
---|
1541 | VALUE-IF-NOT-FOUND [, PATH, [ REJECT ]]])
|
---|
1542 | Check whether program PROG-TO-CHECK-FOR exists in `PATH'. If it
|
---|
1543 | is found, set VARIABLE to VALUE-IF-FOUND, otherwise to
|
---|
1544 | VALUE-IF-NOT-FOUND, if given. Always pass over REJECT (an
|
---|
1545 | absolute file name) even if it is the first found in the search
|
---|
1546 | path; in that case, set VARIABLE using the absolute file name of
|
---|
1547 | the PROG-TO-CHECK-FOR found that is not REJECT. If VARIABLE was
|
---|
1548 | already set, do nothing. Calls `AC_SUBST' for VARIABLE.
|
---|
1549 |
|
---|
1550 | - Macro: AC_CHECK_PROGS (VARIABLE, PROGS-TO-CHECK-FOR [,
|
---|
1551 | VALUE-IF-NOT-FOUND [, PATH]])
|
---|
1552 | Check for each program in the whitespace-separated list
|
---|
1553 | PROGS-TO-CHECK-FOR exists in `PATH'. If it is found, set VARIABLE
|
---|
1554 | to the name of that program. Otherwise, continue checking the
|
---|
1555 | next program in the list. If none of the programs in the list are
|
---|
1556 | found, set VARIABLE to VALUE-IF-NOT-FOUND; if VALUE-IF-NOT-FOUND
|
---|
1557 | is not specified, the value of VARIABLE is not changed. Calls
|
---|
1558 | `AC_SUBST' for VARIABLE.
|
---|
1559 |
|
---|
1560 | - Macro: AC_CHECK_TOOL (VARIABLE, PROG-TO-CHECK-FOR [,
|
---|
1561 | VALUE-IF-NOT-FOUND [, PATH]])
|
---|
1562 | Like `AC_CHECK_PROG', but first looks for PROG-TO-CHECK-FOR with a
|
---|
1563 | prefix of the host type as determined by `AC_CANONICAL_HOST',
|
---|
1564 | followed by a dash (*note Canonicalizing::.). For example, if the
|
---|
1565 | user runs `configure --host=i386-gnu', then this call:
|
---|
1566 | AC_CHECK_TOOL(RANLIB, ranlib, :)
|
---|
1567 |
|
---|
1568 | sets `RANLIB' to `i386-gnu-ranlib' if that program exists in
|
---|
1569 | `PATH', or to `ranlib' if that program exists in `PATH', or to `:'
|
---|
1570 | if neither program exists.
|
---|
1571 |
|
---|
1572 | - Macro: AC_PATH_PROG (VARIABLE, PROG-TO-CHECK-FOR [,
|
---|
1573 | VALUE-IF-NOT-FOUND [, PATH]])
|
---|
1574 | Like `AC_CHECK_PROG', but set VARIABLE to the entire path of
|
---|
1575 | PROG-TO-CHECK-FOR if found.
|
---|
1576 |
|
---|
1577 | - Macro: AC_PATH_PROGS (VARIABLE, PROGS-TO-CHECK-FOR [,
|
---|
1578 | VALUE-IF-NOT-FOUND [, PATH]])
|
---|
1579 | Like `AC_CHECK_PROGS', but if any of PROGS-TO-CHECK-FOR are found,
|
---|
1580 | set VARIABLE to the entire path of the program found.
|
---|
1581 |
|
---|
1582 |
|
---|
1583 | File: autoconf.info, Node: Libraries, Next: Library Functions, Prev: Alternative Programs, Up: Existing Tests
|
---|
1584 |
|
---|
1585 | Library Files
|
---|
1586 | =============
|
---|
1587 |
|
---|
1588 | The following macros check for the presence of certain C, C++ or
|
---|
1589 | Fortran 77 library archive files.
|
---|
1590 |
|
---|
1591 | - Macro: AC_CHECK_LIB (LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
|
---|
1592 | ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
|
---|
1593 | Depending on the current language(*note Language Choice::.), try to
|
---|
1594 | ensure that the C, C++ or Fortran 77 function FUNCTION is
|
---|
1595 | available by checking whether a test program can be linked with the
|
---|
1596 | library LIBRARY to get the function. LIBRARY is the base name of
|
---|
1597 | the library; e.g., to check for `-lmp', use `mp' as the LIBRARY
|
---|
1598 | argument.
|
---|
1599 |
|
---|
1600 | ACTION-IF-FOUND is a list of shell commands to run if the link
|
---|
1601 | with the library succeeds; ACTION-IF-NOT-FOUND is a list of shell
|
---|
1602 | commands to run if the link fails. If ACTION-IF-FOUND is not
|
---|
1603 | specified, the default action will add `-lLIBRARY' to `LIBS' and
|
---|
1604 | define `HAVE_LIBLIBRARY' (in all capitals).
|
---|
1605 |
|
---|
1606 | If linking with LIBRARY results in unresolved symbols, which would
|
---|
1607 | be resolved by linking with additional libraries, give those
|
---|
1608 | libraries as the OTHER-LIBRARIES argument, separated by spaces:
|
---|
1609 | `-lXt -lX11'. Otherwise this macro will fail to detect that
|
---|
1610 | LIBRARY is present, because linking the test program will always
|
---|
1611 | fail with unresolved symbols.
|
---|
1612 |
|
---|
1613 | - Macro: AC_HAVE_LIBRARY (LIBRARY, [, ACTION-IF-FOUND [,
|
---|
1614 | ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
|
---|
1615 | This macro is equivalent to calling `AC_CHECK_LIB' with a FUNCTION
|
---|
1616 | argument of `main'. In addition, LIBRARY can be written as any of
|
---|
1617 | `foo', `-lfoo', or `libfoo.a'. In all of those cases, the
|
---|
1618 | compiler is passed `-lfoo'. However, LIBRARY can not be a shell
|
---|
1619 | variable; it must be a literal name. This macro is considered
|
---|
1620 | obsolete.
|
---|
1621 |
|
---|
1622 | - Macro: AC_SEARCH_LIBS (FUNCTION, SEARCH-LIBS [, ACTION-IF-FOUND [,
|
---|
1623 | ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
|
---|
1624 | Search for a library defining FUNCTION, if it's not already
|
---|
1625 | available. This equates to calling `AC_TRY_LINK_FUNC' first with
|
---|
1626 | no libraries, then for each library listed in SEARCH-LIBS.
|
---|
1627 |
|
---|
1628 | If the function is found, run ACTION-IF-FOUND, otherwise run
|
---|
1629 | ACTION-IF-NOT-FOUND.
|
---|
1630 |
|
---|
1631 | If linking with LIBRARY results in unresolved symbols, which would
|
---|
1632 | be resolved by linking with additional libraries, give those
|
---|
1633 | libraries as the OTHER-LIBRARIES argument, separated by spaces:
|
---|
1634 | `-lXt -lX11'. Otherwise this macro will fail to detect that
|
---|
1635 | FUNCTION is present, because linking the test program will always
|
---|
1636 | fail with unresolved symbols.
|
---|
1637 |
|
---|
1638 | - Macro: AC_SEARCH_LIBS (FUNCTION, SEARCH-LIBS[, ACTION-IF-FOUND [,
|
---|
1639 | ACTION-IF-NOT-FOUND]])
|
---|
1640 | This macro is equivalent to calling `AC_TRY_LINK_FUNC' once for
|
---|
1641 | each library listed in SEARCH-LIBS. Add `-lLIBRARY' to `LIBS' for
|
---|
1642 | the first library found to contain FUNCTION, and execute
|
---|
1643 | ACTION-IF-FOUND. Otherwise execute ACTION-IF-NOT-FOUND.
|
---|
1644 |
|
---|
1645 |
|
---|
1646 | File: autoconf.info, Node: Library Functions, Next: Header Files, Prev: Libraries, Up: Existing Tests
|
---|
1647 |
|
---|
1648 | Library Functions
|
---|
1649 | =================
|
---|
1650 |
|
---|
1651 | The following macros check for particular C library functions. If
|
---|
1652 | there is no macro specifically defined to check for a function you need,
|
---|
1653 | and you don't need to check for any special properties of it, then you
|
---|
1654 | can use one of the general function check macros.
|
---|
1655 |
|
---|
1656 | * Menu:
|
---|
1657 |
|
---|
1658 | * Particular Functions:: Special handling to find certain functions.
|
---|
1659 | * Generic Functions:: How to find other functions.
|
---|
1660 |
|
---|
1661 |
|
---|
1662 | File: autoconf.info, Node: Particular Functions, Next: Generic Functions, Prev: Library Functions, Up: Library Functions
|
---|
1663 |
|
---|
1664 | Particular Function Checks
|
---|
1665 | --------------------------
|
---|
1666 |
|
---|
1667 | These macros check for particular C functions--whether they exist,
|
---|
1668 | and in some cases how they respond when given certain arguments.
|
---|
1669 |
|
---|
1670 | - Macro: AC_FUNC_ALLOCA
|
---|
1671 | Check how to get `alloca'. Tries to get a builtin version by
|
---|
1672 | checking for `alloca.h' or the predefined C preprocessor macros
|
---|
1673 | `__GNUC__' and `_AIX'. If this macro finds `alloca.h', it defines
|
---|
1674 | `HAVE_ALLOCA_H'.
|
---|
1675 |
|
---|
1676 | If those attempts fail, it looks for the function in the standard C
|
---|
1677 | library. If any of those methods succeed, it defines
|
---|
1678 | `HAVE_ALLOCA'. Otherwise, it sets the output variable `ALLOCA' to
|
---|
1679 | `alloca.o' and defines `C_ALLOCA' (so programs can periodically
|
---|
1680 | call `alloca(0)' to garbage collect). This variable is separate
|
---|
1681 | from `LIBOBJS' so multiple programs can share the value of
|
---|
1682 | `ALLOCA' without needing to create an actual library, in case only
|
---|
1683 | some of them use the code in `LIBOBJS'.
|
---|
1684 |
|
---|
1685 | This macro does not try to get `alloca' from the System V R3
|
---|
1686 | `libPW' or the System V R4 `libucb' because those libraries
|
---|
1687 | contain some incompatible functions that cause trouble. Some
|
---|
1688 | versions do not even contain `alloca' or contain a buggy version.
|
---|
1689 | If you still want to use their `alloca', use `ar' to extract
|
---|
1690 | `alloca.o' from them instead of compiling `alloca.c'.
|
---|
1691 |
|
---|
1692 | Source files that use `alloca' should start with a piece of code
|
---|
1693 | like the following, to declare it properly. In some versions of
|
---|
1694 | AIX, the declaration of `alloca' must precede everything else
|
---|
1695 | except for comments and preprocessor directives. The `#pragma'
|
---|
1696 | directive is indented so that pre-ANSI C compilers will ignore it,
|
---|
1697 | rather than choke on it.
|
---|
1698 |
|
---|
1699 | /* AIX requires this to be the first thing in the file. */
|
---|
1700 | #ifndef __GNUC__
|
---|
1701 | # if HAVE_ALLOCA_H
|
---|
1702 | # include <alloca.h>
|
---|
1703 | # else
|
---|
1704 | # ifdef _AIX
|
---|
1705 | #pragma alloca
|
---|
1706 | # else
|
---|
1707 | # ifndef alloca /* predefined by HP cc +Olibcalls */
|
---|
1708 | char *alloca ();
|
---|
1709 | # endif
|
---|
1710 | # endif
|
---|
1711 | # endif
|
---|
1712 | #endif
|
---|
1713 |
|
---|
1714 | - Macro: AC_FUNC_CLOSEDIR_VOID
|
---|
1715 | If the `closedir' function does not return a meaningful value,
|
---|
1716 | define `CLOSEDIR_VOID'. Otherwise, callers ought to check its
|
---|
1717 | return value for an error indicator.
|
---|
1718 |
|
---|
1719 | - Macro: AC_FUNC_FNMATCH
|
---|
1720 | If the `fnmatch' function is available and works (unlike the one on
|
---|
1721 | SunOS 5.4), define `HAVE_FNMATCH'.
|
---|
1722 |
|
---|
1723 | - Macro: AC_FUNC_GETLOADAVG
|
---|
1724 | Check how to get the system load averages. If the system has the
|
---|
1725 | `getloadavg' function, this macro defines `HAVE_GETLOADAVG', and
|
---|
1726 | adds to `LIBS' any libraries needed to get that function.
|
---|
1727 |
|
---|
1728 | Otherwise, it adds `getloadavg.o' to the output variable
|
---|
1729 | `LIBOBJS', and possibly defines several other C preprocessor
|
---|
1730 | macros and output variables:
|
---|
1731 |
|
---|
1732 | 1. It defines `SVR4', `DGUX', `UMAX', or `UMAX4_3' if on those
|
---|
1733 | systems.
|
---|
1734 |
|
---|
1735 | 2. If it finds `nlist.h', it defines `NLIST_STRUCT'.
|
---|
1736 |
|
---|
1737 | 3. If `struct nlist' has an `n_un' member, it defines
|
---|
1738 | `NLIST_NAME_UNION'.
|
---|
1739 |
|
---|
1740 | 4. If compiling `getloadavg.c' defines `LDAV_PRIVILEGED',
|
---|
1741 | programs need to be installed specially on this system for
|
---|
1742 | `getloadavg' to work, and this macro defines
|
---|
1743 | `GETLOADAVG_PRIVILEGED'.
|
---|
1744 |
|
---|
1745 | 5. This macro sets the output variable `NEED_SETGID'. The value
|
---|
1746 | is `true' if special installation is required, `false' if not.
|
---|
1747 | If `NEED_SETGID' is `true', this macro sets `KMEM_GROUP' to
|
---|
1748 | the name of the group that should own the installed program.
|
---|
1749 |
|
---|
1750 | - Macro: AC_FUNC_GETMNTENT
|
---|
1751 | Check for `getmntent' in the `sun', `seq', and `gen' libraries,
|
---|
1752 | for Irix 4, PTX, and Unixware, respectively. Then, if `getmntent'
|
---|
1753 | is available, define `HAVE_GETMNTENT'.
|
---|
1754 |
|
---|
1755 | - Macro: AC_FUNC_GETPGRP
|
---|
1756 | If `getpgrp' takes no argument (the POSIX.1 version), define
|
---|
1757 | `GETPGRP_VOID'. Otherwise, it is the BSD version, which takes a
|
---|
1758 | process ID as an argument. This macro does not check whether
|
---|
1759 | `getpgrp' exists at all; if you need to work in that situation,
|
---|
1760 | first call `AC_CHECK_FUNC' for `getpgrp'.
|
---|
1761 |
|
---|
1762 | - Macro: AC_FUNC_MEMCMP
|
---|
1763 | If the `memcmp' function is not available, or does not work on
|
---|
1764 | 8-bit data (like the one on SunOS 4.1.3), add `memcmp.o' to output
|
---|
1765 | variable `LIBOBJS'.
|
---|
1766 |
|
---|
1767 | - Macro: AC_FUNC_MMAP
|
---|
1768 | If the `mmap' function exists and works correctly, define
|
---|
1769 | `HAVE_MMAP'. Only checks private fixed mapping of already-mapped
|
---|
1770 | memory.
|
---|
1771 |
|
---|
1772 | - Macro: AC_FUNC_SELECT_ARGTYPES
|
---|
1773 | Determines the correct type to be passed to each of the `select'
|
---|
1774 | function's arguments, and defines those types in
|
---|
1775 | `SELECT_TYPE_ARG1', `SELECT_TYPE_ARG234', and `SELECT_TYPE_ARG5'
|
---|
1776 | respectively. `SELECT_TYPE_ARG1' defaults to `int',
|
---|
1777 | `SELECT_TYPE_ARG234' defaults to `int *', and `SELECT_TYPE_ARG5'
|
---|
1778 | defaults to `struct timeval *'.
|
---|
1779 |
|
---|
1780 | - Macro: AC_FUNC_SETPGRP
|
---|
1781 | If `setpgrp' takes no argument (the POSIX.1 version), define
|
---|
1782 | `SETPGRP_VOID'. Otherwise, it is the BSD version, which takes two
|
---|
1783 | process ID as arguments. This macro does not check whether
|
---|
1784 | `setpgrp' exists at all; if you need to work in that situation,
|
---|
1785 | first call `AC_CHECK_FUNC' for `setpgrp'.
|
---|
1786 |
|
---|
1787 | - Macro: AC_FUNC_SETVBUF_REVERSED
|
---|
1788 | If `setvbuf' takes the buffering type as its second argument and
|
---|
1789 | the buffer pointer as the third, instead of the other way around,
|
---|
1790 | define `SETVBUF_REVERSED'. This is the case on System V before
|
---|
1791 | release 3.
|
---|
1792 |
|
---|
1793 | - Macro: AC_FUNC_STRCOLL
|
---|
1794 | If the `strcoll' function exists and works correctly, define
|
---|
1795 | `HAVE_STRCOLL'. This does a bit more than
|
---|
1796 | `AC_CHECK_FUNCS(strcoll)', because some systems have incorrect
|
---|
1797 | definitions of `strcoll', which should not be used.
|
---|
1798 |
|
---|
1799 | - Macro: AC_FUNC_STRFTIME
|
---|
1800 | Check for `strftime' in the `intl' library, for SCO UNIX. Then,
|
---|
1801 | if `strftime' is available, define `HAVE_STRFTIME'.
|
---|
1802 |
|
---|
1803 | - Macro: AC_FUNC_UTIME_NULL
|
---|
1804 | If `utime(FILE, NULL)' sets FILE's timestamp to the present,
|
---|
1805 | define `HAVE_UTIME_NULL'.
|
---|
1806 |
|
---|
1807 | - Macro: AC_FUNC_VFORK
|
---|
1808 | If `vfork.h' is found, define `HAVE_VFORK_H'. If a working
|
---|
1809 | `vfork' is not found, define `vfork' to be `fork'. This macro
|
---|
1810 | checks for several known errors in implementations of `vfork' and
|
---|
1811 | considers the system to not have a working `vfork' if it detects
|
---|
1812 | any of them. It is not considered to be an implementation error
|
---|
1813 | if a child's invocation of `signal' modifies the parent's signal
|
---|
1814 | handler, since child processes rarely change their signal handlers.
|
---|
1815 |
|
---|
1816 | - Macro: AC_FUNC_VPRINTF
|
---|
1817 | If `vprintf' is found, define `HAVE_VPRINTF'. Otherwise, if
|
---|
1818 | `_doprnt' is found, define `HAVE_DOPRNT'. (If `vprintf' is
|
---|
1819 | available, you may assume that `vfprintf' and `vsprintf' are also
|
---|
1820 | available.)
|
---|
1821 |
|
---|
1822 | - Macro: AC_FUNC_WAIT3
|
---|
1823 | If `wait3' is found and fills in the contents of its third argument
|
---|
1824 | (a `struct rusage *'), which HP-UX does not do, define
|
---|
1825 | `HAVE_WAIT3'.
|
---|
1826 |
|
---|
1827 |
|
---|
1828 | File: autoconf.info, Node: Generic Functions, Prev: Particular Functions, Up: Library Functions
|
---|
1829 |
|
---|
1830 | Generic Function Checks
|
---|
1831 | -----------------------
|
---|
1832 |
|
---|
1833 | These macros are used to find functions not covered by the particular
|
---|
1834 | test macros. If the functions might be in libraries other than the
|
---|
1835 | default C library, first call `AC_CHECK_LIB' for those libraries. If
|
---|
1836 | you need to check the behavior of a function as well as find out
|
---|
1837 | whether it is present, you have to write your own test for it (*note
|
---|
1838 | Writing Tests::.).
|
---|
1839 |
|
---|
1840 | - Macro: AC_CHECK_FUNC (FUNCTION, [ACTION-IF-FOUND [,
|
---|
1841 | ACTION-IF-NOT-FOUND]])
|
---|
1842 | If C function FUNCTION is available, run shell commands
|
---|
1843 | ACTION-IF-FOUND, otherwise ACTION-IF-NOT-FOUND. If you just want
|
---|
1844 | to define a symbol if the function is available, consider using
|
---|
1845 | `AC_CHECK_FUNCS' instead. This macro checks for functions with C
|
---|
1846 | linkage even when `AC_LANG_CPLUSPLUS' has been called, since C++ is
|
---|
1847 | more standardized than C is. (*note Language Choice::., for more
|
---|
1848 | information about selecting the language for checks.)
|
---|
1849 |
|
---|
1850 | - Macro: AC_CHECK_FUNCS (FUNCTION... [, ACTION-IF-FOUND [,
|
---|
1851 | ACTION-IF-NOT-FOUND]])
|
---|
1852 | For each given FUNCTION in the whitespace-separated argument list
|
---|
1853 | that is available, define `HAVE_FUNCTION' (in all capitals). If
|
---|
1854 | ACTION-IF-FOUND is given, it is additional shell code to execute
|
---|
1855 | when one of the functions is found. You can give it a value of
|
---|
1856 | `break' to break out of the loop on the first match. If
|
---|
1857 | ACTION-IF-NOT-FOUND is given, it is executed when one of the
|
---|
1858 | functions is not found.
|
---|
1859 |
|
---|
1860 | - Macro: AC_REPLACE_FUNCS (FUNCTION...)
|
---|
1861 | Like calling `AC_CHECK_FUNCS' using an ACTION-IF-NOT-FOUND that
|
---|
1862 | adds `FUNCTION.o' to the value of the output variable `LIBOBJS'.
|
---|
1863 | You can declare a function for which your replacement version is
|
---|
1864 | used by enclosing the prototype in `#ifndef HAVE_FUNCTION'. If
|
---|
1865 | the system has the function, it probably declares it in a header
|
---|
1866 | file you should be including, so you shouldn't redeclare it, lest
|
---|
1867 | your declaration conflict.
|
---|
1868 |
|
---|
1869 |
|
---|
1870 | File: autoconf.info, Node: Header Files, Next: Structures, Prev: Library Functions, Up: Existing Tests
|
---|
1871 |
|
---|
1872 | Header Files
|
---|
1873 | ============
|
---|
1874 |
|
---|
1875 | The following macros check for the presence of certain C header
|
---|
1876 | files. If there is no macro specifically defined to check for a header
|
---|
1877 | file you need, and you don't need to check for any special properties of
|
---|
1878 | it, then you can use one of the general header file check macros.
|
---|
1879 |
|
---|
1880 | * Menu:
|
---|
1881 |
|
---|
1882 | * Particular Headers:: Special handling to find certain headers.
|
---|
1883 | * Generic Headers:: How to find other headers.
|
---|
1884 |
|
---|
1885 |
|
---|
1886 | File: autoconf.info, Node: Particular Headers, Next: Generic Headers, Prev: Header Files, Up: Header Files
|
---|
1887 |
|
---|
1888 | Particular Header Checks
|
---|
1889 | ------------------------
|
---|
1890 |
|
---|
1891 | These macros check for particular system header files--whether they
|
---|
1892 | exist, and in some cases whether they declare certain symbols.
|
---|
1893 |
|
---|
1894 | - Macro: AC_DECL_SYS_SIGLIST
|
---|
1895 | Define `SYS_SIGLIST_DECLARED' if the variable `sys_siglist' is
|
---|
1896 | declared in a system header file, either `signal.h' or `unistd.h'.
|
---|
1897 |
|
---|
1898 | - Macro: AC_DIR_HEADER
|
---|
1899 | Like calling `AC_HEADER_DIRENT' and `AC_FUNC_CLOSEDIR_VOID', but
|
---|
1900 | defines a different set of C preprocessor macros to indicate which
|
---|
1901 | header file is found. This macro and the names it defines are
|
---|
1902 | considered obsolete. The names it defines are:
|
---|
1903 |
|
---|
1904 | `dirent.h'
|
---|
1905 | `DIRENT'
|
---|
1906 |
|
---|
1907 | `sys/ndir.h'
|
---|
1908 | `SYSNDIR'
|
---|
1909 |
|
---|
1910 | `sys/dir.h'
|
---|
1911 | `SYSDIR'
|
---|
1912 |
|
---|
1913 | `ndir.h'
|
---|
1914 | `NDIR'
|
---|
1915 |
|
---|
1916 | In addition, if the `closedir' function does not return a
|
---|
1917 | meaningful value, define `VOID_CLOSEDIR'.
|
---|
1918 |
|
---|
1919 | - Macro: AC_HEADER_DIRENT
|
---|
1920 | Check for the following header files, and for the first one that is
|
---|
1921 | found and defines `DIR', define the listed C preprocessor macro:
|
---|
1922 |
|
---|
1923 | `dirent.h'
|
---|
1924 | `HAVE_DIRENT_H'
|
---|
1925 |
|
---|
1926 | `sys/ndir.h'
|
---|
1927 | `HAVE_SYS_NDIR_H'
|
---|
1928 |
|
---|
1929 | `sys/dir.h'
|
---|
1930 | `HAVE_SYS_DIR_H'
|
---|
1931 |
|
---|
1932 | `ndir.h'
|
---|
1933 | `HAVE_NDIR_H'
|
---|
1934 |
|
---|
1935 | The directory library declarations in the source code should look
|
---|
1936 | something like the following:
|
---|
1937 |
|
---|
1938 | #if HAVE_DIRENT_H
|
---|
1939 | # include <dirent.h>
|
---|
1940 | # define NAMLEN(dirent) strlen((dirent)->d_name)
|
---|
1941 | #else
|
---|
1942 | # define dirent direct
|
---|
1943 | # define NAMLEN(dirent) (dirent)->d_namlen
|
---|
1944 | # if HAVE_SYS_NDIR_H
|
---|
1945 | # include <sys/ndir.h>
|
---|
1946 | # endif
|
---|
1947 | # if HAVE_SYS_DIR_H
|
---|
1948 | # include <sys/dir.h>
|
---|
1949 | # endif
|
---|
1950 | # if HAVE_NDIR_H
|
---|
1951 | # include <ndir.h>
|
---|
1952 | # endif
|
---|
1953 | #endif
|
---|
1954 |
|
---|
1955 | Using the above declarations, the program would declare variables
|
---|
1956 | to be type `struct dirent', not `struct direct', and would access
|
---|
1957 | the length of a directory entry name by passing a pointer to a
|
---|
1958 | `struct dirent' to the `NAMLEN' macro.
|
---|
1959 |
|
---|
1960 | This macro also checks for the SCO Xenix `dir' and `x' libraries.
|
---|
1961 |
|
---|
1962 | - Macro: AC_HEADER_MAJOR
|
---|
1963 | If `sys/types.h' does not define `major', `minor', and `makedev',
|
---|
1964 | but `sys/mkdev.h' does, define `MAJOR_IN_MKDEV'; otherwise, if
|
---|
1965 | `sys/sysmacros.h' does, define `MAJOR_IN_SYSMACROS'.
|
---|
1966 |
|
---|
1967 | - Macro: AC_HEADER_STDC
|
---|
1968 | Define `STDC_HEADERS' if the system has ANSI C header files.
|
---|
1969 | Specifically, this macro checks for `stdlib.h', `stdarg.h',
|
---|
1970 | `string.h', and `float.h'; if the system has those, it probably
|
---|
1971 | has the rest of the ANSI C header files. This macro also checks
|
---|
1972 | whether `string.h' declares `memchr' (and thus presumably the
|
---|
1973 | other `mem' functions), whether `stdlib.h' declare `free' (and
|
---|
1974 | thus presumably `malloc' and other related functions), and whether
|
---|
1975 | the `ctype.h' macros work on characters with the high bit set, as
|
---|
1976 | ANSI C requires.
|
---|
1977 |
|
---|
1978 | Use `STDC_HEADERS' instead of `__STDC__' to determine whether the
|
---|
1979 | system has ANSI-compliant header files (and probably C library
|
---|
1980 | functions) because many systems that have GCC do not have ANSI C
|
---|
1981 | header files.
|
---|
1982 |
|
---|
1983 | On systems without ANSI C headers, there is so much variation that
|
---|
1984 | it is probably easier to declare the functions you use than to
|
---|
1985 | figure out exactly what the system header files declare. Some
|
---|
1986 | systems contain a mix of functions ANSI and BSD; some are mostly
|
---|
1987 | ANSI but lack `memmove'; some define the BSD functions as macros in
|
---|
1988 | `string.h' or `strings.h'; some have only the BSD functions but
|
---|
1989 | `string.h'; some declare the memory functions in `memory.h', some
|
---|
1990 | in `string.h'; etc. It is probably sufficient to check for one
|
---|
1991 | string function and one memory function; if the library has the
|
---|
1992 | ANSI versions of those then it probably has most of the others.
|
---|
1993 | If you put the following in `configure.in':
|
---|
1994 |
|
---|
1995 | AC_HEADER_STDC
|
---|
1996 | AC_CHECK_FUNCS(strchr memcpy)
|
---|
1997 |
|
---|
1998 | then, in your code, you can put declarations like this:
|
---|
1999 |
|
---|
2000 | #if STDC_HEADERS
|
---|
2001 | # include <string.h>
|
---|
2002 | #else
|
---|
2003 | # ifndef HAVE_STRCHR
|
---|
2004 | # define strchr index
|
---|
2005 | # define strrchr rindex
|
---|
2006 | # endif
|
---|
2007 | char *strchr (), *strrchr ();
|
---|
2008 | # ifndef HAVE_MEMCPY
|
---|
2009 | # define memcpy(d, s, n) bcopy ((s), (d), (n))
|
---|
2010 | # define memmove(d, s, n) bcopy ((s), (d), (n))
|
---|
2011 | # endif
|
---|
2012 | #endif
|
---|
2013 |
|
---|
2014 | If you use a function like `memchr', `memset', `strtok', or
|
---|
2015 | `strspn', which have no BSD equivalent, then macros won't suffice;
|
---|
2016 | you must provide an implementation of each function. An easy way
|
---|
2017 | to incorporate your implementations only when needed (since the
|
---|
2018 | ones in system C libraries may be hand optimized) is to, taking
|
---|
2019 | `memchr' for example, put it in `memchr.c' and use
|
---|
2020 | `AC_REPLACE_FUNCS(memchr)'.
|
---|
2021 |
|
---|
2022 | - Macro: AC_HEADER_SYS_WAIT
|
---|
2023 | If `sys/wait.h' exists and is compatible with POSIX.1, define
|
---|
2024 | `HAVE_SYS_WAIT_H'. Incompatibility can occur if `sys/wait.h' does
|
---|
2025 | not exist, or if it uses the old BSD `union wait' instead of `int'
|
---|
2026 | to store a status value. If `sys/wait.h' is not POSIX.1
|
---|
2027 | compatible, then instead of including it, define the POSIX.1
|
---|
2028 | macros with their usual interpretations. Here is an example:
|
---|
2029 |
|
---|
2030 | #include <sys/types.h>
|
---|
2031 | #if HAVE_SYS_WAIT_H
|
---|
2032 | # include <sys/wait.h>
|
---|
2033 | #endif
|
---|
2034 | #ifndef WEXITSTATUS
|
---|
2035 | # define WEXITSTATUS(stat_val) ((unsigned)(stat_val) >> 8)
|
---|
2036 | #endif
|
---|
2037 | #ifndef WIFEXITED
|
---|
2038 | # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
|
---|
2039 | #endif
|
---|
2040 |
|
---|
2041 | - Macro: AC_MEMORY_H
|
---|
2042 | Define `NEED_MEMORY_H' if `memcpy', `memcmp', etc. are not
|
---|
2043 | declared in `string.h' and `memory.h' exists. This macro is
|
---|
2044 | obsolete; instead, use `AC_CHECK_HEADERS(memory.h)'. See the
|
---|
2045 | example for `AC_HEADER_STDC'.
|
---|
2046 |
|
---|
2047 | - Macro: AC_UNISTD_H
|
---|
2048 | Define `HAVE_UNISTD_H' if the system has `unistd.h'. This macro
|
---|
2049 | is obsolete; instead, use `AC_CHECK_HEADERS(unistd.h)'.
|
---|
2050 |
|
---|
2051 | The way to check if the system supports POSIX.1 is:
|
---|
2052 |
|
---|
2053 | #if HAVE_UNISTD_H
|
---|
2054 | # include <sys/types.h>
|
---|
2055 | # include <unistd.h>
|
---|
2056 | #endif
|
---|
2057 |
|
---|
2058 | #ifdef _POSIX_VERSION
|
---|
2059 | /* Code for POSIX.1 systems. */
|
---|
2060 | #endif
|
---|
2061 |
|
---|
2062 | `_POSIX_VERSION' is defined when `unistd.h' is included on POSIX.1
|
---|
2063 | systems. If there is no `unistd.h', it is definitely not a
|
---|
2064 | POSIX.1 system. However, some non-POSIX.1 systems do have
|
---|
2065 | `unistd.h'.
|
---|
2066 |
|
---|
2067 | - Macro: AC_USG
|
---|
2068 | Define `USG' if the system does not have `strings.h', `rindex',
|
---|
2069 | `bzero', etc. This implies that it has `string.h', `strrchr',
|
---|
2070 | `memset', etc.
|
---|
2071 |
|
---|
2072 | The symbol `USG' is obsolete. Instead of this macro, see the
|
---|
2073 | example for `AC_HEADER_STDC'.
|
---|
2074 |
|
---|
2075 |
|
---|
2076 | File: autoconf.info, Node: Generic Headers, Prev: Particular Headers, Up: Header Files
|
---|
2077 |
|
---|
2078 | Generic Header Checks
|
---|
2079 | ---------------------
|
---|
2080 |
|
---|
2081 | These macros are used to find system header files not covered by the
|
---|
2082 | particular test macros. If you need to check the contents of a header
|
---|
2083 | as well as find out whether it is present, you have to write your own
|
---|
2084 | test for it (*note Writing Tests::.).
|
---|
2085 |
|
---|
2086 | - Macro: AC_CHECK_HEADER (HEADER-FILE, [ACTION-IF-FOUND [,
|
---|
2087 | ACTION-IF-NOT-FOUND]])
|
---|
2088 | If the system header file HEADER-FILE exists, execute shell
|
---|
2089 | commands ACTION-IF-FOUND, otherwise execute ACTION-IF-NOT-FOUND.
|
---|
2090 | If you just want to define a symbol if the header file is
|
---|
2091 | available, consider using `AC_CHECK_HEADERS' instead.
|
---|
2092 |
|
---|
2093 | - Macro: AC_CHECK_HEADERS (HEADER-FILE... [, ACTION-IF-FOUND [,
|
---|
2094 | ACTION-IF-NOT-FOUND]])
|
---|
2095 | For each given system header file HEADER-FILE in the
|
---|
2096 | whitespace-separated argument list that exists, define
|
---|
2097 | `HAVE_HEADER-FILE' (in all capitals). If ACTION-IF-FOUND is
|
---|
2098 | given, it is additional shell code to execute when one of the
|
---|
2099 | header files is found. You can give it a value of `break' to
|
---|
2100 | break out of the loop on the first match. If ACTION-IF-NOT-FOUND
|
---|
2101 | is given, it is executed when one of the header files is not found.
|
---|
2102 |
|
---|
2103 |
|
---|
2104 | File: autoconf.info, Node: Structures, Next: Typedefs, Prev: Header Files, Up: Existing Tests
|
---|
2105 |
|
---|
2106 | Structures
|
---|
2107 | ==========
|
---|
2108 |
|
---|
2109 | The following macros check for certain structures or structure
|
---|
2110 | members. To check structures not listed here, use `AC_EGREP_CPP'
|
---|
2111 | (*note Examining Declarations::.) or `AC_TRY_COMPILE' (*note Examining
|
---|
2112 | Syntax::.).
|
---|
2113 |
|
---|
2114 | - Macro: AC_HEADER_STAT
|
---|
2115 | If the macros `S_ISDIR', `S_ISREG' et al. defined in `sys/stat.h'
|
---|
2116 | do not work properly (returning false positives), define
|
---|
2117 | `STAT_MACROS_BROKEN'. This is the case on Tektronix UTekV, Amdahl
|
---|
2118 | UTS and Motorola System V/88.
|
---|
2119 |
|
---|
2120 | - Macro: AC_HEADER_TIME
|
---|
2121 | If a program may include both `time.h' and `sys/time.h', define
|
---|
2122 | `TIME_WITH_SYS_TIME'. On some older systems, `sys/time.h'
|
---|
2123 | includes `time.h', but `time.h' is not protected against multiple
|
---|
2124 | inclusion, so programs should not explicitly include both files.
|
---|
2125 | This macro is useful in programs that use, for example, `struct
|
---|
2126 | timeval' or `struct timezone' as well as `struct tm'. It is best
|
---|
2127 | used in conjunction with `HAVE_SYS_TIME_H', which can be checked
|
---|
2128 | for using `AC_CHECK_HEADERS(sys/time.h)'.
|
---|
2129 |
|
---|
2130 | #if TIME_WITH_SYS_TIME
|
---|
2131 | # include <sys/time.h>
|
---|
2132 | # include <time.h>
|
---|
2133 | #else
|
---|
2134 | # if HAVE_SYS_TIME_H
|
---|
2135 | # include <sys/time.h>
|
---|
2136 | # else
|
---|
2137 | # include <time.h>
|
---|
2138 | # endif
|
---|
2139 | #endif
|
---|
2140 |
|
---|
2141 | - Macro: AC_STRUCT_ST_BLKSIZE
|
---|
2142 | If `struct stat' contains an `st_blksize' member, define
|
---|
2143 | `HAVE_ST_BLKSIZE'.
|
---|
2144 |
|
---|
2145 | - Macro: AC_STRUCT_ST_BLOCKS
|
---|
2146 | If `struct stat' contains an `st_blocks' member, define
|
---|
2147 | `HAVE_ST_BLOCKS'. Otherwise, add `fileblocks.o' to the output
|
---|
2148 | variable `LIBOBJS'.
|
---|
2149 |
|
---|
2150 | - Macro: AC_STRUCT_ST_RDEV
|
---|
2151 | If `struct stat' contains an `st_rdev' member, define
|
---|
2152 | `HAVE_ST_RDEV'.
|
---|
2153 |
|
---|
2154 | - Macro: AC_STRUCT_TM
|
---|
2155 | If `time.h' does not define `struct tm', define `TM_IN_SYS_TIME',
|
---|
2156 | which means that including `sys/time.h' had better define `struct
|
---|
2157 | tm'.
|
---|
2158 |
|
---|
2159 | - Macro: AC_STRUCT_TIMEZONE
|
---|
2160 | Figure out how to get the current timezone. If `struct tm' has a
|
---|
2161 | `tm_zone' member, define `HAVE_TM_ZONE'. Otherwise, if the
|
---|
2162 | external array `tzname' is found, define `HAVE_TZNAME'.
|
---|
2163 |
|
---|
2164 |
|
---|
2165 | File: autoconf.info, Node: Typedefs, Next: C Compiler Characteristics, Prev: Structures, Up: Existing Tests
|
---|
2166 |
|
---|
2167 | Typedefs
|
---|
2168 | ========
|
---|
2169 |
|
---|
2170 | The following macros check for C typedefs. If there is no macro
|
---|
2171 | specifically defined to check for a typedef you need, and you don't need
|
---|
2172 | to check for any special properties of it, then you can use a general
|
---|
2173 | typedef check macro.
|
---|
2174 |
|
---|
2175 | * Menu:
|
---|
2176 |
|
---|
2177 | * Particular Typedefs:: Special handling to find certain types.
|
---|
2178 | * Generic Typedefs:: How to find other types.
|
---|
2179 |
|
---|
2180 |
|
---|
2181 | File: autoconf.info, Node: Particular Typedefs, Next: Generic Typedefs, Prev: Typedefs, Up: Typedefs
|
---|
2182 |
|
---|
2183 | Particular Typedef Checks
|
---|
2184 | -------------------------
|
---|
2185 |
|
---|
2186 | These macros check for particular C typedefs in `sys/types.h' and
|
---|
2187 | `stdlib.h' (if it exists).
|
---|
2188 |
|
---|
2189 | - Macro: AC_TYPE_GETGROUPS
|
---|
2190 | Define `GETGROUPS_T' to be whichever of `gid_t' or `int' is the
|
---|
2191 | base type of the array argument to `getgroups'.
|
---|
2192 |
|
---|
2193 | - Macro: AC_TYPE_MODE_T
|
---|
2194 | If `mode_t' is not defined, define `mode_t' to be `int'.
|
---|
2195 |
|
---|
2196 | - Macro: AC_TYPE_OFF_T
|
---|
2197 | If `off_t' is not defined, define `off_t' to be `long'.
|
---|
2198 |
|
---|
2199 | - Macro: AC_TYPE_PID_T
|
---|
2200 | If `pid_t' is not defined, define `pid_t' to be `int'.
|
---|
2201 |
|
---|
2202 | - Macro: AC_TYPE_SIGNAL
|
---|
2203 | If `signal.h' declares `signal' as returning a pointer to a
|
---|
2204 | function returning `void', define `RETSIGTYPE' to be `void';
|
---|
2205 | otherwise, define it to be `int'.
|
---|
2206 |
|
---|
2207 | Define signal handlers as returning type `RETSIGTYPE':
|
---|
2208 |
|
---|
2209 | RETSIGTYPE
|
---|
2210 | hup_handler ()
|
---|
2211 | {
|
---|
2212 | ...
|
---|
2213 | }
|
---|
2214 |
|
---|
2215 | - Macro: AC_TYPE_SIZE_T
|
---|
2216 | If `size_t' is not defined, define `size_t' to be `unsigned'.
|
---|
2217 |
|
---|
2218 | - Macro: AC_TYPE_UID_T
|
---|
2219 | If `uid_t' is not defined, define `uid_t' to be `int' and `gid_t'
|
---|
2220 | to be `int'.
|
---|
2221 |
|
---|
2222 |
|
---|
2223 | File: autoconf.info, Node: Generic Typedefs, Prev: Particular Typedefs, Up: Typedefs
|
---|
2224 |
|
---|
2225 | Generic Typedef Checks
|
---|
2226 | ----------------------
|
---|
2227 |
|
---|
2228 | This macro is used to check for typedefs not covered by the
|
---|
2229 | particular test macros.
|
---|
2230 |
|
---|
2231 | - Macro: AC_CHECK_TYPE (TYPE, DEFAULT)
|
---|
2232 | If the type TYPE is not defined in `sys/types.h', or `stdlib.h' or
|
---|
2233 | `stddef.h' if they exist, define it to be the C (or C++) builtin
|
---|
2234 | type DEFAULT; e.g., `short' or `unsigned'.
|
---|
2235 |
|
---|
2236 |
|
---|
2237 | File: autoconf.info, Node: C Compiler Characteristics, Next: Fortran 77 Compiler Characteristics, Prev: Typedefs, Up: Existing Tests
|
---|
2238 |
|
---|
2239 | C Compiler Characteristics
|
---|
2240 | ==========================
|
---|
2241 |
|
---|
2242 | The following macros check for C compiler or machine architecture
|
---|
2243 | features. To check for characteristics not listed here, use
|
---|
2244 | `AC_TRY_COMPILE' (*note Examining Syntax::.) or `AC_TRY_RUN' (*note Run
|
---|
2245 | Time::.)
|
---|
2246 |
|
---|
2247 | - Macro: AC_C_BIGENDIAN
|
---|
2248 | If words are stored with the most significant byte first (like
|
---|
2249 | Motorola and SPARC, but not Intel and VAX, CPUs), define
|
---|
2250 | `WORDS_BIGENDIAN'.
|
---|
2251 |
|
---|
2252 | - Macro: AC_C_CONST
|
---|
2253 | If the C compiler does not fully support the keyword `const',
|
---|
2254 | define `const' to be empty. Some C compilers that do not define
|
---|
2255 | `__STDC__' do support `const'; some compilers that define
|
---|
2256 | `__STDC__' do not completely support `const'. Programs can simply
|
---|
2257 | use `const' as if every C compiler supported it; for those that
|
---|
2258 | don't, the `Makefile' or configuration header file will define it
|
---|
2259 | as empty.
|
---|
2260 |
|
---|
2261 | - Macro: AC_C_INLINE
|
---|
2262 | If the C compiler supports the keyword `inline', do nothing.
|
---|
2263 | Otherwise define `inline' to `__inline__' or `__inline' if it
|
---|
2264 | accepts one of those, otherwise define `inline' to be empty.
|
---|
2265 |
|
---|
2266 | - Macro: AC_C_CHAR_UNSIGNED
|
---|
2267 | If the C type `char' is unsigned, define `__CHAR_UNSIGNED__',
|
---|
2268 | unless the C compiler predefines it.
|
---|
2269 |
|
---|
2270 | - Macro: AC_C_LONG_DOUBLE
|
---|
2271 | If the C compiler supports the `long double' type, define
|
---|
2272 | `HAVE_LONG_DOUBLE'. Some C compilers that do not define
|
---|
2273 | `__STDC__' do support the `long double' type; some compilers that
|
---|
2274 | define `__STDC__' do not support `long double'.
|
---|
2275 |
|
---|
2276 | - Macro: AC_C_STRINGIZE
|
---|
2277 | If the C preprocessor supports the stringizing operator, define
|
---|
2278 | `HAVE_STRINGIZE'. The stringizing operator is `#' and is found in
|
---|
2279 | macros such as this:
|
---|
2280 |
|
---|
2281 | #define x(y) #y
|
---|
2282 |
|
---|
2283 | - Macro: AC_CHECK_SIZEOF (TYPE [, CROSS-SIZE])
|
---|
2284 | Define `SIZEOF_UCTYPE' to be the size in bytes of the C (or C++)
|
---|
2285 | builtin type TYPE, e.g. `int' or `char *'. If `type' is unknown
|
---|
2286 | to the compiler, it gets a size of 0. UCTYPE is TYPE, with
|
---|
2287 | lowercase converted to uppercase, spaces changed to underscores,
|
---|
2288 | and asterisks changed to `P'. If cross-compiling, the value
|
---|
2289 | CROSS-SIZE is used if given, otherwise `configure' exits with an
|
---|
2290 | error message.
|
---|
2291 |
|
---|
2292 | For example, the call
|
---|
2293 | AC_CHECK_SIZEOF(int *)
|
---|
2294 |
|
---|
2295 | defines `SIZEOF_INT_P' to be 8 on DEC Alpha AXP systems.
|
---|
2296 |
|
---|
2297 | - Macro: AC_INT_16_BITS
|
---|
2298 | If the C type `int' is 16 bits wide, define `INT_16_BITS'. This
|
---|
2299 | macro is obsolete; it is more general to use
|
---|
2300 | `AC_CHECK_SIZEOF(int)' instead.
|
---|
2301 |
|
---|
2302 | - Macro: AC_LONG_64_BITS
|
---|
2303 | If the C type `long int' is 64 bits wide, define `LONG_64_BITS'.
|
---|
2304 | This macro is obsolete; it is more general to use
|
---|
2305 | `AC_CHECK_SIZEOF(long)' instead.
|
---|
2306 |
|
---|
2307 |
|
---|
2308 | File: autoconf.info, Node: Fortran 77 Compiler Characteristics, Next: System Services, Prev: C Compiler Characteristics, Up: Existing Tests
|
---|
2309 |
|
---|
2310 | Fortran 77 Compiler Characteristics
|
---|
2311 | ===================================
|
---|
2312 |
|
---|
2313 | The following macros check for Fortran 77 compiler characteristics.
|
---|
2314 | To check for characteristics not listed here, use `AC_TRY_COMPILE'
|
---|
2315 | (*note Examining Syntax::.) or `AC_TRY_RUN' (*note Run Time::.), making
|
---|
2316 | sure to first set the current lanuage to Fortran 77 `AC_LANG_FORTRAN77'
|
---|
2317 | (*note Language Choice::.).
|
---|
2318 |
|
---|
2319 | - Macro: AC_F77_LIBRARY_LDFLAGS
|
---|
2320 | Determine the linker flags (e.g. `-L' and `-l') for the "Fortran
|
---|
2321 | 77 intrinsic and run-time libraries" that are required to
|
---|
2322 | successfully link a Fortran 77 program or shared library. The
|
---|
2323 | output variable `FLIBS' is set to these flags.
|
---|
2324 |
|
---|
2325 | This macro is intended to be used in those situations when it is
|
---|
2326 | necessary to mix, e.g. C++ and Fortran 77 source code into a single
|
---|
2327 | program or shared library (*note Mixing Fortran 77 With C and C++:
|
---|
2328 | (automake)Mixing Fortran 77 With C and C++.).
|
---|
2329 |
|
---|
2330 | For example, if object files from a C++ and Fortran 77 compiler
|
---|
2331 | must be linked together, then the C++ compiler/linker must be used
|
---|
2332 | for linking (since special C++-ish things need to happen at link
|
---|
2333 | time like calling global constructors, instantiating templates,
|
---|
2334 | enabling exception support, etc.).
|
---|
2335 |
|
---|
2336 | However, the Fortran 77 intrinsic and run-time libraries must be
|
---|
2337 | linked in as well, but the C++ compiler/linker doesn't know by
|
---|
2338 | default how to add these Fortran 77 libraries. Hence, the macro
|
---|
2339 | `AC_F77_LIBRARY_LDFLAGS' was created to determine these Fortran 77
|
---|
2340 | libraries.
|
---|
2341 |
|
---|
2342 |
|
---|
2343 | File: autoconf.info, Node: System Services, Next: UNIX Variants, Prev: Fortran 77 Compiler Characteristics, Up: Existing Tests
|
---|
2344 |
|
---|
2345 | System Services
|
---|
2346 | ===============
|
---|
2347 |
|
---|
2348 | The following macros check for operating system services or
|
---|
2349 | capabilities.
|
---|
2350 |
|
---|
2351 | - Macro: AC_CYGWIN
|
---|
2352 | Checks for the Cygwin environment. If present, sets shell variable
|
---|
2353 | `CYGWIN' to `yes'. If not present, sets `CYGWIN' to the empty
|
---|
2354 | string.
|
---|
2355 |
|
---|
2356 | - Macro: AC_EXEEXT
|
---|
2357 | Defines substitute variable `EXEEXT' based on the output of the
|
---|
2358 | compiler, after .c, .o, and .obj files have been excluded.
|
---|
2359 | Typically set to empty string if Unix, `.exe' or `.EXE' if Win32.
|
---|
2360 |
|
---|
2361 | - Macro: AC_OBJEXT
|
---|
2362 | Defines substitute variable `OBJEXT' based on the output of the
|
---|
2363 | compiler, after .c files have been excluded. Typically set to
|
---|
2364 | `.o' if Unix, `.obj' if Win32.
|
---|
2365 |
|
---|
2366 | - Macro: AC_MINGW32
|
---|
2367 | Checks for the MingW32 compiler environment. If present, sets
|
---|
2368 | shell variable `MINGW32' to `yes'. If not present, sets `MINGW32'
|
---|
2369 | to the empty string.
|
---|
2370 |
|
---|
2371 | - Macro: AC_PATH_X
|
---|
2372 | Try to locate the X Window System include files and libraries. If
|
---|
2373 | the user gave the command line options `--x-includes=DIR' and
|
---|
2374 | `--x-libraries=DIR', use those directories. If either or both
|
---|
2375 | were not given, get the missing values by running `xmkmf' on a
|
---|
2376 | trivial `Imakefile' and examining the `Makefile' that it produces.
|
---|
2377 | If that fails (such as if `xmkmf' is not present), look for them
|
---|
2378 | in several directories where they often reside. If either method
|
---|
2379 | is successful, set the shell variables `x_includes' and
|
---|
2380 | `x_libraries' to their locations, unless they are in directories
|
---|
2381 | the compiler searches by default.
|
---|
2382 |
|
---|
2383 | If both methods fail, or the user gave the command line option
|
---|
2384 | `--without-x', set the shell variable `no_x' to `yes'; otherwise
|
---|
2385 | set it to the empty string.
|
---|
2386 |
|
---|
2387 | - Macro: AC_PATH_XTRA
|
---|
2388 | An enhanced version of `AC_PATH_X'. It adds the C compiler flags
|
---|
2389 | that X needs to output variable `X_CFLAGS', and the X linker flags
|
---|
2390 | to `X_LIBS'. If X is not available, adds `-DX_DISPLAY_MISSING' to
|
---|
2391 | `X_CFLAGS'.
|
---|
2392 |
|
---|
2393 | This macro also checks for special libraries that some systems
|
---|
2394 | need in order to compile X programs. It adds any that the system
|
---|
2395 | needs to output variable `X_EXTRA_LIBS'. And it checks for
|
---|
2396 | special X11R6 libraries that need to be linked with before
|
---|
2397 | `-lX11', and adds any found to the output variable `X_PRE_LIBS'.
|
---|
2398 |
|
---|
2399 |
|
---|
2400 | - Macro: AC_SYS_INTERPRETER
|
---|
2401 | Check whether the system supports starting scripts with a line of
|
---|
2402 | the form `#! /bin/csh' to select the interpreter to use for the
|
---|
2403 | script. After running this macro, shell code in `configure.in'
|
---|
2404 | can check the shell variable `interpval'; it will be set to `yes'
|
---|
2405 | if the system supports `#!', `no' if not.
|
---|
2406 |
|
---|
2407 | - Macro: AC_SYS_LONG_FILE_NAMES
|
---|
2408 | If the system supports file names longer than 14 characters, define
|
---|
2409 | `HAVE_LONG_FILE_NAMES'.
|
---|
2410 |
|
---|
2411 | - Macro: AC_SYS_RESTARTABLE_SYSCALLS
|
---|
2412 | If the system automatically restarts a system call that is
|
---|
2413 | interrupted by a signal, define `HAVE_RESTARTABLE_SYSCALLS'.
|
---|
2414 |
|
---|
2415 |
|
---|
2416 | File: autoconf.info, Node: UNIX Variants, Prev: System Services, Up: Existing Tests
|
---|
2417 |
|
---|
2418 | UNIX Variants
|
---|
2419 | =============
|
---|
2420 |
|
---|
2421 | The following macros check for certain operating systems that need
|
---|
2422 | special treatment for some programs, due to exceptional oddities in
|
---|
2423 | their header files or libraries. These macros are warts; they will be
|
---|
2424 | replaced by a more systematic approach, based on the functions they make
|
---|
2425 | available or the environments they provide.
|
---|
2426 |
|
---|
2427 | - Macro: AC_AIX
|
---|
2428 | If on AIX, define `_ALL_SOURCE'. Allows the use of some BSD
|
---|
2429 | functions. Should be called before any macros that run the C
|
---|
2430 | compiler.
|
---|
2431 |
|
---|
2432 | - Macro: AC_DYNIX_SEQ
|
---|
2433 | If on Dynix/PTX (Sequent UNIX), add `-lseq' to output variable
|
---|
2434 | `LIBS'. This macro is obsolete; instead, use `AC_FUNC_GETMNTENT'.
|
---|
2435 |
|
---|
2436 | - Macro: AC_IRIX_SUN
|
---|
2437 | If on IRIX (Silicon Graphics UNIX), add `-lsun' to output variable
|
---|
2438 | `LIBS'. This macro is obsolete. If you were using it to get
|
---|
2439 | `getmntent', use `AC_FUNC_GETMNTENT' instead. If you used it for
|
---|
2440 | the NIS versions of the password and group functions, use
|
---|
2441 | `AC_CHECK_LIB(sun, getpwnam)'.
|
---|
2442 |
|
---|
2443 | - Macro: AC_ISC_POSIX
|
---|
2444 | If on a POSIXized ISC UNIX, define `_POSIX_SOURCE' and add
|
---|
2445 | `-posix' (for the GNU C compiler) or `-Xp' (for other C compilers)
|
---|
2446 | to output variable `CC'. This allows the use of POSIX facilities.
|
---|
2447 | Must be called after `AC_PROG_CC' and before any other macros
|
---|
2448 | that run the C compiler.
|
---|
2449 |
|
---|
2450 | - Macro: AC_MINIX
|
---|
2451 | If on Minix, define `_MINIX' and `_POSIX_SOURCE' and define
|
---|
2452 | `_POSIX_1_SOURCE' to be 2. This allows the use of POSIX
|
---|
2453 | facilities. Should be called before any macros that run the C
|
---|
2454 | compiler.
|
---|
2455 |
|
---|
2456 | - Macro: AC_SCO_INTL
|
---|
2457 | If on SCO UNIX, add `-lintl' to output variable `LIBS'. This
|
---|
2458 | macro is obsolete; instead, use `AC_FUNC_STRFTIME'.
|
---|
2459 |
|
---|
2460 | - Macro: AC_XENIX_DIR
|
---|
2461 | If on Xenix, add `-lx' to output variable `LIBS'. Also, if
|
---|
2462 | `dirent.h' is being used, add `-ldir' to `LIBS'. This macro is
|
---|
2463 | obsolete; use `AC_HEADER_DIRENT' instead.
|
---|
2464 |
|
---|
2465 |
|
---|
2466 | File: autoconf.info, Node: Writing Tests, Next: Results, Prev: Existing Tests, Up: Top
|
---|
2467 |
|
---|
2468 | Writing Tests
|
---|
2469 | *************
|
---|
2470 |
|
---|
2471 | If the existing feature tests don't do something you need, you have
|
---|
2472 | to write new ones. These macros are the building blocks. They provide
|
---|
2473 | ways for other macros to check whether various kinds of features are
|
---|
2474 | available and report the results.
|
---|
2475 |
|
---|
2476 | This chapter contains some suggestions and some of the reasons why
|
---|
2477 | the existing tests are written the way they are. You can also learn a
|
---|
2478 | lot about how to write Autoconf tests by looking at the existing ones.
|
---|
2479 | If something goes wrong in one or more of the Autoconf tests, this
|
---|
2480 | information can help you understand the assumptions behind them, which
|
---|
2481 | might help you figure out how to best solve the problem.
|
---|
2482 |
|
---|
2483 | These macros check the output of the C compiler system. They do not
|
---|
2484 | cache the results of their tests for future use (*note Caching
|
---|
2485 | Results::.), because they don't know enough about the information they
|
---|
2486 | are checking for to generate a cache variable name. They also do not
|
---|
2487 | print any messages, for the same reason. The checks for particular
|
---|
2488 | kinds of C features call these macros and do cache their results and
|
---|
2489 | print messages about what they're checking for.
|
---|
2490 |
|
---|
2491 | When you write a feature test that could be applicable to more than
|
---|
2492 | one software package, the best thing to do is encapsulate it in a new
|
---|
2493 | macro. *Note Writing Macros::, for how to do that.
|
---|
2494 |
|
---|
2495 | * Menu:
|
---|
2496 |
|
---|
2497 | * Examining Declarations:: Detecting header files and declarations.
|
---|
2498 | * Examining Syntax:: Detecting language syntax features.
|
---|
2499 | * Examining Libraries:: Detecting functions and global variables.
|
---|
2500 | * Run Time:: Testing for run-time features.
|
---|
2501 | * Portable Shell:: Shell script portability pitfalls.
|
---|
2502 | * Testing Values and Files:: Checking strings and files.
|
---|
2503 | * Multiple Cases:: Tests for several possible values.
|
---|
2504 | * Language Choice:: Selecting which language to use for testing.
|
---|
2505 |
|
---|
2506 |
|
---|
2507 | File: autoconf.info, Node: Examining Declarations, Next: Examining Syntax, Prev: Writing Tests, Up: Writing Tests
|
---|
2508 |
|
---|
2509 | Examining Declarations
|
---|
2510 | ======================
|
---|
2511 |
|
---|
2512 | The macro `AC_TRY_CPP' is used to check whether particular header
|
---|
2513 | files exist. You can check for one at a time, or more than one if you
|
---|
2514 | need several header files to all exist for some purpose.
|
---|
2515 |
|
---|
2516 | - Macro: AC_TRY_CPP (INCLUDES, [ACTION-IF-TRUE [, ACTION-IF-FALSE]])
|
---|
2517 | INCLUDES is C or C++ `#include' statements and declarations, on
|
---|
2518 | which shell variable, backquote, and backslash substitutions are
|
---|
2519 | performed. (Actually, it can be any C program, but other
|
---|
2520 | statements are probably not useful.) If the preprocessor produces
|
---|
2521 | no error messages while processing it, run shell commands
|
---|
2522 | ACTION-IF-TRUE. Otherwise run shell commands ACTION-IF-FALSE.
|
---|
2523 |
|
---|
2524 | This macro uses `CPPFLAGS', but not `CFLAGS', because `-g', `-O',
|
---|
2525 | etc. are not valid options to many C preprocessors.
|
---|
2526 |
|
---|
2527 | Here is how to find out whether a header file contains a particular
|
---|
2528 | declaration, such as a typedef, a structure, a structure member, or a
|
---|
2529 | function. Use `AC_EGREP_HEADER' instead of running `grep' directly on
|
---|
2530 | the header file; on some systems the symbol might be defined in another
|
---|
2531 | header file that the file you are checking `#include's.
|
---|
2532 |
|
---|
2533 | - Macro: AC_EGREP_HEADER (PATTERN, HEADER-FILE, ACTION-IF-FOUND [,
|
---|
2534 | ACTION-IF-NOT-FOUND])
|
---|
2535 | If the output of running the preprocessor on the system header file
|
---|
2536 | HEADER-FILE matches the `egrep' regular expression PATTERN,
|
---|
2537 | execute shell commands ACTION-IF-FOUND, otherwise execute
|
---|
2538 | ACTION-IF-NOT-FOUND.
|
---|
2539 |
|
---|
2540 | To check for C preprocessor symbols, either defined by header files
|
---|
2541 | or predefined by the C preprocessor, use `AC_EGREP_CPP'. Here is an
|
---|
2542 | example of the latter:
|
---|
2543 |
|
---|
2544 | AC_EGREP_CPP(yes,
|
---|
2545 | [#ifdef _AIX
|
---|
2546 | yes
|
---|
2547 | #endif
|
---|
2548 | ], is_aix=yes, is_aix=no)
|
---|
2549 |
|
---|
2550 | - Macro: AC_EGREP_CPP (PATTERN, PROGRAM, [ACTION-IF-FOUND [,
|
---|
2551 | ACTION-IF-NOT-FOUND]])
|
---|
2552 | PROGRAM is the text of a C or C++ program, on which shell
|
---|
2553 | variable, backquote, and backslash substitutions are performed.
|
---|
2554 | If the output of running the preprocessor on PROGRAM matches the
|
---|
2555 | `egrep' regular expression PATTERN, execute shell commands
|
---|
2556 | ACTION-IF-FOUND, otherwise execute ACTION-IF-NOT-FOUND.
|
---|
2557 |
|
---|
2558 | This macro calls `AC_PROG_CPP' or `AC_PROG_CXXCPP' (depending on
|
---|
2559 | which language is current, *note Language Choice::.), if it hasn't
|
---|
2560 | been called already.
|
---|
2561 |
|
---|
2562 |
|
---|
2563 | File: autoconf.info, Node: Examining Syntax, Next: Examining Libraries, Prev: Examining Declarations, Up: Writing Tests
|
---|
2564 |
|
---|
2565 | Examining Syntax
|
---|
2566 | ================
|
---|
2567 |
|
---|
2568 | To check for a syntax feature of the C, C++ or Fortran 77 compiler,
|
---|
2569 | such as whether it recognizes a certain keyword, use `AC_TRY_COMPILE' to
|
---|
2570 | try to compile a small program that uses that feature. You can also use
|
---|
2571 | it to check for structures and structure members that are not present on
|
---|
2572 | all systems.
|
---|
2573 |
|
---|
2574 | - Macro: AC_TRY_COMPILE (INCLUDES, FUNCTION-BODY, [ACTION-IF-FOUND [,
|
---|
2575 | ACTION-IF-NOT-FOUND]])
|
---|
2576 | Create a C, C++ or Fortran 77 test program (depending on which
|
---|
2577 | language is current, *note Language Choice::.), to see whether a
|
---|
2578 | function whose body consists of FUNCTION-BODY can be compiled.
|
---|
2579 |
|
---|
2580 | For C and C++, INCLUDES is any `#include' statements needed by the
|
---|
2581 | code in FUNCTION-BODY (INCLUDES will be ignored if the currently
|
---|
2582 | selected language is Fortran 77). This macro also uses `CFLAGS'
|
---|
2583 | or `CXXFLAGS' if either C or C++ is the currently selected
|
---|
2584 | language, as well as `CPPFLAGS', when compiling. If Fortran 77 is
|
---|
2585 | the currently selected language then `FFLAGS' will be used when
|
---|
2586 | compiling.
|
---|
2587 |
|
---|
2588 | If the file compiles successfully, run shell commands
|
---|
2589 | ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.
|
---|
2590 |
|
---|
2591 | This macro does not try to link; use `AC_TRY_LINK' if you need to
|
---|
2592 | do that (*note Examining Libraries::.).
|
---|
2593 |
|
---|
2594 |
|
---|
2595 | File: autoconf.info, Node: Examining Libraries, Next: Run Time, Prev: Examining Syntax, Up: Writing Tests
|
---|
2596 |
|
---|
2597 | Examining Libraries
|
---|
2598 | ===================
|
---|
2599 |
|
---|
2600 | To check for a library, a function, or a global variable, Autoconf
|
---|
2601 | `configure' scripts try to compile and link a small program that uses
|
---|
2602 | it. This is unlike Metaconfig, which by default uses `nm' or `ar' on
|
---|
2603 | the C library to try to figure out which functions are available.
|
---|
2604 | Trying to link with the function is usually a more reliable approach
|
---|
2605 | because it avoids dealing with the variations in the options and output
|
---|
2606 | formats of `nm' and `ar' and in the location of the standard libraries.
|
---|
2607 | It also allows configuring for cross-compilation or checking a
|
---|
2608 | function's runtime behavior if needed. On the other hand, it can be
|
---|
2609 | slower than scanning the libraries once.
|
---|
2610 |
|
---|
2611 | A few systems have linkers that do not return a failure exit status
|
---|
2612 | when there are unresolved functions in the link. This bug makes the
|
---|
2613 | configuration scripts produced by Autoconf unusable on those systems.
|
---|
2614 | However, some of them can be given options that make the exit status
|
---|
2615 | correct. This is a problem that Autoconf does not currently handle
|
---|
2616 | automatically. If users encounter this problem, they might be able to
|
---|
2617 | solve it by setting `LDFLAGS' in the environment to pass whatever
|
---|
2618 | options the linker needs (for example, `-Wl,-dn' on MIPS RISC/OS).
|
---|
2619 |
|
---|
2620 | `AC_TRY_LINK' is used to compile test programs to test for functions
|
---|
2621 | and global variables. It is also used by `AC_CHECK_LIB' to check for
|
---|
2622 | libraries (*note Libraries::.), by adding the library being checked for
|
---|
2623 | to `LIBS' temporarily and trying to link a small program.
|
---|
2624 |
|
---|
2625 | - Macro: AC_TRY_LINK (INCLUDES, FUNCTION-BODY, [ACTION-IF-FOUND [,
|
---|
2626 | ACTION-IF-NOT-FOUND]])
|
---|
2627 | Depending on the current language (*note Language Choice::.),
|
---|
2628 | create a test program to see whether a function whose body
|
---|
2629 | consists of FUNCTION-BODY can be compiled and linked.
|
---|
2630 |
|
---|
2631 | For C and C++, INCLUDES is any `#include' statements needed by the
|
---|
2632 | code in FUNCTION-BODY (INCLUDES will be ignored if the currently
|
---|
2633 | selected language is Fortran 77). This macro also uses `CFLAGS'
|
---|
2634 | or `CXXFLAGS' if either C or C++ is the currently selected
|
---|
2635 | language, as well as `CPPFLAGS', when compiling. If Fortran 77 is
|
---|
2636 | the currently selected language then `FFLAGS' will be used when
|
---|
2637 | compiling. However, both `LDFLAGS' and `LIBS' will be used during
|
---|
2638 | linking in all cases.
|
---|
2639 |
|
---|
2640 | If the file compiles and links successfully, run shell commands
|
---|
2641 | ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.
|
---|
2642 |
|
---|
2643 | - Macro: AC_TRY_LINK_FUNC (FUNCTION, [ACTION-IF-FOUND [,
|
---|
2644 | ACTION-IF-NOT-FOUND]])
|
---|
2645 | Depending on the current language (*note Language Choice::.),
|
---|
2646 | create a test program to see whether a program whose body consists
|
---|
2647 | of a prototype of and a call to FUNCTION can be compiled and
|
---|
2648 | linked.
|
---|
2649 |
|
---|
2650 | If the file compiles and links successfully, run shell commands
|
---|
2651 | ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.
|
---|
2652 |
|
---|
2653 | - Macro: AC_TRY_LINK_FUNC (FUNCTION, [ACTION-IF-FOUND [,
|
---|
2654 | ACTION-IF-NOT-FOUND]])
|
---|
2655 | Attempt to compile and link a small program that links with
|
---|
2656 | FUNCTION. If the file compiles and links successfully, run shell
|
---|
2657 | commands ACTION-IF-FOUND, otherwise run ACTION-IF-NOT-FOUND.
|
---|
2658 |
|
---|
2659 | - Macro: AC_COMPILE_CHECK (ECHO-TEXT, INCLUDES, FUNCTION-BODY,
|
---|
2660 | ACTION-IF-FOUND [, ACTION-IF-NOT-FOUND])
|
---|
2661 | This is an obsolete version of `AC_TRY_LINK', with the addition
|
---|
2662 | that it prints `checking for ECHO-TEXT' to the standard output
|
---|
2663 | first, if ECHO-TEXT is non-empty. Use `AC_MSG_CHECKING' and
|
---|
2664 | `AC_MSG_RESULT' instead to print messages (*note Printing
|
---|
2665 | Messages::.).
|
---|
2666 |
|
---|
2667 |
|
---|
2668 | File: autoconf.info, Node: Run Time, Next: Portable Shell, Prev: Examining Libraries, Up: Writing Tests
|
---|
2669 |
|
---|
2670 | Checking Run Time Behavior
|
---|
2671 | ==========================
|
---|
2672 |
|
---|
2673 | Sometimes you need to find out how a system performs at run time,
|
---|
2674 | such as whether a given function has a certain capability or bug. If
|
---|
2675 | you can, make such checks when your program runs instead of when it is
|
---|
2676 | configured. You can check for things like the machine's endianness when
|
---|
2677 | your program initializes itself.
|
---|
2678 |
|
---|
2679 | If you really need to test for a run-time behavior while configuring,
|
---|
2680 | you can write a test program to determine the result, and compile and
|
---|
2681 | run it using `AC_TRY_RUN'. Avoid running test programs if possible,
|
---|
2682 | because using them prevents people from configuring your package for
|
---|
2683 | cross-compiling.
|
---|
2684 |
|
---|
2685 | * Menu:
|
---|
2686 |
|
---|
2687 | * Test Programs:: Running test programs.
|
---|
2688 | * Guidelines:: General rules for writing test programs.
|
---|
2689 | * Test Functions:: Avoiding pitfalls in test programs.
|
---|
2690 |
|
---|
2691 |
|
---|
2692 | File: autoconf.info, Node: Test Programs, Next: Guidelines, Prev: Run Time, Up: Run Time
|
---|
2693 |
|
---|
2694 | Running Test Programs
|
---|
2695 | ---------------------
|
---|
2696 |
|
---|
2697 | Use the following macro if you need to test run-time behavior of the
|
---|
2698 | system while configuring.
|
---|
2699 |
|
---|
2700 | - Macro: AC_TRY_RUN (PROGRAM, [ACTION-IF-TRUE [, ACTION-IF-FALSE [,
|
---|
2701 | ACTION-IF-CROSS-COMPILING]]])
|
---|
2702 | PROGRAM is the text of a C program, on which shell variable and
|
---|
2703 | backquote substitutions are performed. If it compiles and links
|
---|
2704 | successfully and returns an exit status of 0 when executed, run
|
---|
2705 | shell commands ACTION-IF-TRUE. Otherwise run shell commands
|
---|
2706 | ACTION-IF-FALSE; the exit status of the program is available in
|
---|
2707 | the shell variable `$?'. This macro uses `CFLAGS' or `CXXFLAGS',
|
---|
2708 | `CPPFLAGS', `LDFLAGS', and `LIBS' when compiling.
|
---|
2709 |
|
---|
2710 | If the C compiler being used does not produce executables that run
|
---|
2711 | on the system where `configure' is being run, then the test
|
---|
2712 | program is not run. If the optional shell commands
|
---|
2713 | ACTION-IF-CROSS-COMPILING are given, they are run instead.
|
---|
2714 | Otherwise, `configure' prints an error message and exits.
|
---|
2715 |
|
---|
2716 | Try to provide a pessimistic default value to use when
|
---|
2717 | cross-compiling makes run-time tests impossible. You do this by
|
---|
2718 | passing the optional last argument to `AC_TRY_RUN'. `autoconf' prints
|
---|
2719 | a warning message when creating `configure' each time it encounters a
|
---|
2720 | call to `AC_TRY_RUN' with no ACTION-IF-CROSS-COMPILING argument given.
|
---|
2721 | You may ignore the warning, though users will not be able to configure
|
---|
2722 | your package for cross-compiling. A few of the macros distributed with
|
---|
2723 | Autoconf produce this warning message.
|
---|
2724 |
|
---|
2725 | To configure for cross-compiling you can also choose a value for
|
---|
2726 | those parameters based on the canonical system name (*note Manual
|
---|
2727 | Configuration::.). Alternatively, set up a test results cache file with
|
---|
2728 | the correct values for the target system (*note Caching Results::.).
|
---|
2729 |
|
---|
2730 | To provide a default for calls of `AC_TRY_RUN' that are embedded in
|
---|
2731 | other macros, including a few of the ones that come with Autoconf, you
|
---|
2732 | can call `AC_PROG_CC' before running them. Then, if the shell variable
|
---|
2733 | `cross_compiling' is set to `yes', use an alternate method to get the
|
---|
2734 | results instead of calling the macros.
|
---|
2735 |
|
---|
2736 | - Macro: AC_C_CROSS
|
---|
2737 | This macro is obsolete; it does nothing.
|
---|
2738 |
|
---|
2739 |
|
---|
2740 | File: autoconf.info, Node: Guidelines, Next: Test Functions, Prev: Test Programs, Up: Run Time
|
---|
2741 |
|
---|
2742 | Guidelines for Test Programs
|
---|
2743 | ----------------------------
|
---|
2744 |
|
---|
2745 | Test programs should not write anything to the standard output. They
|
---|
2746 | should return 0 if the test succeeds, nonzero otherwise, so that success
|
---|
2747 | can be distinguished easily from a core dump or other failure;
|
---|
2748 | segmentation violations and other failures produce a nonzero exit
|
---|
2749 | status. Test programs should `exit', not `return', from `main',
|
---|
2750 | because on some systems (old Suns, at least) the argument to `return'
|
---|
2751 | in `main' is ignored.
|
---|
2752 |
|
---|
2753 | Test programs can use `#if' or `#ifdef' to check the values of
|
---|
2754 | preprocessor macros defined by tests that have already run. For
|
---|
2755 | example, if you call `AC_HEADER_STDC', then later on in `configure.in'
|
---|
2756 | you can have a test program that includes an ANSI C header file
|
---|
2757 | conditionally:
|
---|
2758 |
|
---|
2759 | #if STDC_HEADERS
|
---|
2760 | # include <stdlib.h>
|
---|
2761 | #endif
|
---|
2762 |
|
---|
2763 | If a test program needs to use or create a data file, give it a name
|
---|
2764 | that starts with `conftest', such as `conftestdata'. The `configure'
|
---|
2765 | script cleans up by running `rm -rf conftest*' after running test
|
---|
2766 | programs and if the script is interrupted.
|
---|
2767 |
|
---|
2768 |
|
---|
2769 | File: autoconf.info, Node: Test Functions, Prev: Guidelines, Up: Run Time
|
---|
2770 |
|
---|
2771 | Test Functions
|
---|
2772 | --------------
|
---|
2773 |
|
---|
2774 | Function declarations in test programs should have a prototype
|
---|
2775 | conditionalized for C++. In practice, though, test programs rarely need
|
---|
2776 | functions that take arguments.
|
---|
2777 |
|
---|
2778 | #ifdef __cplusplus
|
---|
2779 | foo(int i)
|
---|
2780 | #else
|
---|
2781 | foo(i) int i;
|
---|
2782 | #endif
|
---|
2783 |
|
---|
2784 | Functions that test programs declare should also be conditionalized
|
---|
2785 | for C++, which requires `extern "C"' prototypes. Make sure to not
|
---|
2786 | include any header files containing clashing prototypes.
|
---|
2787 |
|
---|
2788 | #ifdef __cplusplus
|
---|
2789 | extern "C" void *malloc(size_t);
|
---|
2790 | #else
|
---|
2791 | char *malloc();
|
---|
2792 | #endif
|
---|
2793 |
|
---|
2794 | If a test program calls a function with invalid parameters (just to
|
---|
2795 | see whether it exists), organize the program to ensure that it never
|
---|
2796 | invokes that function. You can do this by calling it in another
|
---|
2797 | function that is never invoked. You can't do it by putting it after a
|
---|
2798 | call to `exit', because GCC version 2 knows that `exit' never returns
|
---|
2799 | and optimizes out any code that follows it in the same block.
|
---|
2800 |
|
---|
2801 | If you include any header files, make sure to call the functions
|
---|
2802 | relevant to them with the correct number of arguments, even if they are
|
---|
2803 | just 0, to avoid compilation errors due to prototypes. GCC version 2
|
---|
2804 | has internal prototypes for several functions that it automatically
|
---|
2805 | inlines; for example, `memcpy'. To avoid errors when checking for
|
---|
2806 | them, either pass them the correct number of arguments or redeclare them
|
---|
2807 | with a different return type (such as `char').
|
---|
2808 |
|
---|
2809 |
|
---|
2810 | File: autoconf.info, Node: Portable Shell, Next: Testing Values and Files, Prev: Run Time, Up: Writing Tests
|
---|
2811 |
|
---|
2812 | Portable Shell Programming
|
---|
2813 | ==========================
|
---|
2814 |
|
---|
2815 | When writing your own checks, there are some shell script programming
|
---|
2816 | techniques you should avoid in order to make your code portable. The
|
---|
2817 | Bourne shell and upward-compatible shells like Bash and the Korn shell
|
---|
2818 | have evolved over the years, but to prevent trouble, do not take
|
---|
2819 | advantage of features that were added after UNIX version 7, circa 1977.
|
---|
2820 | You should not use shell functions, aliases, negated character classes,
|
---|
2821 | or other features that are not found in all Bourne-compatible shells;
|
---|
2822 | restrict yourself to the lowest common denominator. Even `unset' is
|
---|
2823 | not supported by all shells! Also, include a space after the
|
---|
2824 | exclamation point in interpreter specifications, like this:
|
---|
2825 | #! /usr/bin/perl
|
---|
2826 | If you omit the space before the path, then 4.2BSD based systems
|
---|
2827 | (such as Sequent DYNIX) will ignore the line, because they interpret
|
---|
2828 | `#! /' as a 4-byte magic number.
|
---|
2829 |
|
---|
2830 | The set of external programs you should run in a `configure' script
|
---|
2831 | is fairly small. *Note Utilities in Makefiles: (standards)Utilities in
|
---|
2832 | Makefiles, for the list. This restriction allows users to start out
|
---|
2833 | with a fairly small set of programs and build the rest, avoiding too
|
---|
2834 | many interdependencies between packages.
|
---|
2835 |
|
---|
2836 | Some of these external utilities have a portable subset of features,
|
---|
2837 | as well; for example, don't rely on `ln' having a `-f' option or `cat'
|
---|
2838 | having any options. `sed' scripts should not contain comments or use
|
---|
2839 | branch labels longer than 8 characters. Don't use `grep -s' to
|
---|
2840 | suppress output, because `grep -s' on System V does not suppress
|
---|
2841 | output, only error messages. Instead, redirect the standard output and
|
---|
2842 | standard error (in case the file doesn't exist) of `grep' to
|
---|
2843 | `/dev/null'. Check the exit status of `grep' to determine whether it
|
---|
2844 | found a match.
|
---|
2845 |
|
---|
2846 |
|
---|
2847 | File: autoconf.info, Node: Testing Values and Files, Next: Multiple Cases, Prev: Portable Shell, Up: Writing Tests
|
---|
2848 |
|
---|
2849 | Testing Values and Files
|
---|
2850 | ========================
|
---|
2851 |
|
---|
2852 | `configure' scripts need to test properties of many files and
|
---|
2853 | strings. Here are some portability problems to watch out for when doing
|
---|
2854 | those tests.
|
---|
2855 |
|
---|
2856 | The `test' program is the way to perform many file and string tests.
|
---|
2857 | It is often invoked by the alternate name `[', but using that name in
|
---|
2858 | Autoconf code is asking for trouble since it is an `m4' quote character.
|
---|
2859 |
|
---|
2860 | If you need to make multiple checks using `test', combine them with
|
---|
2861 | the shell operators `&&' and `||' instead of using the `test' operators
|
---|
2862 | `-a' and `-o'. On System V, the precedence of `-a' and `-o' is wrong
|
---|
2863 | relative to the unary operators; consequently, POSIX does not specify
|
---|
2864 | them, so using them is nonportable. If you combine `&&' and `||' in
|
---|
2865 | the same statement, keep in mind that they have equal precedence.
|
---|
2866 |
|
---|
2867 | To enable `configure' scripts to support cross-compilation, they
|
---|
2868 | shouldn't do anything that tests features of the host system instead of
|
---|
2869 | the target system. But occasionally you may find it necessary to check
|
---|
2870 | whether some arbitrary file exists. To do so, use `test -f' or `test
|
---|
2871 | -r'. Do not use `test -x', because 4.3BSD does not have it.
|
---|
2872 |
|
---|
2873 | Another nonportable shell programming construction is
|
---|
2874 | VAR=${VAR:-VALUE}
|
---|
2875 |
|
---|
2876 | The intent is to set VAR to VALUE only if it is not already set, but if
|
---|
2877 | VAR has any value, even the empty string, to leave it alone. Old BSD
|
---|
2878 | shells, including the Ultrix `sh', don't accept the colon, and complain
|
---|
2879 | and die. A portable equivalent is
|
---|
2880 | : ${VAR=VALUE}
|
---|
2881 |
|
---|
2882 |
|
---|
2883 | File: autoconf.info, Node: Multiple Cases, Next: Language Choice, Prev: Testing Values and Files, Up: Writing Tests
|
---|
2884 |
|
---|
2885 | Multiple Cases
|
---|
2886 | ==============
|
---|
2887 |
|
---|
2888 | Some operations are accomplished in several possible ways, depending
|
---|
2889 | on the UNIX variant. Checking for them essentially requires a "case
|
---|
2890 | statement". Autoconf does not directly provide one; however, it is
|
---|
2891 | easy to simulate by using a shell variable to keep track of whether a
|
---|
2892 | way to perform the operation has been found yet.
|
---|
2893 |
|
---|
2894 | Here is an example that uses the shell variable `fstype' to keep
|
---|
2895 | track of whether the remaining cases need to be checked.
|
---|
2896 |
|
---|
2897 | AC_MSG_CHECKING(how to get filesystem type)
|
---|
2898 | fstype=no
|
---|
2899 | # The order of these tests is important.
|
---|
2900 | AC_TRY_CPP([#include <sys/statvfs.h>
|
---|
2901 | #include <sys/fstyp.h>], AC_DEFINE(FSTYPE_STATVFS) fstype=SVR4)
|
---|
2902 | if test $fstype = no; then
|
---|
2903 | AC_TRY_CPP([#include <sys/statfs.h>
|
---|
2904 | #include <sys/fstyp.h>], AC_DEFINE(FSTYPE_USG_STATFS) fstype=SVR3)
|
---|
2905 | fi
|
---|
2906 | if test $fstype = no; then
|
---|
2907 | AC_TRY_CPP([#include <sys/statfs.h>
|
---|
2908 | #include <sys/vmount.h>], AC_DEFINE(FSTYPE_AIX_STATFS) fstype=AIX)
|
---|
2909 | fi
|
---|
2910 | # (more cases omitted here)
|
---|
2911 | AC_MSG_RESULT($fstype)
|
---|
2912 |
|
---|
2913 |
|
---|
2914 | File: autoconf.info, Node: Language Choice, Prev: Multiple Cases, Up: Writing Tests
|
---|
2915 |
|
---|
2916 | Language Choice
|
---|
2917 | ===============
|
---|
2918 |
|
---|
2919 | Packages that use both C and C++ need to test features of both
|
---|
2920 | compilers. Autoconf-generated `configure' scripts check for C features
|
---|
2921 | by default. The following macros determine which language's compiler
|
---|
2922 | is used in tests that follow in `configure.in'.
|
---|
2923 |
|
---|
2924 | - Macro: AC_LANG_C
|
---|
2925 | Do compilation tests using `CC' and `CPP' and use extension `.c'
|
---|
2926 | for test programs. Set the shell variable `cross_compiling' to
|
---|
2927 | the value computed by `AC_PROG_CC' if it has been run, empty
|
---|
2928 | otherwise.
|
---|
2929 |
|
---|
2930 | - Macro: AC_LANG_CPLUSPLUS
|
---|
2931 | Do compilation tests using `CXX' and `CXXCPP' and use extension
|
---|
2932 | `.C' for test programs. Set the shell variable `cross_compiling'
|
---|
2933 | to the value computed by `AC_PROG_CXX' if it has been run, empty
|
---|
2934 | otherwise.
|
---|
2935 |
|
---|
2936 | - Macro: AC_LANG_FORTRAN77
|
---|
2937 | Do compilation tests using `F77' and use extension `.f' for test
|
---|
2938 | programs. Set the shell variable `cross_compiling' to the value
|
---|
2939 | computed by `AC_PROG_F77' if it has been run, empty otherwise.
|
---|
2940 |
|
---|
2941 | - Macro: AC_LANG_SAVE
|
---|
2942 | Remember the current language (as set by `AC_LANG_C',
|
---|
2943 | `AC_LANG_CPLUSPLUS' or `AC_LANG_FORTRAN77') on a stack. Does not
|
---|
2944 | change which language is current. Use this macro and
|
---|
2945 | `AC_LANG_RESTORE' in macros that need to temporarily switch to a
|
---|
2946 | particular language.
|
---|
2947 |
|
---|
2948 | - Macro: AC_LANG_RESTORE
|
---|
2949 | Select the language that is saved on the top of the stack, as set
|
---|
2950 | by `AC_LANG_SAVE', and remove it from the stack. This macro is
|
---|
2951 | equivalent to either `AC_LANG_C', `AC_LANG_CPLUSPLUS' or
|
---|
2952 | `AC_LANG_FORTRAN77', whichever had been run most recently when
|
---|
2953 | `AC_LANG_SAVE' was last called.
|
---|
2954 |
|
---|
2955 | Do not call this macro more times than `AC_LANG_SAVE'.
|
---|
2956 |
|
---|
2957 | - Macro: AC_REQUIRE_CPP
|
---|
2958 | Ensure that whichever preprocessor would currently be used for
|
---|
2959 | tests has been found. Calls `AC_REQUIRE' (*note Prerequisite
|
---|
2960 | Macros::.) with an argument of either `AC_PROG_CPP' or
|
---|
2961 | `AC_PROG_CXXCPP', depending on which language is current.
|
---|
2962 |
|
---|
2963 |
|
---|
2964 | File: autoconf.info, Node: Results, Next: Writing Macros, Prev: Writing Tests, Up: Top
|
---|
2965 |
|
---|
2966 | Results of Tests
|
---|
2967 | ****************
|
---|
2968 |
|
---|
2969 | Once `configure' has determined whether a feature exists, what can
|
---|
2970 | it do to record that information? There are four sorts of things it can
|
---|
2971 | do: define a C preprocessor symbol, set a variable in the output files,
|
---|
2972 | save the result in a cache file for future `configure' runs, and print
|
---|
2973 | a message letting the user know the result of the test.
|
---|
2974 |
|
---|
2975 | * Menu:
|
---|
2976 |
|
---|
2977 | * Defining Symbols:: Defining C preprocessor symbols.
|
---|
2978 | * Setting Output Variables:: Replacing variables in output files.
|
---|
2979 | * Caching Results:: Speeding up subsequent `configure' runs.
|
---|
2980 | * Printing Messages:: Notifying users of progress or problems.
|
---|
2981 |
|
---|
2982 |
|
---|
2983 | File: autoconf.info, Node: Defining Symbols, Next: Setting Output Variables, Prev: Results, Up: Results
|
---|
2984 |
|
---|
2985 | Defining C Preprocessor Symbols
|
---|
2986 | ===============================
|
---|
2987 |
|
---|
2988 | A common action to take in response to a feature test is to define a
|
---|
2989 | C preprocessor symbol indicating the results of the test. That is done
|
---|
2990 | by calling `AC_DEFINE' or `AC_DEFINE_UNQUOTED'.
|
---|
2991 |
|
---|
2992 | By default, `AC_OUTPUT' places the symbols defined by these macros
|
---|
2993 | into the output variable `DEFS', which contains an option
|
---|
2994 | `-DSYMBOL=VALUE' for each symbol defined. Unlike in Autoconf version
|
---|
2995 | 1, there is no variable `DEFS' defined while `configure' is running.
|
---|
2996 | To check whether Autoconf macros have already defined a certain C
|
---|
2997 | preprocessor symbol, test the value of the appropriate cache variable,
|
---|
2998 | as in this example:
|
---|
2999 |
|
---|
3000 | AC_CHECK_FUNC(vprintf, AC_DEFINE(HAVE_VPRINTF))
|
---|
3001 | if test "$ac_cv_func_vprintf" != yes; then
|
---|
3002 | AC_CHECK_FUNC(_doprnt, AC_DEFINE(HAVE_DOPRNT))
|
---|
3003 | fi
|
---|
3004 |
|
---|
3005 | If `AC_CONFIG_HEADER' has been called, then instead of creating
|
---|
3006 | `DEFS', `AC_OUTPUT' creates a header file by substituting the correct
|
---|
3007 | values into `#define' statements in a template file. *Note
|
---|
3008 | Configuration Headers::, for more information about this kind of output.
|
---|
3009 |
|
---|
3010 | - Macro: AC_DEFINE (VARIABLE [, VALUE [, DESCRIPTION]])
|
---|
3011 | Define C preprocessor variable VARIABLE. If VALUE is given, set
|
---|
3012 | VARIABLE to that value (verbatim), otherwise set it to 1. VALUE
|
---|
3013 | should not contain literal newlines, and if you are not using
|
---|
3014 | `AC_CONFIG_HEADER' it should not contain any `#' characters, as
|
---|
3015 | `make' tends to eat them. To use a shell variable (which you need
|
---|
3016 | to do in order to define a value containing the `m4' quote
|
---|
3017 | characters `[' or `]'), use `AC_DEFINE_UNQUOTED' instead.
|
---|
3018 | DESCRIPTION is only useful if you are using `AC_CONFIG_HEADER'.
|
---|
3019 | In this case, DESCRIPTION is put into the generated `config.h.in'
|
---|
3020 | as the comment before the macro define; the macro need not be
|
---|
3021 | mentioned in `acconfig.h'. The following example defines the C
|
---|
3022 | preprocessor variable `EQUATION' to be the string constant `"$a >
|
---|
3023 | $b"':
|
---|
3024 |
|
---|
3025 | AC_DEFINE(EQUATION, "$a > $b")
|
---|
3026 |
|
---|
3027 | - Macro: AC_DEFINE_UNQUOTED (VARIABLE [, VALUE [, DESCRIPTION]])
|
---|
3028 | Like `AC_DEFINE', but three shell expansions are
|
---|
3029 | performed--once--on VARIABLE and VALUE: variable expansion (`$'),
|
---|
3030 | command substitution (``'), and backslash escaping (`\'). Single
|
---|
3031 | and double quote characters in the value have no special meaning.
|
---|
3032 | Use this macro instead of `AC_DEFINE' when VARIABLE or VALUE is a
|
---|
3033 | shell variable. Examples:
|
---|
3034 |
|
---|
3035 | AC_DEFINE_UNQUOTED(config_machfile, "${machfile}")
|
---|
3036 | AC_DEFINE_UNQUOTED(GETGROUPS_T, $ac_cv_type_getgroups)
|
---|
3037 | AC_DEFINE_UNQUOTED(${ac_tr_hdr})
|
---|
3038 |
|
---|
3039 | Due to the syntactical bizarreness of the Bourne shell, do not use
|
---|
3040 | semicolons to separate `AC_DEFINE' or `AC_DEFINE_UNQUOTED' calls from
|
---|
3041 | other macro calls or shell code; that can cause syntax errors in the
|
---|
3042 | resulting `configure' script. Use either spaces or newlines. That is,
|
---|
3043 | do this:
|
---|
3044 |
|
---|
3045 | AC_CHECK_HEADER(elf.h, AC_DEFINE(SVR4) LIBS="$LIBS -lelf")
|
---|
3046 |
|
---|
3047 | or this:
|
---|
3048 |
|
---|
3049 | AC_CHECK_HEADER(elf.h,
|
---|
3050 | AC_DEFINE(SVR4)
|
---|
3051 | LIBS="$LIBS -lelf")
|
---|
3052 |
|
---|
3053 | instead of this:
|
---|
3054 |
|
---|
3055 | AC_CHECK_HEADER(elf.h, AC_DEFINE(SVR4); LIBS="$LIBS -lelf")
|
---|
3056 |
|
---|
3057 |
|
---|
3058 | File: autoconf.info, Node: Setting Output Variables, Next: Caching Results, Prev: Defining Symbols, Up: Results
|
---|
3059 |
|
---|
3060 | Setting Output Variables
|
---|
3061 | ========================
|
---|
3062 |
|
---|
3063 | One way to record the results of tests is to set "output variables",
|
---|
3064 | which are shell variables whose values are substituted into files that
|
---|
3065 | `configure' outputs. The two macros below create new output variables.
|
---|
3066 | *Note Preset Output Variables::, for a list of output variables that
|
---|
3067 | are always available.
|
---|
3068 |
|
---|
3069 | - Macro: AC_SUBST (VARIABLE)
|
---|
3070 | Create an output variable from a shell variable. Make `AC_OUTPUT'
|
---|
3071 | substitute the variable VARIABLE into output files (typically one
|
---|
3072 | or more `Makefile's). This means that `AC_OUTPUT' will replace
|
---|
3073 | instances of `@VARIABLE@' in input files with the value that the
|
---|
3074 | shell variable VARIABLE has when `AC_OUTPUT' is called. The value
|
---|
3075 | of VARIABLE should not contain literal newlines.
|
---|
3076 |
|
---|
3077 | - Macro: AC_SUBST_FILE (VARIABLE)
|
---|
3078 | Another way to create an output variable from a shell variable.
|
---|
3079 | Make `AC_OUTPUT' insert (without substitutions) the contents of
|
---|
3080 | the file named by shell variable VARIABLE into output files. This
|
---|
3081 | means that `AC_OUTPUT' will replace instances of `@VARIABLE@' in
|
---|
3082 | output files (such as `Makefile.in') with the contents of the file
|
---|
3083 | that the shell variable VARIABLE names when `AC_OUTPUT' is called.
|
---|
3084 | Set the variable to `/dev/null' for cases that do not have a file
|
---|
3085 | to insert.
|
---|
3086 |
|
---|
3087 | This macro is useful for inserting `Makefile' fragments containing
|
---|
3088 | special dependencies or other `make' directives for particular host
|
---|
3089 | or target types into `Makefile's. For example, `configure.in'
|
---|
3090 | could contain:
|
---|
3091 |
|
---|
3092 | AC_SUBST_FILE(host_frag)dnl
|
---|
3093 | host_frag=$srcdir/conf/sun4.mh
|
---|
3094 |
|
---|
3095 | and then a `Makefile.in' could contain:
|
---|
3096 |
|
---|
3097 | @host_frag@
|
---|
3098 |
|
---|
3099 |
|
---|
3100 | File: autoconf.info, Node: Caching Results, Next: Printing Messages, Prev: Setting Output Variables, Up: Results
|
---|
3101 |
|
---|
3102 | Caching Results
|
---|
3103 | ===============
|
---|
3104 |
|
---|
3105 | To avoid checking for the same features repeatedly in various
|
---|
3106 | `configure' scripts (or repeated runs of one script), `configure' saves
|
---|
3107 | the results of many of its checks in a "cache file". If, when a
|
---|
3108 | `configure' script runs, it finds a cache file, it reads from it the
|
---|
3109 | results from previous runs and avoids rerunning those checks. As a
|
---|
3110 | result, `configure' can run much faster than if it had to perform all
|
---|
3111 | of the checks every time.
|
---|
3112 |
|
---|
3113 | - Macro: AC_CACHE_VAL (CACHE-ID, COMMANDS-TO-SET-IT)
|
---|
3114 | Ensure that the results of the check identified by CACHE-ID are
|
---|
3115 | available. If the results of the check were in the cache file
|
---|
3116 | that was read, and `configure' was not given the `--quiet' or
|
---|
3117 | `--silent' option, print a message saying that the result was
|
---|
3118 | cached; otherwise, run the shell commands COMMANDS-TO-SET-IT.
|
---|
3119 | Those commands should have no side effects except for setting the
|
---|
3120 | variable CACHE-ID. In particular, they should not call
|
---|
3121 | `AC_DEFINE'; the code that follows the call to `AC_CACHE_VAL'
|
---|
3122 | should do that, based on the cached value. Also, they should not
|
---|
3123 | print any messages, for example with `AC_MSG_CHECKING'; do that
|
---|
3124 | before calling `AC_CACHE_VAL', so the messages are printed
|
---|
3125 | regardless of whether the results of the check are retrieved from
|
---|
3126 | the cache or determined by running the shell commands. If the
|
---|
3127 | shell commands are run to determine the value, the value will be
|
---|
3128 | saved in the cache file just before `configure' creates its output
|
---|
3129 | files. *Note Cache Variable Names::, for how to choose the name
|
---|
3130 | of the CACHE-ID variable.
|
---|
3131 |
|
---|
3132 | - Macro: AC_CACHE_CHECK (MESSAGE, CACHE-ID, COMMANDS)
|
---|
3133 | A wrapper for `AC_CACHE_VAL' that takes care of printing the
|
---|
3134 | messages. This macro provides a convenient shorthand for the most
|
---|
3135 | common way to use these macros. It calls `AC_MSG_CHECKING' for
|
---|
3136 | MESSAGE, then `AC_CACHE_VAL' with the CACHE-ID and COMMANDS
|
---|
3137 | arguments, and `AC_MSG_RESULT' with CACHE-ID.
|
---|
3138 |
|
---|
3139 | - Macro: AC_CACHE_LOAD
|
---|
3140 | Loads values from existing cache file, or creates a new cache file
|
---|
3141 | if a cache file is not found. Called automatically from `AC_INIT'.
|
---|
3142 |
|
---|
3143 | - Macro: AC_CACHE_SAVE
|
---|
3144 | Flushes all cached values to the cache file. Called automatically
|
---|
3145 | from `AC_OUTPUT', but it can be quite useful to call
|
---|
3146 | `AC_CACHE_SAVE' at key points in configure.in. Doing so
|
---|
3147 | checkpoints the cache in case of an early configure script abort.
|
---|
3148 |
|
---|
3149 | * Menu:
|
---|
3150 |
|
---|
3151 | * Cache Variable Names:: Shell variables used in caches.
|
---|
3152 | * Cache Files:: Files `configure' uses for caching.
|
---|
3153 |
|
---|
3154 |
|
---|
3155 | File: autoconf.info, Node: Cache Variable Names, Next: Cache Files, Prev: Caching Results, Up: Caching Results
|
---|
3156 |
|
---|
3157 | Cache Variable Names
|
---|
3158 | --------------------
|
---|
3159 |
|
---|
3160 | The names of cache variables should have the following format:
|
---|
3161 |
|
---|
3162 | PACKAGE-PREFIX_cv_VALUE-TYPE_SPECIFIC-VALUE[_ADDITIONAL-OPTIONS]
|
---|
3163 |
|
---|
3164 | for example, `ac_cv_header_stat_broken' or
|
---|
3165 | `ac_cv_prog_gcc_traditional'. The parts of the variable name are:
|
---|
3166 |
|
---|
3167 | PACKAGE-PREFIX
|
---|
3168 | An abbreviation for your package or organization; the same prefix
|
---|
3169 | you begin local Autoconf macros with, except lowercase by
|
---|
3170 | convention. For cache values used by the distributed Autoconf
|
---|
3171 | macros, this value is `ac'.
|
---|
3172 |
|
---|
3173 | `_cv_'
|
---|
3174 | Indicates that this shell variable is a cache value.
|
---|
3175 |
|
---|
3176 | VALUE-TYPE
|
---|
3177 | A convention for classifying cache values, to produce a rational
|
---|
3178 | naming system. The values used in Autoconf are listed in *Note
|
---|
3179 | Macro Names::.
|
---|
3180 |
|
---|
3181 | SPECIFIC-VALUE
|
---|
3182 | Which member of the class of cache values this test applies to.
|
---|
3183 | For example, which function (`alloca'), program (`gcc'), or output
|
---|
3184 | variable (`INSTALL').
|
---|
3185 |
|
---|
3186 | ADDITIONAL-OPTIONS
|
---|
3187 | Any particular behavior of the specific member that this test
|
---|
3188 | applies to. For example, `broken' or `set'. This part of the
|
---|
3189 | name may be omitted if it does not apply.
|
---|
3190 |
|
---|
3191 | The values assigned to cache variables may not contain newlines.
|
---|
3192 | Usually, their values will be boolean (`yes' or `no') or the names of
|
---|
3193 | files or functions; so this is not an important restriction.
|
---|
3194 |
|
---|
3195 |
|
---|
3196 | File: autoconf.info, Node: Cache Files, Prev: Cache Variable Names, Up: Caching Results
|
---|
3197 |
|
---|
3198 | Cache Files
|
---|
3199 | -----------
|
---|
3200 |
|
---|
3201 | A cache file is a shell script that caches the results of configure
|
---|
3202 | tests run on one system so they can be shared between configure scripts
|
---|
3203 | and configure runs. It is not useful on other systems. If its contents
|
---|
3204 | are invalid for some reason, the user may delete or edit it.
|
---|
3205 |
|
---|
3206 | By default, configure uses `./config.cache' as the cache file,
|
---|
3207 | creating it if it does not exist already. `configure' accepts the
|
---|
3208 | `--cache-file=FILE' option to use a different cache file; that is what
|
---|
3209 | `configure' does when it calls `configure' scripts in subdirectories,
|
---|
3210 | so they share the cache. *Note Subdirectories::, for information on
|
---|
3211 | configuring subdirectories with the `AC_CONFIG_SUBDIRS' macro.
|
---|
3212 |
|
---|
3213 | Giving `--cache-file=/dev/null' disables caching, for debugging
|
---|
3214 | `configure'. `config.status' only pays attention to the cache file if
|
---|
3215 | it is given the `--recheck' option, which makes it rerun `configure'.
|
---|
3216 | If you are anticipating a long debugging period, you can also disable
|
---|
3217 | cache loading and saving for a `configure' script by redefining the
|
---|
3218 | cache macros at the start of `configure.in':
|
---|
3219 |
|
---|
3220 | define([AC_CACHE_LOAD], )dnl
|
---|
3221 | define([AC_CACHE_SAVE], )dnl
|
---|
3222 | AC_INIT(whatever)
|
---|
3223 | ... rest of configure.in ...
|
---|
3224 |
|
---|
3225 | It is wrong to try to distribute cache files for particular system
|
---|
3226 | types. There is too much room for error in doing that, and too much
|
---|
3227 | administrative overhead in maintaining them. For any features that
|
---|
3228 | can't be guessed automatically, use the standard method of the canonical
|
---|
3229 | system type and linking files (*note Manual Configuration::.).
|
---|
3230 |
|
---|
3231 | The cache file on a particular system will gradually accumulate
|
---|
3232 | whenever someone runs a `configure' script; it will be initially
|
---|
3233 | nonexistent. Running `configure' merges the new cache results with the
|
---|
3234 | existing cache file. The site initialization script can specify a
|
---|
3235 | site-wide cache file to use instead of the default, to make it work
|
---|
3236 | transparently, as long as the same C compiler is used every time (*note
|
---|
3237 | Site Defaults::.).
|
---|
3238 |
|
---|
3239 | If your configure script, or a macro called from configure.in,
|
---|
3240 | happens to abort the configure process, it may be useful to checkpoint
|
---|
3241 | the cache a few times at key points. Doing so will reduce the amount
|
---|
3242 | of time it takes to re-run the configure script with (hopefully) the
|
---|
3243 | error that caused the previous abort corrected.
|
---|
3244 |
|
---|
3245 | ... AC_INIT, etc. ...
|
---|
3246 | dnl checks for programs
|
---|
3247 | AC_PROG_CC
|
---|
3248 | AC_PROG_GCC_TRADITIONAL
|
---|
3249 | ... more program checks ...
|
---|
3250 | AC_CACHE_SAVE
|
---|
3251 |
|
---|
3252 | dnl checks for libraries
|
---|
3253 | AC_CHECK_LIB(nsl, gethostbyname)
|
---|
3254 | AC_CHECK_LIB(socket, connect)
|
---|
3255 | ... more lib checks ...
|
---|
3256 | AC_CACHE_SAVE
|
---|
3257 |
|
---|
3258 | dnl Might abort...
|
---|
3259 | AM_PATH_GTK(1.0.2, , exit 1)
|
---|
3260 | AM_PATH_GTKMM(0.9.5, , exit 1)
|
---|
3261 |
|
---|
3262 |
|
---|
3263 | File: autoconf.info, Node: Printing Messages, Prev: Caching Results, Up: Results
|
---|
3264 |
|
---|
3265 | Printing Messages
|
---|
3266 | =================
|
---|
3267 |
|
---|
3268 | `configure' scripts need to give users running them several kinds of
|
---|
3269 | information. The following macros print messages in ways appropriate
|
---|
3270 | for each kind. The arguments to all of them get enclosed in shell
|
---|
3271 | double quotes, so the shell performs variable and backquote substitution
|
---|
3272 | on them. You can print a message containing a comma by quoting the
|
---|
3273 | message with the `m4' quote characters:
|
---|
3274 |
|
---|
3275 | AC_MSG_RESULT([never mind, I found the BASIC compiler])
|
---|
3276 |
|
---|
3277 | These macros are all wrappers around the `echo' shell command.
|
---|
3278 | `configure' scripts should rarely need to run `echo' directly to print
|
---|
3279 | messages for the user. Using these macros makes it easy to change how
|
---|
3280 | and when each kind of message is printed; such changes need only be
|
---|
3281 | made to the macro definitions, and all of the callers change
|
---|
3282 | automatically.
|
---|
3283 |
|
---|
3284 | - Macro: AC_MSG_CHECKING (FEATURE-DESCRIPTION)
|
---|
3285 | Notify the user that `configure' is checking for a particular
|
---|
3286 | feature. This macro prints a message that starts with `checking '
|
---|
3287 | and ends with `...' and no newline. It must be followed by a call
|
---|
3288 | to `AC_MSG_RESULT' to print the result of the check and the
|
---|
3289 | newline. The FEATURE-DESCRIPTION should be something like
|
---|
3290 | `whether the Fortran compiler accepts C++ comments' or `for c89'.
|
---|
3291 |
|
---|
3292 | This macro prints nothing if `configure' is run with the `--quiet'
|
---|
3293 | or `--silent' option.
|
---|
3294 |
|
---|
3295 | - Macro: AC_MSG_RESULT (RESULT-DESCRIPTION)
|
---|
3296 | Notify the user of the results of a check. RESULT-DESCRIPTION is
|
---|
3297 | almost always the value of the cache variable for the check,
|
---|
3298 | typically `yes', `no', or a file name. This macro should follow a
|
---|
3299 | call to `AC_MSG_CHECKING', and the RESULT-DESCRIPTION should be
|
---|
3300 | the completion of the message printed by the call to
|
---|
3301 | `AC_MSG_CHECKING'.
|
---|
3302 |
|
---|
3303 | This macro prints nothing if `configure' is run with the `--quiet'
|
---|
3304 | or `--silent' option.
|
---|
3305 |
|
---|
3306 | - Macro: AC_MSG_ERROR (ERROR-DESCRIPTION)
|
---|
3307 | Notify the user of an error that prevents `configure' from
|
---|
3308 | completing. This macro prints an error message on the standard
|
---|
3309 | error output and exits `configure' with a nonzero status.
|
---|
3310 | ERROR-DESCRIPTION should be something like `invalid value $HOME
|
---|
3311 | for \$HOME'.
|
---|
3312 |
|
---|
3313 | - Macro: AC_MSG_WARN (PROBLEM-DESCRIPTION)
|
---|
3314 | Notify the `configure' user of a possible problem. This macro
|
---|
3315 | prints the message on the standard error output; `configure'
|
---|
3316 | continues running afterward, so macros that call `AC_MSG_WARN'
|
---|
3317 | should provide a default (back-up) behavior for the situations
|
---|
3318 | they warn about. PROBLEM-DESCRIPTION should be something like `ln
|
---|
3319 | -s seems to make hard links'.
|
---|
3320 |
|
---|
3321 | The following two macros are an obsolete alternative to
|
---|
3322 | `AC_MSG_CHECKING' and `AC_MSG_RESULT'.
|
---|
3323 |
|
---|
3324 | - Macro: AC_CHECKING (FEATURE-DESCRIPTION)
|
---|
3325 | This macro is similar to `AC_MSG_CHECKING', except that it prints a
|
---|
3326 | newline after the FEATURE-DESCRIPTION. It is useful mainly to
|
---|
3327 | print a general description of the overall purpose of a group of
|
---|
3328 | feature checks, e.g.,
|
---|
3329 |
|
---|
3330 | AC_CHECKING(if stack overflow is detectable)
|
---|
3331 |
|
---|
3332 | - Macro: AC_VERBOSE (RESULT-DESCRIPTION)
|
---|
3333 | This macro is similar to `AC_MSG_RESULT', except that it is meant
|
---|
3334 | to follow a call to `AC_CHECKING' instead of `AC_MSG_CHECKING'; it
|
---|
3335 | starts the message it prints with a tab. It is considered
|
---|
3336 | obsolete.
|
---|
3337 |
|
---|
3338 |
|
---|
3339 | File: autoconf.info, Node: Writing Macros, Next: Manual Configuration, Prev: Results, Up: Top
|
---|
3340 |
|
---|
3341 | Writing Macros
|
---|
3342 | **************
|
---|
3343 |
|
---|
3344 | When you write a feature test that could be applicable to more than
|
---|
3345 | one software package, the best thing to do is encapsulate it in a new
|
---|
3346 | macro. Here are some instructions and guidelines for writing Autoconf
|
---|
3347 | macros.
|
---|
3348 |
|
---|
3349 | * Menu:
|
---|
3350 |
|
---|
3351 | * Macro Definitions:: Basic format of an Autoconf macro.
|
---|
3352 | * Macro Names:: What to call your new macros.
|
---|
3353 | * Quoting:: Protecting macros from unwanted expansion.
|
---|
3354 | * Dependencies Between Macros:: What to do when macros depend on other macros.
|
---|
3355 |
|
---|
3356 |
|
---|
3357 | File: autoconf.info, Node: Macro Definitions, Next: Macro Names, Prev: Writing Macros, Up: Writing Macros
|
---|
3358 |
|
---|
3359 | Macro Definitions
|
---|
3360 | =================
|
---|
3361 |
|
---|
3362 | Autoconf macros are defined using the `AC_DEFUN' macro, which is
|
---|
3363 | similar to the `m4' builtin `define' macro. In addition to defining a
|
---|
3364 | macro, `AC_DEFUN' adds to it some code which is used to constrain the
|
---|
3365 | order in which macros are called (*note Prerequisite Macros::.).
|
---|
3366 |
|
---|
3367 | An Autoconf macro definition looks like this:
|
---|
3368 |
|
---|
3369 | AC_DEFUN(MACRO-NAME, [MACRO-BODY])
|
---|
3370 |
|
---|
3371 | The square brackets here do not indicate optional text: they should
|
---|
3372 | literally be present in the macro definition to avoid macro expansion
|
---|
3373 | problems (*note Quoting::.). You can refer to any arguments passed to
|
---|
3374 | the macro as `$1', `$2', etc.
|
---|
3375 |
|
---|
3376 | To introduce comments in `m4', use the `m4' builtin `dnl'; it causes
|
---|
3377 | `m4' to discard the text through the next newline. It is not needed
|
---|
3378 | between macro definitions in `acsite.m4' and `aclocal.m4', because all
|
---|
3379 | output is discarded until `AC_INIT' is called.
|
---|
3380 |
|
---|
3381 | *Note How to define new macros: (m4.info)Definitions, for more
|
---|
3382 | complete information on writing `m4' macros.
|
---|
3383 |
|
---|
3384 |
|
---|
3385 | File: autoconf.info, Node: Macro Names, Next: Quoting, Prev: Macro Definitions, Up: Writing Macros
|
---|
3386 |
|
---|
3387 | Macro Names
|
---|
3388 | ===========
|
---|
3389 |
|
---|
3390 | All of the Autoconf macros have all-uppercase names starting with
|
---|
3391 | `AC_' to prevent them from accidentally conflicting with other text.
|
---|
3392 | All shell variables that they use for internal purposes have
|
---|
3393 | mostly-lowercase names starting with `ac_'. To ensure that your macros
|
---|
3394 | don't conflict with present or future Autoconf macros, you should
|
---|
3395 | prefix your own macro names and any shell variables they use with some
|
---|
3396 | other sequence. Possibilities include your initials, or an abbreviation
|
---|
3397 | for the name of your organization or software package.
|
---|
3398 |
|
---|
3399 | Most of the Autoconf macros' names follow a structured naming
|
---|
3400 | convention that indicates the kind of feature check by the name. The
|
---|
3401 | macro names consist of several words, separated by underscores, going
|
---|
3402 | from most general to most specific. The names of their cache
|
---|
3403 | variables use the same convention (*note Cache Variable Names::., for
|
---|
3404 | more information on them).
|
---|
3405 |
|
---|
3406 | The first word of the name after `AC_' usually tells the category of
|
---|
3407 | feature being tested. Here are the categories used in Autoconf for
|
---|
3408 | specific test macros, the kind of macro that you are more likely to
|
---|
3409 | write. They are also used for cache variables, in all-lowercase. Use
|
---|
3410 | them where applicable; where they're not, invent your own categories.
|
---|
3411 |
|
---|
3412 | `C'
|
---|
3413 | C language builtin features.
|
---|
3414 |
|
---|
3415 | `DECL'
|
---|
3416 | Declarations of C variables in header files.
|
---|
3417 |
|
---|
3418 | `FUNC'
|
---|
3419 | Functions in libraries.
|
---|
3420 |
|
---|
3421 | `GROUP'
|
---|
3422 | UNIX group owners of files.
|
---|
3423 |
|
---|
3424 | `HEADER'
|
---|
3425 | Header files.
|
---|
3426 |
|
---|
3427 | `LIB'
|
---|
3428 | C libraries.
|
---|
3429 |
|
---|
3430 | `PATH'
|
---|
3431 | The full path names to files, including programs.
|
---|
3432 |
|
---|
3433 | `PROG'
|
---|
3434 | The base names of programs.
|
---|
3435 |
|
---|
3436 | `STRUCT'
|
---|
3437 | Definitions of C structures in header files.
|
---|
3438 |
|
---|
3439 | `SYS'
|
---|
3440 | Operating system features.
|
---|
3441 |
|
---|
3442 | `TYPE'
|
---|
3443 | C builtin or declared types.
|
---|
3444 |
|
---|
3445 | `VAR'
|
---|
3446 | C variables in libraries.
|
---|
3447 |
|
---|
3448 | After the category comes the name of the particular feature being
|
---|
3449 | tested. Any further words in the macro name indicate particular aspects
|
---|
3450 | of the feature. For example, `AC_FUNC_UTIME_NULL' checks the behavior
|
---|
3451 | of the `utime' function when called with a `NULL' pointer.
|
---|
3452 |
|
---|
3453 | A macro that is an internal subroutine of another macro should have a
|
---|
3454 | name that starts with the name of that other macro, followed by one or
|
---|
3455 | more words saying what the internal macro does. For example,
|
---|
3456 | `AC_PATH_X' has internal macros `AC_PATH_X_XMKMF' and
|
---|
3457 | `AC_PATH_X_DIRECT'.
|
---|
3458 |
|
---|
3459 |
|
---|
3460 | File: autoconf.info, Node: Quoting, Next: Dependencies Between Macros, Prev: Macro Names, Up: Writing Macros
|
---|
3461 |
|
---|
3462 | Quoting
|
---|
3463 | =======
|
---|
3464 |
|
---|
3465 | Macros that are called by other macros are evaluated by `m4' several
|
---|
3466 | times; each evaluation might require another layer of quotes to prevent
|
---|
3467 | unwanted expansions of macros or `m4' builtins, such as `define' and
|
---|
3468 | `$1'. Quotes are also required around macro arguments that contain
|
---|
3469 | commas, since commas separate the arguments from each other. It's a
|
---|
3470 | good idea to quote any macro arguments that contain newlines or calls
|
---|
3471 | to other macros, as well.
|
---|
3472 |
|
---|
3473 | Autoconf changes the `m4' quote characters from the default ``' and
|
---|
3474 | `'' to `[' and `]', because many of the macros use ``' and `'',
|
---|
3475 | mismatched. However, in a few places the macros need to use brackets
|
---|
3476 | (usually in C program text or regular expressions). In those places,
|
---|
3477 | they use the `m4' builtin command `changequote' to temporarily change
|
---|
3478 | the quote characters to `<<' and `>>'. (Sometimes, if they don't need
|
---|
3479 | to quote anything, they disable quoting entirely instead by setting the
|
---|
3480 | quote characters to empty strings.) Here is an example:
|
---|
3481 |
|
---|
3482 | AC_TRY_LINK(
|
---|
3483 | changequote(<<, >>)dnl
|
---|
3484 | <<#include <time.h>
|
---|
3485 | #ifndef tzname /* For SGI. */
|
---|
3486 | extern char *tzname[]; /* RS6000 and others reject char **tzname. */
|
---|
3487 | #endif>>,
|
---|
3488 | changequote([, ])dnl
|
---|
3489 | [atoi(*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)
|
---|
3490 |
|
---|
3491 | When you create a `configure' script using newly written macros,
|
---|
3492 | examine it carefully to check whether you need to add more quotes in
|
---|
3493 | your macros. If one or more words have disappeared in the `m4' output,
|
---|
3494 | you need more quotes. When in doubt, quote.
|
---|
3495 |
|
---|
3496 | However, it's also possible to put on too many layers of quotes. If
|
---|
3497 | this happens, the resulting `configure' script will contain unexpanded
|
---|
3498 | macros. The `autoconf' program checks for this problem by doing `grep
|
---|
3499 | AC_ configure'.
|
---|
3500 |
|
---|
3501 |
|
---|
3502 | File: autoconf.info, Node: Dependencies Between Macros, Prev: Quoting, Up: Writing Macros
|
---|
3503 |
|
---|
3504 | Dependencies Between Macros
|
---|
3505 | ===========================
|
---|
3506 |
|
---|
3507 | Some Autoconf macros depend on other macros having been called first
|
---|
3508 | in order to work correctly. Autoconf provides a way to ensure that
|
---|
3509 | certain macros are called if needed and a way to warn the user if
|
---|
3510 | macros are called in an order that might cause incorrect operation.
|
---|
3511 |
|
---|
3512 | * Menu:
|
---|
3513 |
|
---|
3514 | * Prerequisite Macros:: Ensuring required information.
|
---|
3515 | * Suggested Ordering:: Warning about possible ordering problems.
|
---|
3516 | * Obsolete Macros:: Warning about old ways of doing things.
|
---|
3517 |
|
---|
3518 |
|
---|
3519 | File: autoconf.info, Node: Prerequisite Macros, Next: Suggested Ordering, Prev: Dependencies Between Macros, Up: Dependencies Between Macros
|
---|
3520 |
|
---|
3521 | Prerequisite Macros
|
---|
3522 | -------------------
|
---|
3523 |
|
---|
3524 | A macro that you write might need to use values that have previously
|
---|
3525 | been computed by other macros. For example, `AC_DECL_YYTEXT' examines
|
---|
3526 | the output of `flex' or `lex', so it depends on `AC_PROG_LEX' having
|
---|
3527 | been called first to set the shell variable `LEX'.
|
---|
3528 |
|
---|
3529 | Rather than forcing the user of the macros to keep track of the
|
---|
3530 | dependencies between them, you can use the `AC_REQUIRE' macro to do it
|
---|
3531 | automatically. `AC_REQUIRE' can ensure that a macro is only called if
|
---|
3532 | it is needed, and only called once.
|
---|
3533 |
|
---|
3534 | - Macro: AC_REQUIRE (MACRO-NAME)
|
---|
3535 | If the `m4' macro MACRO-NAME has not already been called, call it
|
---|
3536 | (without any arguments). Make sure to quote MACRO-NAME with
|
---|
3537 | square brackets. MACRO-NAME must have been defined using
|
---|
3538 | `AC_DEFUN' or else contain a call to `AC_PROVIDE' to indicate that
|
---|
3539 | it has been called.
|
---|
3540 |
|
---|
3541 | An alternative to using `AC_DEFUN' is to use `define' and call
|
---|
3542 | `AC_PROVIDE'. Because this technique does not prevent nested messages,
|
---|
3543 | it is considered obsolete.
|
---|
3544 |
|
---|
3545 | - Macro: AC_PROVIDE (THIS-MACRO-NAME)
|
---|
3546 | Record the fact that THIS-MACRO-NAME has been called.
|
---|
3547 | THIS-MACRO-NAME should be the name of the macro that is calling
|
---|
3548 | `AC_PROVIDE'. An easy way to get it is from the `m4' builtin
|
---|
3549 | variable `$0', like this:
|
---|
3550 |
|
---|
3551 | AC_PROVIDE([$0])
|
---|
3552 |
|
---|
3553 |
|
---|
3554 | File: autoconf.info, Node: Suggested Ordering, Next: Obsolete Macros, Prev: Prerequisite Macros, Up: Dependencies Between Macros
|
---|
3555 |
|
---|
3556 | Suggested Ordering
|
---|
3557 | ------------------
|
---|
3558 |
|
---|
3559 | Some macros should be run before another macro if both are called,
|
---|
3560 | but neither *requires* that the other be called. For example, a macro
|
---|
3561 | that changes the behavior of the C compiler should be called before any
|
---|
3562 | macros that run the C compiler. Many of these dependencies are noted in
|
---|
3563 | the documentation.
|
---|
3564 |
|
---|
3565 | Autoconf provides the `AC_BEFORE' macro to warn users when macros
|
---|
3566 | with this kind of dependency appear out of order in a `configure.in'
|
---|
3567 | file. The warning occurs when creating `configure' from
|
---|
3568 | `configure.in', not when running `configure'. For example,
|
---|
3569 | `AC_PROG_CPP' checks whether the C compiler can run the C preprocessor
|
---|
3570 | when given the `-E' option. It should therefore be called after any
|
---|
3571 | macros that change which C compiler is being used, such as
|
---|
3572 | `AC_PROG_CC'. So `AC_PROG_CC' contains:
|
---|
3573 |
|
---|
3574 | AC_BEFORE([$0], [AC_PROG_CPP])dnl
|
---|
3575 |
|
---|
3576 | This warns the user if a call to `AC_PROG_CPP' has already occurred
|
---|
3577 | when `AC_PROG_CC' is called.
|
---|
3578 |
|
---|
3579 | - Macro: AC_BEFORE (THIS-MACRO-NAME, CALLED-MACRO-NAME)
|
---|
3580 | Make `m4' print a warning message on the standard error output if
|
---|
3581 | CALLED-MACRO-NAME has already been called. THIS-MACRO-NAME should
|
---|
3582 | be the name of the macro that is calling `AC_BEFORE'. The macro
|
---|
3583 | CALLED-MACRO-NAME must have been defined using `AC_DEFUN' or else
|
---|
3584 | contain a call to `AC_PROVIDE' to indicate that it has been called.
|
---|
3585 |
|
---|
3586 |
|
---|
3587 | File: autoconf.info, Node: Obsolete Macros, Prev: Suggested Ordering, Up: Dependencies Between Macros
|
---|
3588 |
|
---|
3589 | Obsolete Macros
|
---|
3590 | ---------------
|
---|
3591 |
|
---|
3592 | Configuration and portability technology has evolved over the years.
|
---|
3593 | Often better ways of solving a particular problem are developed, or
|
---|
3594 | ad-hoc approaches are systematized. This process has occurred in many
|
---|
3595 | parts of Autoconf. One result is that some of the macros are now
|
---|
3596 | considered "obsolete"; they still work, but are no longer considered
|
---|
3597 | the best thing to do. Autoconf provides the `AC_OBSOLETE' macro to
|
---|
3598 | warn users producing `configure' scripts when they use obsolete macros,
|
---|
3599 | to encourage them to modernize. A sample call is:
|
---|
3600 |
|
---|
3601 | AC_OBSOLETE([$0], [; use AC_CHECK_HEADERS(unistd.h) instead])dnl
|
---|
3602 |
|
---|
3603 | - Macro: AC_OBSOLETE (THIS-MACRO-NAME [, SUGGESTION])
|
---|
3604 | Make `m4' print a message on the standard error output warning that
|
---|
3605 | THIS-MACRO-NAME is obsolete, and giving the file and line number
|
---|
3606 | where it was called. THIS-MACRO-NAME should be the name of the
|
---|
3607 | macro that is calling `AC_OBSOLETE'. If SUGGESTION is given, it
|
---|
3608 | is printed at the end of the warning message; for example, it can
|
---|
3609 | be a suggestion for what to use instead of THIS-MACRO-NAME.
|
---|
3610 |
|
---|
3611 |
|
---|
3612 | File: autoconf.info, Node: Manual Configuration, Next: Site Configuration, Prev: Writing Macros, Up: Top
|
---|
3613 |
|
---|
3614 | Manual Configuration
|
---|
3615 | ********************
|
---|
3616 |
|
---|
3617 | A few kinds of features can't be guessed automatically by running
|
---|
3618 | test programs. For example, the details of the object file format, or
|
---|
3619 | special options that need to be passed to the compiler or linker. You
|
---|
3620 | can check for such features using ad-hoc means, such as having
|
---|
3621 | `configure' check the output of the `uname' program, or looking for
|
---|
3622 | libraries that are unique to particular systems. However, Autoconf
|
---|
3623 | provides a uniform method for handling unguessable features.
|
---|
3624 |
|
---|
3625 | * Menu:
|
---|
3626 |
|
---|
3627 | * Specifying Names:: Specifying the system type.
|
---|
3628 | * Canonicalizing:: Getting the canonical system type.
|
---|
3629 | * System Type Variables:: Variables containing the system type.
|
---|
3630 | * Using System Type:: What to do with the system type.
|
---|
3631 |
|
---|
3632 |
|
---|
3633 | File: autoconf.info, Node: Specifying Names, Next: Canonicalizing, Prev: Manual Configuration, Up: Manual Configuration
|
---|
3634 |
|
---|
3635 | Specifying the System Type
|
---|
3636 | ==========================
|
---|
3637 |
|
---|
3638 | Like other GNU `configure' scripts, Autoconf-generated `configure'
|
---|
3639 | scripts can make decisions based on a canonical name for the system
|
---|
3640 | type, which has the form:
|
---|
3641 |
|
---|
3642 | CPU-COMPANY-SYSTEM
|
---|
3643 |
|
---|
3644 | `configure' can usually guess the canonical name for the type of
|
---|
3645 | system it's running on. To do so it runs a script called
|
---|
3646 | `config.guess', which derives the name using the `uname' command or
|
---|
3647 | symbols predefined by the C preprocessor.
|
---|
3648 |
|
---|
3649 | Alternately, the user can specify the system type with command line
|
---|
3650 | arguments to `configure'. Doing so is necessary when cross-compiling.
|
---|
3651 | In the most complex case of cross-compiling, three system types are
|
---|
3652 | involved. The options to specify them are:
|
---|
3653 |
|
---|
3654 | `--build=BUILD-TYPE'
|
---|
3655 | the type of system on which the package is being configured and
|
---|
3656 | compiled (rarely needed);
|
---|
3657 |
|
---|
3658 | `--host=HOST-TYPE'
|
---|
3659 | the type of system on which the package will run;
|
---|
3660 |
|
---|
3661 | `--target=TARGET-TYPE'
|
---|
3662 | the type of system for which any compiler tools in the package will
|
---|
3663 | produce code.
|
---|
3664 |
|
---|
3665 | If the user gives `configure' a non-option argument, it is used as the
|
---|
3666 | default for the host, target, and build system types if the user does
|
---|
3667 | not specify them explicitly with options. The target and build types
|
---|
3668 | default to the host type if it is given and they are not. If you are
|
---|
3669 | cross-compiling, you still have to specify the names of the cross-tools
|
---|
3670 | you use, in particular the C compiler, on the `configure' command line,
|
---|
3671 | e.g.,
|
---|
3672 |
|
---|
3673 | CC=m68k-coff-gcc configure --target=m68k-coff
|
---|
3674 |
|
---|
3675 | `configure' recognizes short aliases for many system types; for
|
---|
3676 | example, `decstation' can be given on the command line instead of
|
---|
3677 | `mips-dec-ultrix4.2'. `configure' runs a script called `config.sub' to
|
---|
3678 | canonicalize system type aliases.
|
---|
3679 |
|
---|
3680 |
|
---|
3681 | File: autoconf.info, Node: Canonicalizing, Next: System Type Variables, Prev: Specifying Names, Up: Manual Configuration
|
---|
3682 |
|
---|
3683 | Getting the Canonical System Type
|
---|
3684 | =================================
|
---|
3685 |
|
---|
3686 | The following macros make the system type available to `configure'
|
---|
3687 | scripts. They run the shell script `config.guess' to determine any
|
---|
3688 | values for the host, target, and build types that they need and the user
|
---|
3689 | did not specify on the command line. They run `config.sub' to
|
---|
3690 | canonicalize any aliases the user gave. If you use these macros, you
|
---|
3691 | must distribute those two shell scripts along with your source code.
|
---|
3692 | *Note Output::, for information about the `AC_CONFIG_AUX_DIR' macro
|
---|
3693 | which you can use to control which directory `configure' looks for
|
---|
3694 | those scripts in. If you do not use either of these macros,
|
---|
3695 | `configure' ignores any `--host', `--target', and `--build' options
|
---|
3696 | given to it.
|
---|
3697 |
|
---|
3698 | - Macro: AC_CANONICAL_SYSTEM
|
---|
3699 | Determine the system type and set output variables to the names of
|
---|
3700 | the canonical system types. *Note System Type Variables::, for
|
---|
3701 | details about the variables this macro sets.
|
---|
3702 |
|
---|
3703 | - Macro: AC_CANONICAL_HOST
|
---|
3704 | Perform only the subset of `AC_CANONICAL_SYSTEM' relevant to the
|
---|
3705 | host type. This is all that is needed for programs that are not
|
---|
3706 | part of a compiler toolchain.
|
---|
3707 |
|
---|
3708 | - Macro: AC_VALIDATE_CACHED_SYSTEM_TUPLE (CMD)
|
---|
3709 | If the cache file is inconsistent with the current host, target
|
---|
3710 | and build system types, execute CMD or print a default error
|
---|
3711 | message.
|
---|
3712 |
|
---|
3713 |
|
---|
3714 | File: autoconf.info, Node: System Type Variables, Next: Using System Type, Prev: Canonicalizing, Up: Manual Configuration
|
---|
3715 |
|
---|
3716 | System Type Variables
|
---|
3717 | =====================
|
---|
3718 |
|
---|
3719 | After calling `AC_CANONICAL_SYSTEM', the following output variables
|
---|
3720 | contain the system type information. After `AC_CANONICAL_HOST', only
|
---|
3721 | the `host' variables below are set.
|
---|
3722 |
|
---|
3723 | ``build', `host', `target''
|
---|
3724 | the canonical system names;
|
---|
3725 |
|
---|
3726 | ``build_alias', `host_alias', `target_alias''
|
---|
3727 | the names the user specified, or the canonical names if
|
---|
3728 | `config.guess' was used;
|
---|
3729 |
|
---|
3730 | ``build_cpu', `build_vendor', `build_os''
|
---|
3731 | ``host_cpu', `host_vendor', `host_os''
|
---|
3732 | ``target_cpu', `target_vendor', `target_os''
|
---|
3733 | the individual parts of the canonical names (for convenience).
|
---|
3734 |
|
---|
3735 |
|
---|
3736 | File: autoconf.info, Node: Using System Type, Prev: System Type Variables, Up: Manual Configuration
|
---|
3737 |
|
---|
3738 | Using the System Type
|
---|
3739 | =====================
|
---|
3740 |
|
---|
3741 | How do you use a canonical system type? Usually, you use it in one
|
---|
3742 | or more `case' statements in `configure.in' to select system-specific C
|
---|
3743 | files. Then link those files, which have names based on the system
|
---|
3744 | name, to generic names, such as `host.h' or `target.c'. The `case'
|
---|
3745 | statement patterns can use shell wildcards to group several cases
|
---|
3746 | together, like in this fragment:
|
---|
3747 |
|
---|
3748 | case "$target" in
|
---|
3749 | i386-*-mach* | i386-*-gnu*) obj_format=aout emulation=mach bfd_gas=yes ;;
|
---|
3750 | i960-*-bout) obj_format=bout ;;
|
---|
3751 | esac
|
---|
3752 |
|
---|
3753 | - Macro: AC_LINK_FILES (SOURCE..., DEST...)
|
---|
3754 | Make `AC_OUTPUT' link each of the existing files SOURCE to the
|
---|
3755 | corresponding link name DEST. Makes a symbolic link if possible,
|
---|
3756 | otherwise a hard link. The DEST and SOURCE names should be
|
---|
3757 | relative to the top level source or build directory. This macro
|
---|
3758 | may be called multiple times.
|
---|
3759 |
|
---|
3760 | For example, this call:
|
---|
3761 |
|
---|
3762 | AC_LINK_FILES(config/${machine}.h config/${obj_format}.h, host.h object.h)
|
---|
3763 |
|
---|
3764 | creates in the current directory `host.h', which is a link to
|
---|
3765 | `SRCDIR/config/${machine}.h', and `object.h', which is a link to
|
---|
3766 | `SRCDIR/config/${obj_format}.h'.
|
---|
3767 |
|
---|
3768 | You can also use the host system type to find cross-compilation
|
---|
3769 | tools. *Note Generic Programs::, for information about the
|
---|
3770 | `AC_CHECK_TOOL' macro which does that.
|
---|
3771 |
|
---|
3772 |
|
---|
3773 | File: autoconf.info, Node: Site Configuration, Next: Invoking configure, Prev: Manual Configuration, Up: Top
|
---|
3774 |
|
---|
3775 | Site Configuration
|
---|
3776 | ******************
|
---|
3777 |
|
---|
3778 | `configure' scripts support several kinds of local configuration
|
---|
3779 | decisions. There are ways for users to specify where external software
|
---|
3780 | packages are, include or exclude optional features, install programs
|
---|
3781 | under modified names, and set default values for `configure' options.
|
---|
3782 |
|
---|
3783 | * Menu:
|
---|
3784 |
|
---|
3785 | * External Software:: Working with other optional software.
|
---|
3786 | * Package Options:: Selecting optional features.
|
---|
3787 | * Site Details:: Configuring site details.
|
---|
3788 | * Transforming Names:: Changing program names when installing.
|
---|
3789 | * Site Defaults:: Giving `configure' local defaults.
|
---|
3790 |
|
---|
3791 |
|
---|
3792 | File: autoconf.info, Node: External Software, Next: Package Options, Prev: Site Configuration, Up: Site Configuration
|
---|
3793 |
|
---|
3794 | Working With External Software
|
---|
3795 | ==============================
|
---|
3796 |
|
---|
3797 | Some packages require, or can optionally use, other software packages
|
---|
3798 | which are already installed. The user can give `configure' command
|
---|
3799 | line options to specify which such external software to use. The
|
---|
3800 | options have one of these forms:
|
---|
3801 |
|
---|
3802 | --with-PACKAGE[=ARG]
|
---|
3803 | --without-PACKAGE
|
---|
3804 |
|
---|
3805 | For example, `--with-gnu-ld' means work with the GNU linker instead
|
---|
3806 | of some other linker. `--with-x' means work with The X Window System.
|
---|
3807 |
|
---|
3808 | The user can give an argument by following the package name with `='
|
---|
3809 | and the argument. Giving an argument of `no' is for packages that are
|
---|
3810 | used by default; it says to *not* use the package. An argument that is
|
---|
3811 | neither `yes' nor `no' could include a name or number of a version of
|
---|
3812 | the other package, to specify more precisely which other package this
|
---|
3813 | program is supposed to work with. If no argument is given, it defaults
|
---|
3814 | to `yes'. `--without-PACKAGE' is equivalent to `--with-PACKAGE=no'.
|
---|
3815 |
|
---|
3816 | `configure' scripts do not complain about `--with-PACKAGE' options
|
---|
3817 | that they do not support. This behavior permits configuring a source
|
---|
3818 | tree containing multiple packages with a top-level `configure' script
|
---|
3819 | when the packages support different options, without spurious error
|
---|
3820 | messages about options that some of the packages support. An
|
---|
3821 | unfortunate side effect is that option spelling errors are not
|
---|
3822 | diagnosed. No better approach to this problem has been suggested so
|
---|
3823 | far.
|
---|
3824 |
|
---|
3825 | For each external software package that may be used, `configure.in'
|
---|
3826 | should call `AC_ARG_WITH' to detect whether the `configure' user asked
|
---|
3827 | to use it. Whether each package is used or not by default, and which
|
---|
3828 | arguments are valid, is up to you.
|
---|
3829 |
|
---|
3830 | - Macro: AC_ARG_WITH (PACKAGE, HELP-STRING [, ACTION-IF-GIVEN [,
|
---|
3831 | ACTION-IF-NOT-GIVEN]])
|
---|
3832 | If the user gave `configure' the option `--with-PACKAGE' or
|
---|
3833 | `--without-PACKAGE', run shell commands ACTION-IF-GIVEN. If
|
---|
3834 | neither option was given, run shell commands ACTION-IF-NOT-GIVEN.
|
---|
3835 | The name PACKAGE indicates another software package that this
|
---|
3836 | program should work with. It should consist only of alphanumeric
|
---|
3837 | characters and dashes.
|
---|
3838 |
|
---|
3839 | The option's argument is available to the shell commands
|
---|
3840 | ACTION-IF-GIVEN in the shell variable `withval', which is actually
|
---|
3841 | just the value of the shell variable `with_PACKAGE', with any `-'
|
---|
3842 | characters changed into `_'. You may use that variable instead,
|
---|
3843 | if you wish.
|
---|
3844 |
|
---|
3845 | The argument HELP-STRING is a description of the option which
|
---|
3846 | looks like this:
|
---|
3847 | --with-readline support fancy command line editing
|
---|
3848 |
|
---|
3849 | HELP-STRING may be more than one line long, if more detail is
|
---|
3850 | needed. Just make sure the columns line up in `configure --help'.
|
---|
3851 | Avoid tabs in the help string. You'll need to enclose it in `['
|
---|
3852 | and `]' in order to produce the leading spaces.
|
---|
3853 |
|
---|
3854 | - Macro: AC_WITH (PACKAGE, ACTION-IF-GIVEN [, ACTION-IF-NOT-GIVEN])
|
---|
3855 | This is an obsolete version of `AC_ARG_WITH' that does not support
|
---|
3856 | providing a help string.
|
---|
3857 |
|
---|
3858 |
|
---|
3859 | File: autoconf.info, Node: Package Options, Next: Site Details, Prev: External Software, Up: Site Configuration
|
---|
3860 |
|
---|
3861 | Choosing Package Options
|
---|
3862 | ========================
|
---|
3863 |
|
---|
3864 | If a software package has optional compile-time features, the user
|
---|
3865 | can give `configure' command line options to specify whether to compile
|
---|
3866 | them. The options have one of these forms:
|
---|
3867 |
|
---|
3868 | --enable-FEATURE[=ARG]
|
---|
3869 | --disable-FEATURE
|
---|
3870 |
|
---|
3871 | These options allow users to choose which optional features to build
|
---|
3872 | and install. `--enable-FEATURE' options should never make a feature
|
---|
3873 | behave differently or cause one feature to replace another. They
|
---|
3874 | should only cause parts of the program to be built rather than left out.
|
---|
3875 |
|
---|
3876 | The user can give an argument by following the feature name with `='
|
---|
3877 | and the argument. Giving an argument of `no' requests that the feature
|
---|
3878 | *not* be made available. A feature with an argument looks like
|
---|
3879 | `--enable-debug=stabs'. If no argument is given, it defaults to `yes'.
|
---|
3880 | `--disable-FEATURE' is equivalent to `--enable-FEATURE=no'.
|
---|
3881 |
|
---|
3882 | `configure' scripts do not complain about `--enable-FEATURE' options
|
---|
3883 | that they do not support. This behavior permits configuring a source
|
---|
3884 | tree containing multiple packages with a top-level `configure' script
|
---|
3885 | when the packages support different options, without spurious error
|
---|
3886 | messages about options that some of the packages support. An
|
---|
3887 | unfortunate side effect is that option spelling errors are not
|
---|
3888 | diagnosed. No better approach to this problem has been suggested so
|
---|
3889 | far.
|
---|
3890 |
|
---|
3891 | For each optional feature, `configure.in' should call
|
---|
3892 | `AC_ARG_ENABLE' to detect whether the `configure' user asked to include
|
---|
3893 | it. Whether each feature is included or not by default, and which
|
---|
3894 | arguments are valid, is up to you.
|
---|
3895 |
|
---|
3896 | - Macro: AC_ARG_ENABLE (FEATURE, HELP-STRING [, ACTION-IF-GIVEN [,
|
---|
3897 | ACTION-IF-NOT-GIVEN]])
|
---|
3898 | If the user gave `configure' the option `--enable-FEATURE' or
|
---|
3899 | `--disable-FEATURE', run shell commands ACTION-IF-GIVEN. If
|
---|
3900 | neither option was given, run shell commands ACTION-IF-NOT-GIVEN.
|
---|
3901 | The name FEATURE indicates an optional user-level facility. It
|
---|
3902 | should consist only of alphanumeric characters and dashes.
|
---|
3903 |
|
---|
3904 | The option's argument is available to the shell commands
|
---|
3905 | ACTION-IF-GIVEN in the shell variable `enableval', which is
|
---|
3906 | actually just the value of the shell variable `enable_FEATURE',
|
---|
3907 | with any `-' characters changed into `_'. You may use that
|
---|
3908 | variable instead, if you wish. The HELP-STRING argument is like
|
---|
3909 | that of `AC_ARG_WITH' (*note External Software::.).
|
---|
3910 |
|
---|
3911 | - Macro: AC_ENABLE (FEATURE, ACTION-IF-GIVEN [, ACTION-IF-NOT-GIVEN])
|
---|
3912 | This is an obsolete version of `AC_ARG_ENABLE' that does not
|
---|
3913 | support providing a help string.
|
---|
3914 |
|
---|
3915 |
|
---|
3916 | File: autoconf.info, Node: Site Details, Next: Transforming Names, Prev: Package Options, Up: Site Configuration
|
---|
3917 |
|
---|
3918 | Configuring Site Details
|
---|
3919 | ========================
|
---|
3920 |
|
---|
3921 | Some software packages require complex site-specific information.
|
---|
3922 | Some examples are host names to use for certain services, company
|
---|
3923 | names, and email addresses to contact. Since some configuration
|
---|
3924 | scripts generated by Metaconfig ask for such information interactively,
|
---|
3925 | people sometimes wonder how to get that information in
|
---|
3926 | Autoconf-generated configuration scripts, which aren't interactive.
|
---|
3927 |
|
---|
3928 | Such site configuration information should be put in a file that is
|
---|
3929 | edited *only by users*, not by programs. The location of the file can
|
---|
3930 | either be based on the `prefix' variable, or be a standard location
|
---|
3931 | such as the user's home directory. It could even be specified by an
|
---|
3932 | environment variable. The programs should examine that file at run
|
---|
3933 | time, rather than at compile time. Run time configuration is more
|
---|
3934 | convenient for users and makes the configuration process simpler than
|
---|
3935 | getting the information while configuring. *Note Variables for
|
---|
3936 | Installation Directories: (standards)Directory Variables, for more
|
---|
3937 | information on where to put data files.
|
---|
3938 |
|
---|
3939 |
|
---|
3940 | File: autoconf.info, Node: Transforming Names, Next: Site Defaults, Prev: Site Details, Up: Site Configuration
|
---|
3941 |
|
---|
3942 | Transforming Program Names When Installing
|
---|
3943 | ==========================================
|
---|
3944 |
|
---|
3945 | Autoconf supports changing the names of programs when installing
|
---|
3946 | them. In order to use these transformations, `configure.in' must call
|
---|
3947 | the macro `AC_ARG_PROGRAM'.
|
---|
3948 |
|
---|
3949 | - Macro: AC_ARG_PROGRAM
|
---|
3950 | Place in output variable `program_transform_name' a sequence of
|
---|
3951 | `sed' commands for changing the names of installed programs.
|
---|
3952 |
|
---|
3953 | If any of the options described below are given to `configure',
|
---|
3954 | program names are transformed accordingly. Otherwise, if
|
---|
3955 | `AC_CANONICAL_SYSTEM' has been called and a `--target' value is
|
---|
3956 | given that differs from the host type (specified with `--host' or
|
---|
3957 | defaulted by `config.sub'), the target type followed by a dash is
|
---|
3958 | used as a prefix. Otherwise, no program name transformation is
|
---|
3959 | done.
|
---|
3960 |
|
---|
3961 | * Menu:
|
---|
3962 |
|
---|
3963 | * Transformation Options:: `configure' options to transform names.
|
---|
3964 | * Transformation Examples:: Sample uses of transforming names.
|
---|
3965 | * Transformation Rules:: `Makefile' uses of transforming names.
|
---|
3966 |
|
---|
3967 |
|
---|
3968 | File: autoconf.info, Node: Transformation Options, Next: Transformation Examples, Prev: Transforming Names, Up: Transforming Names
|
---|
3969 |
|
---|
3970 | Transformation Options
|
---|
3971 | ----------------------
|
---|
3972 |
|
---|
3973 | You can specify name transformations by giving `configure' these
|
---|
3974 | command line options:
|
---|
3975 |
|
---|
3976 | `--program-prefix=PREFIX'
|
---|
3977 | prepend PREFIX to the names;
|
---|
3978 |
|
---|
3979 | `--program-suffix=SUFFIX'
|
---|
3980 | append SUFFIX to the names;
|
---|
3981 |
|
---|
3982 | `--program-transform-name=EXPRESSION'
|
---|
3983 | perform `sed' substitution EXPRESSION on the names.
|
---|
3984 |
|
---|
3985 |
|
---|
3986 | File: autoconf.info, Node: Transformation Examples, Next: Transformation Rules, Prev: Transformation Options, Up: Transforming Names
|
---|
3987 |
|
---|
3988 | Transformation Examples
|
---|
3989 | -----------------------
|
---|
3990 |
|
---|
3991 | These transformations are useful with programs that can be part of a
|
---|
3992 | cross-compilation development environment. For example, a
|
---|
3993 | cross-assembler running on a Sun 4 configured with
|
---|
3994 | `--target=i960-vxworks' is normally installed as `i960-vxworks-as',
|
---|
3995 | rather than `as', which could be confused with a native Sun 4 assembler.
|
---|
3996 |
|
---|
3997 | You can force a program name to begin with `g', if you don't want
|
---|
3998 | GNU programs installed on your system to shadow other programs with the
|
---|
3999 | same name. For example, if you configure GNU `diff' with
|
---|
4000 | `--program-prefix=g', then when you run `make install' it is installed
|
---|
4001 | as `/usr/local/bin/gdiff'.
|
---|
4002 |
|
---|
4003 | As a more sophisticated example, you could use
|
---|
4004 | --program-transform-name='s/^/g/; s/^gg/g/; s/^gless/less/'
|
---|
4005 |
|
---|
4006 | to prepend `g' to most of the program names in a source tree, excepting
|
---|
4007 | those like `gdb' that already have one and those like `less' and
|
---|
4008 | `lesskey' that aren't GNU programs. (That is assuming that you have a
|
---|
4009 | source tree containing those programs that is set up to use this
|
---|
4010 | feature.)
|
---|
4011 |
|
---|
4012 | One way to install multiple versions of some programs simultaneously
|
---|
4013 | is to append a version number to the name of one or both. For example,
|
---|
4014 | if you want to keep Autoconf version 1 around for awhile, you can
|
---|
4015 | configure Autoconf version 2 using `--program-suffix=2' to install the
|
---|
4016 | programs as `/usr/local/bin/autoconf2', `/usr/local/bin/autoheader2',
|
---|
4017 | etc.
|
---|
4018 |
|
---|
4019 |
|
---|
4020 | File: autoconf.info, Node: Transformation Rules, Prev: Transformation Examples, Up: Transforming Names
|
---|
4021 |
|
---|
4022 | Transformation Rules
|
---|
4023 | --------------------
|
---|
4024 |
|
---|
4025 | Here is how to use the variable `program_transform_name' in a
|
---|
4026 | `Makefile.in':
|
---|
4027 |
|
---|
4028 | transform=@program_transform_name@
|
---|
4029 | install: all
|
---|
4030 | $(INSTALL_PROGRAM) myprog $(bindir)/`echo myprog|sed '$(transform)'`
|
---|
4031 |
|
---|
4032 | uninstall:
|
---|
4033 | rm -f $(bindir)/`echo myprog|sed '$(transform)'`
|
---|
4034 |
|
---|
4035 | If you have more than one program to install, you can do it in a loop:
|
---|
4036 |
|
---|
4037 | PROGRAMS=cp ls rm
|
---|
4038 | install:
|
---|
4039 | for p in $(PROGRAMS); do \
|
---|
4040 | $(INSTALL_PROGRAM) $$p $(bindir)/`echo $$p|sed '$(transform)'`; \
|
---|
4041 | done
|
---|
4042 |
|
---|
4043 | uninstall:
|
---|
4044 | for p in $(PROGRAMS); do \
|
---|
4045 | rm -f $(bindir)/`echo $$p|sed '$(transform)'`; \
|
---|
4046 | done
|
---|
4047 |
|
---|
4048 | Whether to do the transformations on documentation files (Texinfo or
|
---|
4049 | `man') is a tricky question; there seems to be no perfect answer, due
|
---|
4050 | to the several reasons for name transforming. Documentation is not
|
---|
4051 | usually particular to a specific architecture, and Texinfo files do not
|
---|
4052 | conflict with system documentation. But they might conflict with
|
---|
4053 | earlier versions of the same files, and `man' pages sometimes do
|
---|
4054 | conflict with system documentation. As a compromise, it is probably
|
---|
4055 | best to do name transformations on `man' pages but not on Texinfo
|
---|
4056 | manuals.
|
---|
4057 |
|
---|
4058 |
|
---|
4059 | File: autoconf.info, Node: Site Defaults, Prev: Transforming Names, Up: Site Configuration
|
---|
4060 |
|
---|
4061 | Setting Site Defaults
|
---|
4062 | =====================
|
---|
4063 |
|
---|
4064 | Autoconf-generated `configure' scripts allow your site to provide
|
---|
4065 | default values for some configuration values. You do this by creating
|
---|
4066 | site- and system-wide initialization files.
|
---|
4067 |
|
---|
4068 | If the environment variable `CONFIG_SITE' is set, `configure' uses
|
---|
4069 | its value as the name of a shell script to read. Otherwise, it reads
|
---|
4070 | the shell script `PREFIX/share/config.site' if it exists, then
|
---|
4071 | `PREFIX/etc/config.site' if it exists. Thus, settings in
|
---|
4072 | machine-specific files override those in machine-independent ones in
|
---|
4073 | case of conflict.
|
---|
4074 |
|
---|
4075 | Site files can be arbitrary shell scripts, but only certain kinds of
|
---|
4076 | code are really appropriate to be in them. Because `configure' reads
|
---|
4077 | any cache file after it has read any site files, a site file can define
|
---|
4078 | a default cache file to be shared between all Autoconf-generated
|
---|
4079 | `configure' scripts run on that system. If you set a default cache
|
---|
4080 | file in a site file, it is a good idea to also set the output variable
|
---|
4081 | `CC' in that site file, because the cache file is only valid for a
|
---|
4082 | particular compiler, but many systems have several available.
|
---|
4083 |
|
---|
4084 | You can examine or override the value set by a command line option to
|
---|
4085 | `configure' in a site file; options set shell variables that have the
|
---|
4086 | same names as the options, with any dashes turned into underscores.
|
---|
4087 | The exceptions are that `--without-' and `--disable-' options are like
|
---|
4088 | giving the corresponding `--with-' or `--enable-' option and the value
|
---|
4089 | `no'. Thus, `--cache-file=localcache' sets the variable `cache_file'
|
---|
4090 | to the value `localcache'; `--enable-warnings=no' or
|
---|
4091 | `--disable-warnings' sets the variable `enable_warnings' to the value
|
---|
4092 | `no'; `--prefix=/usr' sets the variable `prefix' to the value `/usr';
|
---|
4093 | etc.
|
---|
4094 |
|
---|
4095 | Site files are also good places to set default values for other
|
---|
4096 | output variables, such as `CFLAGS', if you need to give them non-default
|
---|
4097 | values: anything you would normally do, repetitively, on the command
|
---|
4098 | line. If you use non-default values for PREFIX or EXEC_PREFIX
|
---|
4099 | (wherever you locate the site file), you can set them in the site file
|
---|
4100 | if you specify it with the `CONFIG_SITE' environment variable.
|
---|
4101 |
|
---|
4102 | You can set some cache values in the site file itself. Doing this is
|
---|
4103 | useful if you are cross-compiling, so it is impossible to check features
|
---|
4104 | that require running a test program. You could "prime the cache" by
|
---|
4105 | setting those values correctly for that system in
|
---|
4106 | `PREFIX/etc/config.site'. To find out the names of the cache variables
|
---|
4107 | you need to set, look for shell variables with `_cv_' in their names in
|
---|
4108 | the affected `configure' scripts, or in the Autoconf `m4' source code
|
---|
4109 | for those macros.
|
---|
4110 |
|
---|
4111 | The cache file is careful to not override any variables set in the
|
---|
4112 | site files. Similarly, you should not override command-line options in
|
---|
4113 | the site files. Your code should check that variables such as `prefix'
|
---|
4114 | and `cache_file' have their default values (as set near the top of
|
---|
4115 | `configure') before changing them.
|
---|
4116 |
|
---|
4117 | Here is a sample file `/usr/share/local/gnu/share/config.site'. The
|
---|
4118 | command `configure --prefix=/usr/share/local/gnu' would read this file
|
---|
4119 | (if `CONFIG_SITE' is not set to a different file).
|
---|
4120 |
|
---|
4121 | # config.site for configure
|
---|
4122 | #
|
---|
4123 | # Change some defaults.
|
---|
4124 | test "$prefix" = NONE && prefix=/usr/share/local/gnu
|
---|
4125 | test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu
|
---|
4126 | test "$sharedstatedir" = '${prefix}/com' && sharedstatedir=/var
|
---|
4127 | test "$localstatedir" = '${prefix}/var' && localstatedir=/var
|
---|
4128 | #
|
---|
4129 | # Give Autoconf 2.x generated configure scripts a shared default
|
---|
4130 | # cache file for feature test results, architecture-specific.
|
---|
4131 | if test "$cache_file" = ./config.cache; then
|
---|
4132 | cache_file="$prefix/var/config.cache"
|
---|
4133 | # A cache file is only valid for one C compiler.
|
---|
4134 | CC=gcc
|
---|
4135 | fi
|
---|
4136 |
|
---|
4137 |
|
---|
4138 | File: autoconf.info, Node: Invoking configure, Next: Invoking config.status, Prev: Site Configuration, Up: Top
|
---|
4139 |
|
---|
4140 | Running `configure' Scripts
|
---|
4141 | ***************************
|
---|
4142 |
|
---|
4143 | Below are instructions on how to configure a package that uses a
|
---|
4144 | `configure' script, suitable for inclusion as an `INSTALL' file in the
|
---|
4145 | package. A plain-text version of `INSTALL' which you may use comes
|
---|
4146 | with Autoconf.
|
---|
4147 |
|
---|
4148 | * Menu:
|
---|
4149 |
|
---|
4150 | * Basic Installation:: Instructions for typical cases.
|
---|
4151 | * Compilers and Options:: Selecting compilers and optimization.
|
---|
4152 | * Multiple Architectures:: Compiling for multiple architectures at once.
|
---|
4153 | * Installation Names:: Installing in different directories.
|
---|
4154 | * Optional Features:: Selecting optional features.
|
---|
4155 | * System Type:: Specifying the system type.
|
---|
4156 | * Sharing Defaults:: Setting site-wide defaults for `configure'.
|
---|
4157 | * Operation Controls:: Changing how `configure' runs.
|
---|
4158 |
|
---|
4159 |
|
---|
4160 | File: autoconf.info, Node: Basic Installation, Next: Compilers and Options, Up: Invoking configure
|
---|
4161 |
|
---|
4162 | Basic Installation
|
---|
4163 | ==================
|
---|
4164 |
|
---|
4165 | These are generic installation instructions.
|
---|
4166 |
|
---|
4167 | The `configure' shell script attempts to guess correct values for
|
---|
4168 | various system-dependent variables used during compilation. It uses
|
---|
4169 | those values to create a `Makefile' in each directory of the package.
|
---|
4170 | It may also create one or more `.h' files containing system-dependent
|
---|
4171 | definitions. Finally, it creates a shell script `config.status' that
|
---|
4172 | you can run in the future to recreate the current configuration, a file
|
---|
4173 | `config.cache' that saves the results of its tests to speed up
|
---|
4174 | reconfiguring, and a file `config.log' containing compiler output
|
---|
4175 | (useful mainly for debugging `configure').
|
---|
4176 |
|
---|
4177 | If you need to do unusual things to compile the package, please try
|
---|
4178 | to figure out how `configure' could check whether to do them, and mail
|
---|
4179 | diffs or instructions to the address given in the `README' so they can
|
---|
4180 | be considered for the next release. If at some point `config.cache'
|
---|
4181 | contains results you don't want to keep, you may remove or edit it.
|
---|
4182 |
|
---|
4183 | The file `configure.in' is used to create `configure' by a program
|
---|
4184 | called `autoconf'. You only need `configure.in' if you want to change
|
---|
4185 | it or regenerate `configure' using a newer version of `autoconf'.
|
---|
4186 |
|
---|
4187 | The simplest way to compile this package is:
|
---|
4188 |
|
---|
4189 | 1. `cd' to the directory containing the package's source code and type
|
---|
4190 | `./configure' to configure the package for your system. If you're
|
---|
4191 | using `csh' on an old version of System V, you might need to type
|
---|
4192 | `sh ./configure' instead to prevent `csh' from trying to execute
|
---|
4193 | `configure' itself.
|
---|
4194 |
|
---|
4195 | Running `configure' takes awhile. While running, it prints some
|
---|
4196 | messages telling which features it is checking for.
|
---|
4197 |
|
---|
4198 | 2. Type `make' to compile the package.
|
---|
4199 |
|
---|
4200 | 3. Optionally, type `make check' to run any self-tests that come with
|
---|
4201 | the package.
|
---|
4202 |
|
---|
4203 | 4. Type `make install' to install the programs and any data files and
|
---|
4204 | documentation.
|
---|
4205 |
|
---|
4206 | 5. You can remove the program binaries and object files from the
|
---|
4207 | source code directory by typing `make clean'. To also remove the
|
---|
4208 | files that `configure' created (so you can compile the package for
|
---|
4209 | a different kind of computer), type `make distclean'. There is
|
---|
4210 | also a `make maintainer-clean' target, but that is intended mainly
|
---|
4211 | for the package's developers. If you use it, you may have to get
|
---|
4212 | all sorts of other programs in order to regenerate files that came
|
---|
4213 | with the distribution.
|
---|
4214 |
|
---|
4215 |
|
---|
4216 | File: autoconf.info, Node: Compilers and Options, Next: Multiple Architectures, Prev: Basic Installation, Up: Invoking configure
|
---|
4217 |
|
---|
4218 | Compilers and Options
|
---|
4219 | =====================
|
---|
4220 |
|
---|
4221 | Some systems require unusual options for compilation or linking that
|
---|
4222 | the `configure' script does not know about. You can give `configure'
|
---|
4223 | initial values for variables by setting them in the environment. Using
|
---|
4224 | a Bourne-compatible shell, you can do that on the command line like
|
---|
4225 | this:
|
---|
4226 | CC=c89 CFLAGS=-O2 LIBS=-lposix ./configure
|
---|
4227 |
|
---|
4228 | Or on systems that have the `env' program, you can do it like this:
|
---|
4229 | env CPPFLAGS=-I/usr/local/include LDFLAGS=-s ./configure
|
---|
4230 |
|
---|
4231 |
|
---|
4232 | File: autoconf.info, Node: Multiple Architectures, Next: Installation Names, Prev: Compilers and Options, Up: Invoking configure
|
---|
4233 |
|
---|
4234 | Compiling For Multiple Architectures
|
---|
4235 | ====================================
|
---|
4236 |
|
---|
4237 | You can compile the package for more than one kind of computer at the
|
---|
4238 | same time, by placing the object files for each architecture in their
|
---|
4239 | own directory. To do this, you must use a version of `make' that
|
---|
4240 | supports the `VPATH' variable, such as GNU `make'. `cd' to the
|
---|
4241 | directory where you want the object files and executables to go and run
|
---|
4242 | the `configure' script. `configure' automatically checks for the
|
---|
4243 | source code in the directory that `configure' is in and in `..'.
|
---|
4244 |
|
---|
4245 | If you have to use a `make' that does not supports the `VPATH'
|
---|
4246 | variable, you have to compile the package for one architecture at a time
|
---|
4247 | in the source code directory. After you have installed the package for
|
---|
4248 | one architecture, use `make distclean' before reconfiguring for another
|
---|
4249 | architecture.
|
---|
4250 |
|
---|
4251 |
|
---|
4252 | File: autoconf.info, Node: Installation Names, Next: Optional Features, Prev: Multiple Architectures, Up: Invoking configure
|
---|
4253 |
|
---|
4254 | Installation Names
|
---|
4255 | ==================
|
---|
4256 |
|
---|
4257 | By default, `make install' will install the package's files in
|
---|
4258 | `/usr/local/bin', `/usr/local/man', etc. You can specify an
|
---|
4259 | installation prefix other than `/usr/local' by giving `configure' the
|
---|
4260 | option `--prefix=PATH'.
|
---|
4261 |
|
---|
4262 | You can specify separate installation prefixes for
|
---|
4263 | architecture-specific files and architecture-independent files. If you
|
---|
4264 | give `configure' the option `--exec-prefix=PATH', the package will use
|
---|
4265 | PATH as the prefix for installing programs and libraries.
|
---|
4266 | Documentation and other data files will still use the regular prefix.
|
---|
4267 |
|
---|
4268 | In addition, if you use an unusual directory layout you can give
|
---|
4269 | options like `--bindir=PATH' to specify different values for particular
|
---|
4270 | kinds of files. Run `configure --help' for a list of the directories
|
---|
4271 | you can set and what kinds of files go in them.
|
---|
4272 |
|
---|
4273 | If the package supports it, you can cause programs to be installed
|
---|
4274 | with an extra prefix or suffix on their names by giving `configure' the
|
---|
4275 | option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
|
---|
4276 |
|
---|
4277 |
|
---|
4278 | File: autoconf.info, Node: Optional Features, Next: System Type, Prev: Installation Names, Up: Invoking configure
|
---|
4279 |
|
---|
4280 | Optional Features
|
---|
4281 | =================
|
---|
4282 |
|
---|
4283 | Some packages pay attention to `--enable-FEATURE' options to
|
---|
4284 | `configure', where FEATURE indicates an optional part of the package.
|
---|
4285 | They may also pay attention to `--with-PACKAGE' options, where PACKAGE
|
---|
4286 | is something like `gnu-as' or `x' (for the X Window System). The
|
---|
4287 | `README' should mention any `--enable-' and `--with-' options that the
|
---|
4288 | package recognizes.
|
---|
4289 |
|
---|
4290 | For packages that use the X Window System, `configure' can usually
|
---|
4291 | find the X include and library files automatically, but if it doesn't,
|
---|
4292 | you can use the `configure' options `--x-includes=DIR' and
|
---|
4293 | `--x-libraries=DIR' to specify their locations.
|
---|
4294 |
|
---|
4295 |
|
---|
4296 | File: autoconf.info, Node: System Type, Next: Sharing Defaults, Prev: Optional Features, Up: Invoking configure
|
---|
4297 |
|
---|
4298 | Specifying the System Type
|
---|
4299 | ==========================
|
---|
4300 |
|
---|
4301 | There may be some features `configure' can not figure out
|
---|
4302 | automatically, but needs to determine by the type of host the package
|
---|
4303 | will run on. Usually `configure' can figure that out, but if it prints
|
---|
4304 | a message saying it can not guess the host type, give it the
|
---|
4305 | `--host=TYPE' option. TYPE can either be a short name for the system
|
---|
4306 | type, such as `sun4', or a canonical name with three fields:
|
---|
4307 | CPU-COMPANY-SYSTEM
|
---|
4308 |
|
---|
4309 | See the file `config.sub' for the possible values of each field. If
|
---|
4310 | `config.sub' isn't included in this package, then this package doesn't
|
---|
4311 | need to know the host type.
|
---|
4312 |
|
---|
4313 | If you are building compiler tools for cross-compiling, you can also
|
---|
4314 | use the `--target=TYPE' option to select the type of system they will
|
---|
4315 | produce code for and the `--build=TYPE' option to select the type of
|
---|
4316 | system on which you are compiling the package.
|
---|
4317 |
|
---|
4318 |
|
---|
4319 | File: autoconf.info, Node: Sharing Defaults, Next: Operation Controls, Prev: System Type, Up: Invoking configure
|
---|
4320 |
|
---|
4321 | Sharing Defaults
|
---|
4322 | ================
|
---|
4323 |
|
---|
4324 | If you want to set default values for `configure' scripts to share,
|
---|
4325 | you can create a site shell script called `config.site' that gives
|
---|
4326 | default values for variables like `CC', `cache_file', and `prefix'.
|
---|
4327 | `configure' looks for `PREFIX/share/config.site' if it exists, then
|
---|
4328 | `PREFIX/etc/config.site' if it exists. Or, you can set the
|
---|
4329 | `CONFIG_SITE' environment variable to the location of the site script.
|
---|
4330 | A warning: not all `configure' scripts look for a site script.
|
---|
4331 |
|
---|
4332 |
|
---|
4333 | File: autoconf.info, Node: Operation Controls, Prev: Sharing Defaults, Up: Invoking configure
|
---|
4334 |
|
---|
4335 | Operation Controls
|
---|
4336 | ==================
|
---|
4337 |
|
---|
4338 | `configure' recognizes the following options to control how it
|
---|
4339 | operates.
|
---|
4340 |
|
---|
4341 | `--cache-file=FILE'
|
---|
4342 | Use and save the results of the tests in FILE instead of
|
---|
4343 | `./config.cache'. Set FILE to `/dev/null' to disable caching, for
|
---|
4344 | debugging `configure'.
|
---|
4345 |
|
---|
4346 | `--help'
|
---|
4347 | Print a summary of the options to `configure', and exit.
|
---|
4348 |
|
---|
4349 | `--quiet'
|
---|
4350 | `--silent'
|
---|
4351 | `-q'
|
---|
4352 | Do not print messages saying which checks are being made. To
|
---|
4353 | suppress all normal output, redirect it to `/dev/null' (any error
|
---|
4354 | messages will still be shown).
|
---|
4355 |
|
---|
4356 | `--srcdir=DIR'
|
---|
4357 | Look for the package's source code in directory DIR. Usually
|
---|
4358 | `configure' can determine that directory automatically.
|
---|
4359 |
|
---|
4360 | `--version'
|
---|
4361 | Print the version of Autoconf used to generate the `configure'
|
---|
4362 | script, and exit.
|
---|
4363 |
|
---|
4364 | `configure' also accepts some other, not widely useful, options.
|
---|
4365 |
|
---|
4366 |
|
---|
4367 | File: autoconf.info, Node: Invoking config.status, Next: Questions, Prev: Invoking configure, Up: Top
|
---|
4368 |
|
---|
4369 | Recreating a Configuration
|
---|
4370 | **************************
|
---|
4371 |
|
---|
4372 | The `configure' script creates a file named `config.status' which
|
---|
4373 | describes which configuration options were specified when the package
|
---|
4374 | was last configured. This file is a shell script which, if run, will
|
---|
4375 | recreate the same configuration.
|
---|
4376 |
|
---|
4377 | You can give `config.status' the `--recheck' option to update
|
---|
4378 | itself. This option is useful if you change `configure', so that the
|
---|
4379 | results of some tests might be different from the previous run. The
|
---|
4380 | `--recheck' option re-runs `configure' with the same arguments you used
|
---|
4381 | before, plus the `--no-create' option, which prevent `configure' from
|
---|
4382 | running `config.status' and creating `Makefile' and other files, and
|
---|
4383 | the `--no-recursion' option, which prevents `configure' from running
|
---|
4384 | other `configure' scripts in subdirectories. (This is so other
|
---|
4385 | `Makefile' rules can run `config.status' when it changes; *note
|
---|
4386 | Automatic Remaking::., for an example).
|
---|
4387 |
|
---|
4388 | `config.status' also accepts the options `--help', which prints a
|
---|
4389 | summary of the options to `config.status', and `--version', which
|
---|
4390 | prints the version of Autoconf used to create the `configure' script
|
---|
4391 | that generated `config.status'.
|
---|
4392 |
|
---|
4393 | `config.status' checks several optional environment variables that
|
---|
4394 | can alter its behavior:
|
---|
4395 |
|
---|
4396 | - Variable: CONFIG_SHELL
|
---|
4397 | The shell with which to run `configure' for the `--recheck'
|
---|
4398 | option. It must be Bourne-compatible. The default is `/bin/sh'.
|
---|
4399 |
|
---|
4400 | - Variable: CONFIG_STATUS
|
---|
4401 | The file name to use for the shell script that records the
|
---|
4402 | configuration. The default is `./config.status'. This variable is
|
---|
4403 | useful when one package uses parts of another and the `configure'
|
---|
4404 | scripts shouldn't be merged because they are maintained separately.
|
---|
4405 |
|
---|
4406 | The following variables provide one way for separately distributed
|
---|
4407 | packages to share the values computed by `configure'. Doing so can be
|
---|
4408 | useful if some of the packages need a superset of the features that one
|
---|
4409 | of them, perhaps a common library, does. These variables allow a
|
---|
4410 | `config.status' file to create files other than the ones that its
|
---|
4411 | `configure.in' specifies, so it can be used for a different package.
|
---|
4412 |
|
---|
4413 | - Variable: CONFIG_FILES
|
---|
4414 | The files in which to perform `@VARIABLE@' substitutions. The
|
---|
4415 | default is the arguments given to `AC_OUTPUT' in `configure.in'.
|
---|
4416 |
|
---|
4417 | - Variable: CONFIG_HEADERS
|
---|
4418 | The files in which to substitute C `#define' statements. The
|
---|
4419 | default is the arguments given to `AC_CONFIG_HEADER'; if that
|
---|
4420 | macro was not called, `config.status' ignores this variable.
|
---|
4421 |
|
---|
4422 | These variables also allow you to write `Makefile' rules that
|
---|
4423 | regenerate only some of the files. For example, in the dependencies
|
---|
4424 | given above (*note Automatic Remaking::.), `config.status' is run twice
|
---|
4425 | when `configure.in' has changed. If that bothers you, you can make
|
---|
4426 | each run only regenerate the files for that rule:
|
---|
4427 |
|
---|
4428 | config.h: stamp-h
|
---|
4429 | stamp-h: config.h.in config.status
|
---|
4430 | CONFIG_FILES= CONFIG_HEADERS=config.h ./config.status
|
---|
4431 | echo > stamp-h
|
---|
4432 |
|
---|
4433 | Makefile: Makefile.in config.status
|
---|
4434 | CONFIG_FILES=Makefile CONFIG_HEADERS= ./config.status
|
---|
4435 |
|
---|
4436 | (If `configure.in' does not call `AC_CONFIG_HEADER', there is no need
|
---|
4437 | to set `CONFIG_HEADERS' in the `make' rules.)
|
---|
4438 |
|
---|
4439 |
|
---|
4440 | File: autoconf.info, Node: Questions, Next: Upgrading, Prev: Invoking config.status, Up: Top
|
---|
4441 |
|
---|
4442 | Questions About Autoconf
|
---|
4443 | ************************
|
---|
4444 |
|
---|
4445 | Several questions about Autoconf come up occasionally. Here some of
|
---|
4446 | them are addressed.
|
---|
4447 |
|
---|
4448 | * Menu:
|
---|
4449 |
|
---|
4450 | * Distributing:: Distributing `configure' scripts.
|
---|
4451 | * Why GNU m4:: Why not use the standard `m4'?
|
---|
4452 | * Bootstrapping:: Autoconf and GNU `m4' require each other?
|
---|
4453 | * Why Not Imake:: Why GNU uses `configure' instead of Imake.
|
---|
4454 |
|
---|
4455 |
|
---|
4456 | File: autoconf.info, Node: Distributing, Next: Why GNU m4, Prev: Questions, Up: Questions
|
---|
4457 |
|
---|
4458 | Distributing `configure' Scripts
|
---|
4459 | ================================
|
---|
4460 |
|
---|
4461 | What are the restrictions on distributing `configure'
|
---|
4462 | scripts that Autoconf generates? How does that affect my
|
---|
4463 | programs that use them?
|
---|
4464 |
|
---|
4465 | There are no restrictions on how the configuration scripts that
|
---|
4466 | Autoconf produces may be distributed or used. In Autoconf version 1,
|
---|
4467 | they were covered by the GNU General Public License. We still
|
---|
4468 | encourage software authors to distribute their work under terms like
|
---|
4469 | those of the GPL, but doing so is not required to use Autoconf.
|
---|
4470 |
|
---|
4471 | Of the other files that might be used with `configure',
|
---|
4472 | `config.h.in' is under whatever copyright you use for your
|
---|
4473 | `configure.in', since it is derived from that file and from the public
|
---|
4474 | domain file `acconfig.h'. `config.sub' and `config.guess' have an
|
---|
4475 | exception to the GPL when they are used with an Autoconf-generated
|
---|
4476 | `configure' script, which permits you to distribute them under the same
|
---|
4477 | terms as the rest of your package. `install-sh' is from the X
|
---|
4478 | Consortium and is not copyrighted.
|
---|
4479 |
|
---|
4480 |
|
---|
4481 | File: autoconf.info, Node: Why GNU m4, Next: Bootstrapping, Prev: Distributing, Up: Questions
|
---|
4482 |
|
---|
4483 | Why Require GNU `m4'?
|
---|
4484 | =====================
|
---|
4485 |
|
---|
4486 | Why does Autoconf require GNU `m4'?
|
---|
4487 |
|
---|
4488 | Many `m4' implementations have hard-coded limitations on the size
|
---|
4489 | and number of macros, which Autoconf exceeds. They also lack several
|
---|
4490 | builtin macros that it would be difficult to get along without in a
|
---|
4491 | sophisticated application like Autoconf, including:
|
---|
4492 |
|
---|
4493 | builtin
|
---|
4494 | indir
|
---|
4495 | patsubst
|
---|
4496 | __file__
|
---|
4497 | __line__
|
---|
4498 |
|
---|
4499 | Since only software maintainers need to use Autoconf, and since GNU
|
---|
4500 | `m4' is simple to configure and install, it seems reasonable to require
|
---|
4501 | GNU `m4' to be installed also. Many maintainers of GNU and other free
|
---|
4502 | software already have most of the GNU utilities installed, since they
|
---|
4503 | prefer them.
|
---|
4504 |
|
---|
4505 |
|
---|
4506 | File: autoconf.info, Node: Bootstrapping, Next: Why Not Imake, Prev: Why GNU m4, Up: Questions
|
---|
4507 |
|
---|
4508 | How Can I Bootstrap?
|
---|
4509 | ====================
|
---|
4510 |
|
---|
4511 | If Autoconf requires GNU `m4' and GNU `m4' has an
|
---|
4512 | Autoconf `configure' script, how do I bootstrap? It seems
|
---|
4513 | like a chicken and egg problem!
|
---|
4514 |
|
---|
4515 | This is a misunderstanding. Although GNU `m4' does come with a
|
---|
4516 | `configure' script produced by Autoconf, Autoconf is not required in
|
---|
4517 | order to run the script and install GNU `m4'. Autoconf is only
|
---|
4518 | required if you want to change the `m4' `configure' script, which few
|
---|
4519 | people have to do (mainly its maintainer).
|
---|
4520 |
|
---|
4521 |
|
---|
4522 | File: autoconf.info, Node: Why Not Imake, Prev: Bootstrapping, Up: Questions
|
---|
4523 |
|
---|
4524 | Why Not Imake?
|
---|
4525 | ==============
|
---|
4526 |
|
---|
4527 | Why not use Imake instead of `configure' scripts?
|
---|
4528 |
|
---|
4529 | Several people have written addressing this question, so I include
|
---|
4530 | adaptations of their explanations here.
|
---|
4531 |
|
---|
4532 | The following answer is based on one written by Richard Pixley:
|
---|
4533 |
|
---|
4534 | Autoconf generated scripts frequently work on machines which it has
|
---|
4535 | never been set up to handle before. That is, it does a good job of
|
---|
4536 | inferring a configuration for a new system. Imake cannot do this.
|
---|
4537 |
|
---|
4538 | Imake uses a common database of host specific data. For X11, this
|
---|
4539 | makes sense because the distribution is made as a collection of tools,
|
---|
4540 | by one central authority who has control over the database.
|
---|
4541 |
|
---|
4542 | GNU tools are not released this way. Each GNU tool has a maintainer;
|
---|
4543 | these maintainers are scattered across the world. Using a common
|
---|
4544 | database would be a maintenance nightmare. Autoconf may appear to be
|
---|
4545 | this kind of database, but in fact it is not. Instead of listing host
|
---|
4546 | dependencies, it lists program requirements.
|
---|
4547 |
|
---|
4548 | If you view the GNU suite as a collection of native tools, then the
|
---|
4549 | problems are similar. But the GNU development tools can be configured
|
---|
4550 | as cross tools in almost any host+target permutation. All of these
|
---|
4551 | configurations can be installed concurrently. They can even be
|
---|
4552 | configured to share host independent files across hosts. Imake doesn't
|
---|
4553 | address these issues.
|
---|
4554 |
|
---|
4555 | Imake templates are a form of standardization. The GNU coding
|
---|
4556 | standards address the same issues without necessarily imposing the same
|
---|
4557 | restrictions.
|
---|
4558 |
|
---|
4559 | Here is some further explanation, written by Per Bothner:
|
---|
4560 |
|
---|
4561 | One of the advantages of Imake is that it easy to generate large
|
---|
4562 | Makefiles using `cpp''s `#include' and macro mechanisms. However,
|
---|
4563 | `cpp' is not programmable: it has limited conditional facilities, and
|
---|
4564 | no looping. And `cpp' cannot inspect its environment.
|
---|
4565 |
|
---|
4566 | All of these problems are solved by using `sh' instead of `cpp'.
|
---|
4567 | The shell is fully programmable, has macro substitution, can execute
|
---|
4568 | (or source) other shell scripts, and can inspect its environment.
|
---|
4569 |
|
---|
4570 | Paul Eggert elaborates more:
|
---|
4571 |
|
---|
4572 | With Autoconf, installers need not assume that Imake itself is
|
---|
4573 | already installed and working well. This may not seem like much of an
|
---|
4574 | advantage to people who are accustomed to Imake. But on many hosts
|
---|
4575 | Imake is not installed or the default installation is not working well,
|
---|
4576 | and requiring Imake to install a package hinders the acceptance of that
|
---|
4577 | package on those hosts. For example, the Imake template and
|
---|
4578 | configuration files might not be installed properly on a host, or the
|
---|
4579 | Imake build procedure might wrongly assume that all source files are in
|
---|
4580 | one big directory tree, or the Imake configuration might assume one
|
---|
4581 | compiler whereas the package or the installer needs to use another, or
|
---|
4582 | there might be a version mismatch between the Imake expected by the
|
---|
4583 | package and the Imake supported by the host. These problems are much
|
---|
4584 | rarer with Autoconf, where each package comes with its own independent
|
---|
4585 | configuration processor.
|
---|
4586 |
|
---|
4587 | Also, Imake often suffers from unexpected interactions between
|
---|
4588 | `make' and the installer's C preprocessor. The fundamental problem
|
---|
4589 | here is that the C preprocessor was designed to preprocess C programs,
|
---|
4590 | not `Makefile's. This is much less of a problem with Autoconf, which
|
---|
4591 | uses the general-purpose preprocessor `m4', and where the package's
|
---|
4592 | author (rather than the installer) does the preprocessing in a standard
|
---|
4593 | way.
|
---|
4594 |
|
---|
4595 | Finally, Mark Eichin notes:
|
---|
4596 |
|
---|
4597 | Imake isn't all that extensible, either. In order to add new
|
---|
4598 | features to Imake, you need to provide your own project template, and
|
---|
4599 | duplicate most of the features of the existing one. This means that
|
---|
4600 | for a sophisticated project, using the vendor-provided Imake templates
|
---|
4601 | fails to provide any leverage--since they don't cover anything that
|
---|
4602 | your own project needs (unless it is an X11 program).
|
---|
4603 |
|
---|
4604 | On the other side, though:
|
---|
4605 |
|
---|
4606 | The one advantage that Imake has over `configure': `Imakefile's tend
|
---|
4607 | to be much shorter (likewise, less redundant) than `Makefile.in's.
|
---|
4608 | There is a fix to this, however--at least for the Kerberos V5 tree,
|
---|
4609 | we've modified things to call in common `post.in' and `pre.in'
|
---|
4610 | `Makefile' fragments for the entire tree. This means that a lot of
|
---|
4611 | common things don't have to be duplicated, even though they normally
|
---|
4612 | are in `configure' setups.
|
---|
4613 |
|
---|
4614 |
|
---|
4615 | File: autoconf.info, Node: Upgrading, Next: History, Prev: Questions, Up: Top
|
---|
4616 |
|
---|
4617 | Upgrading From Version 1
|
---|
4618 | ************************
|
---|
4619 |
|
---|
4620 | Autoconf version 2 is mostly backward compatible with version 1.
|
---|
4621 | However, it introduces better ways to do some things, and doesn't
|
---|
4622 | support some of the ugly things in version 1. So, depending on how
|
---|
4623 | sophisticated your `configure.in' files are, you might have to do some
|
---|
4624 | manual work in order to upgrade to version 2. This chapter points out
|
---|
4625 | some problems to watch for when upgrading. Also, perhaps your
|
---|
4626 | `configure' scripts could benefit from some of the new features in
|
---|
4627 | version 2; the changes are summarized in the file `NEWS' in the
|
---|
4628 | Autoconf distribution.
|
---|
4629 |
|
---|
4630 | First, make sure you have GNU `m4' version 1.1 or higher installed,
|
---|
4631 | preferably 1.3 or higher. Versions before 1.1 have bugs that prevent
|
---|
4632 | them from working with Autoconf version 2. Versions 1.3 and later are
|
---|
4633 | much faster than earlier versions, because as of version 1.3, GNU `m4'
|
---|
4634 | has a more efficient implementation of diversions and can freeze its
|
---|
4635 | internal state in a file that it can read back quickly.
|
---|
4636 |
|
---|
4637 | * Menu:
|
---|
4638 |
|
---|
4639 | * Changed File Names:: Files you might rename.
|
---|
4640 | * Changed Makefiles:: New things to put in `Makefile.in'.
|
---|
4641 | * Changed Macros:: Macro calls you might replace.
|
---|
4642 | * Invoking autoupdate:: Replacing old macro names in `configure.in'.
|
---|
4643 | * Changed Results:: Changes in how to check test results.
|
---|
4644 | * Changed Macro Writing:: Better ways to write your own macros.
|
---|
4645 |
|
---|
4646 |
|
---|
4647 | File: autoconf.info, Node: Changed File Names, Next: Changed Makefiles, Prev: Upgrading, Up: Upgrading
|
---|
4648 |
|
---|
4649 | Changed File Names
|
---|
4650 | ==================
|
---|
4651 |
|
---|
4652 | If you have an `aclocal.m4' installed with Autoconf (as opposed to
|
---|
4653 | in a particular package's source directory), you must rename it to
|
---|
4654 | `acsite.m4'. *Note Invoking autoconf::.
|
---|
4655 |
|
---|
4656 | If you distribute `install.sh' with your package, rename it to
|
---|
4657 | `install-sh' so `make' builtin rules won't inadvertently create a file
|
---|
4658 | called `install' from it. `AC_PROG_INSTALL' looks for the script under
|
---|
4659 | both names, but it is best to use the new name.
|
---|
4660 |
|
---|
4661 | If you were using `config.h.top' or `config.h.bot', you still can,
|
---|
4662 | but you will have less clutter if you merge them into `acconfig.h'.
|
---|
4663 | *Note Invoking autoheader::.
|
---|
4664 |
|
---|
4665 |
|
---|
4666 | File: autoconf.info, Node: Changed Makefiles, Next: Changed Macros, Prev: Changed File Names, Up: Upgrading
|
---|
4667 |
|
---|
4668 | Changed Makefiles
|
---|
4669 | =================
|
---|
4670 |
|
---|
4671 | Add `@CFLAGS@', `@CPPFLAGS@', and `@LDFLAGS@' in your `Makefile.in'
|
---|
4672 | files, so they can take advantage of the values of those variables in
|
---|
4673 | the environment when `configure' is run. Doing this isn't necessary,
|
---|
4674 | but it's a convenience for users.
|
---|
4675 |
|
---|
4676 | Also add `@configure_input@' in a comment to each non-`Makefile'
|
---|
4677 | input file for `AC_OUTPUT', so that the output files will contain a
|
---|
4678 | comment saying they were produced by `configure'. Automatically
|
---|
4679 | selecting the right comment syntax for all the kinds of files that
|
---|
4680 | people call `AC_OUTPUT' on became too much work.
|
---|
4681 |
|
---|
4682 | Add `config.log' and `config.cache' to the list of files you remove
|
---|
4683 | in `distclean' targets.
|
---|
4684 |
|
---|
4685 | If you have the following in `Makefile.in':
|
---|
4686 |
|
---|
4687 | prefix = /usr/local
|
---|
4688 | exec_prefix = ${prefix}
|
---|
4689 |
|
---|
4690 | you must change it to:
|
---|
4691 |
|
---|
4692 | prefix = @prefix@
|
---|
4693 | exec_prefix = @exec_prefix@
|
---|
4694 |
|
---|
4695 | The old behavior of replacing those variables without `@' characters
|
---|
4696 | around them has been removed.
|
---|
4697 |
|
---|
4698 |
|
---|
4699 | File: autoconf.info, Node: Changed Macros, Next: Invoking autoupdate, Prev: Changed Makefiles, Up: Upgrading
|
---|
4700 |
|
---|
4701 | Changed Macros
|
---|
4702 | ==============
|
---|
4703 |
|
---|
4704 | Many of the macros were renamed in Autoconf version 2. You can still
|
---|
4705 | use the old names, but the new ones are clearer, and it's easier to find
|
---|
4706 | the documentation for them. *Note Old Macro Names::, for a table
|
---|
4707 | showing the new names for the old macros. Use the `autoupdate' program
|
---|
4708 | to convert your `configure.in' to using the new macro names. *Note
|
---|
4709 | Invoking autoupdate::.
|
---|
4710 |
|
---|
4711 | Some macros have been superseded by similar ones that do the job
|
---|
4712 | better, but are not call-compatible. If you get warnings about calling
|
---|
4713 | obsolete macros while running `autoconf', you may safely ignore them,
|
---|
4714 | but your `configure' script will generally work better if you follow
|
---|
4715 | the advice it prints about what to replace the obsolete macros with. In
|
---|
4716 | particular, the mechanism for reporting the results of tests has
|
---|
4717 | changed. If you were using `echo' or `AC_VERBOSE' (perhaps via
|
---|
4718 | `AC_COMPILE_CHECK'), your `configure' script's output will look better
|
---|
4719 | if you switch to `AC_MSG_CHECKING' and `AC_MSG_RESULT'. *Note Printing
|
---|
4720 | Messages::. Those macros work best in conjunction with cache
|
---|
4721 | variables. *Note Caching Results::.
|
---|
4722 |
|
---|
4723 |
|
---|
4724 | File: autoconf.info, Node: Invoking autoupdate, Next: Changed Results, Prev: Changed Macros, Up: Upgrading
|
---|
4725 |
|
---|
4726 | Using `autoupdate' to Modernize `configure'
|
---|
4727 | ===========================================
|
---|
4728 |
|
---|
4729 | The `autoupdate' program updates a `configure.in' file that calls
|
---|
4730 | Autoconf macros by their old names to use the current macro names. In
|
---|
4731 | version 2 of Autoconf, most of the macros were renamed to use a more
|
---|
4732 | uniform and descriptive naming scheme. *Note Macro Names::, for a
|
---|
4733 | description of the new scheme. Although the old names still work
|
---|
4734 | (*note Old Macro Names::., for a list of the old macro names and the
|
---|
4735 | corresponding new names), you can make your `configure.in' files more
|
---|
4736 | readable and make it easier to use the current Autoconf documentation
|
---|
4737 | if you update them to use the new macro names.
|
---|
4738 |
|
---|
4739 | If given no arguments, `autoupdate' updates `configure.in', backing
|
---|
4740 | up the original version with the suffix `~' (or the value of the
|
---|
4741 | environment variable `SIMPLE_BACKUP_SUFFIX', if that is set). If you
|
---|
4742 | give `autoupdate' an argument, it reads that file instead of
|
---|
4743 | `configure.in' and writes the updated file to the standard output.
|
---|
4744 |
|
---|
4745 | `autoupdate' accepts the following options:
|
---|
4746 |
|
---|
4747 | `--help'
|
---|
4748 | `-h'
|
---|
4749 | Print a summary of the command line options and exit.
|
---|
4750 |
|
---|
4751 | `--macrodir=DIR'
|
---|
4752 | `-m DIR'
|
---|
4753 | Look for the Autoconf macro files in directory DIR instead of the
|
---|
4754 | default installation directory. You can also set the `AC_MACRODIR'
|
---|
4755 | environment variable to a directory; this option overrides the
|
---|
4756 | environment variable.
|
---|
4757 |
|
---|
4758 | `--version'
|
---|
4759 | Print the version number of `autoupdate' and exit.
|
---|
4760 |
|
---|
4761 |
|
---|
4762 | File: autoconf.info, Node: Changed Results, Next: Changed Macro Writing, Prev: Invoking autoupdate, Up: Upgrading
|
---|
4763 |
|
---|
4764 | Changed Results
|
---|
4765 | ===============
|
---|
4766 |
|
---|
4767 | If you were checking the results of previous tests by examining the
|
---|
4768 | shell variable `DEFS', you need to switch to checking the values of the
|
---|
4769 | cache variables for those tests. `DEFS' no longer exists while
|
---|
4770 | `configure' is running; it is only created when generating output
|
---|
4771 | files. This difference from version 1 is because properly quoting the
|
---|
4772 | contents of that variable turned out to be too cumbersome and
|
---|
4773 | inefficient to do every time `AC_DEFINE' is called. *Note Cache
|
---|
4774 | Variable Names::.
|
---|
4775 |
|
---|
4776 | For example, here is a `configure.in' fragment written for Autoconf
|
---|
4777 | version 1:
|
---|
4778 |
|
---|
4779 | AC_HAVE_FUNCS(syslog)
|
---|
4780 | case "$DEFS" in
|
---|
4781 | *-DHAVE_SYSLOG*) ;;
|
---|
4782 | *) # syslog is not in the default libraries. See if it's in some other.
|
---|
4783 | saved_LIBS="$LIBS"
|
---|
4784 | for lib in bsd socket inet; do
|
---|
4785 | AC_CHECKING(for syslog in -l$lib)
|
---|
4786 | LIBS="$saved_LIBS -l$lib"
|
---|
4787 | AC_HAVE_FUNCS(syslog)
|
---|
4788 | case "$DEFS" in
|
---|
4789 | *-DHAVE_SYSLOG*) break ;;
|
---|
4790 | *) ;;
|
---|
4791 | esac
|
---|
4792 | LIBS="$saved_LIBS"
|
---|
4793 | done ;;
|
---|
4794 | esac
|
---|
4795 |
|
---|
4796 | Here is a way to write it for version 2:
|
---|
4797 |
|
---|
4798 | AC_CHECK_FUNCS(syslog)
|
---|
4799 | if test $ac_cv_func_syslog = no; then
|
---|
4800 | # syslog is not in the default libraries. See if it's in some other.
|
---|
4801 | for lib in bsd socket inet; do
|
---|
4802 | AC_CHECK_LIB($lib, syslog, [AC_DEFINE(HAVE_SYSLOG)
|
---|
4803 | LIBS="$LIBS $lib"; break])
|
---|
4804 | done
|
---|
4805 | fi
|
---|
4806 |
|
---|
4807 | If you were working around bugs in `AC_DEFINE_UNQUOTED' by adding
|
---|
4808 | backslashes before quotes, you need to remove them. It now works
|
---|
4809 | predictably, and does not treat quotes (except backquotes) specially.
|
---|
4810 | *Note Setting Output Variables::.
|
---|
4811 |
|
---|
4812 | All of the boolean shell variables set by Autoconf macros now use
|
---|
4813 | `yes' for the true value. Most of them use `no' for false, though for
|
---|
4814 | backward compatibility some use the empty string instead. If you were
|
---|
4815 | relying on a shell variable being set to something like 1 or `t' for
|
---|
4816 | true, you need to change your tests.
|
---|
4817 |
|
---|
4818 |
|
---|
4819 | File: autoconf.info, Node: Changed Macro Writing, Prev: Changed Results, Up: Upgrading
|
---|
4820 |
|
---|
4821 | Changed Macro Writing
|
---|
4822 | =====================
|
---|
4823 |
|
---|
4824 | When defining your own macros, you should now use `AC_DEFUN' instead
|
---|
4825 | of `define'. `AC_DEFUN' automatically calls `AC_PROVIDE' and ensures
|
---|
4826 | that macros called via `AC_REQUIRE' do not interrupt other macros, to
|
---|
4827 | prevent nested `checking...' messages on the screen. There's no actual
|
---|
4828 | harm in continuing to use the older way, but it's less convenient and
|
---|
4829 | attractive. *Note Macro Definitions::.
|
---|
4830 |
|
---|
4831 | You probably looked at the macros that came with Autoconf as a guide
|
---|
4832 | for how to do things. It would be a good idea to take a look at the new
|
---|
4833 | versions of them, as the style is somewhat improved and they take
|
---|
4834 | advantage of some new features.
|
---|
4835 |
|
---|
4836 | If you were doing tricky things with undocumented Autoconf internals
|
---|
4837 | (macros, variables, diversions), check whether you need to change
|
---|
4838 | anything to account for changes that have been made. Perhaps you can
|
---|
4839 | even use an officially supported technique in version 2 instead of
|
---|
4840 | kludging. Or perhaps not.
|
---|
4841 |
|
---|
4842 | To speed up your locally written feature tests, add caching to them.
|
---|
4843 | See whether any of your tests are of general enough usefulness to
|
---|
4844 | encapsulate into macros that you can share.
|
---|
4845 |
|
---|
4846 |
|
---|
4847 | File: autoconf.info, Node: History, Next: Old Macro Names, Prev: Upgrading, Up: Top
|
---|
4848 |
|
---|
4849 | History of Autoconf
|
---|
4850 | *******************
|
---|
4851 |
|
---|
4852 | You may be wondering, Why was Autoconf originally written? How did
|
---|
4853 | it get into its present form? (Why does it look like gorilla spit?) If
|
---|
4854 | you're not wondering, then this chapter contains no information useful
|
---|
4855 | to you, and you might as well skip it. If you *are* wondering, then
|
---|
4856 | let there be light...
|
---|
4857 |
|
---|
4858 | * Menu:
|
---|
4859 |
|
---|
4860 | * Genesis:: Prehistory and naming of `configure'.
|
---|
4861 | * Exodus:: The plagues of `m4' and Perl.
|
---|
4862 | * Leviticus:: The priestly code of portability arrives.
|
---|
4863 | * Numbers:: Growth and contributors.
|
---|
4864 | * Deuteronomy:: Approaching the promises of easy configuration.
|
---|
4865 |
|
---|
4866 |
|
---|
4867 | File: autoconf.info, Node: Genesis, Next: Exodus, Prev: History, Up: History
|
---|
4868 |
|
---|
4869 | Genesis
|
---|
4870 | =======
|
---|
4871 |
|
---|
4872 | In June 1991 I was maintaining many of the GNU utilities for the Free
|
---|
4873 | Software Foundation. As they were ported to more platforms and more
|
---|
4874 | programs were added, the number of `-D' options that users had to
|
---|
4875 | select in the `Makefile' (around 20) became burdensome. Especially for
|
---|
4876 | me--I had to test each new release on a bunch of different systems. So
|
---|
4877 | I wrote a little shell script to guess some of the correct settings for
|
---|
4878 | the fileutils package, and released it as part of fileutils 2.0. That
|
---|
4879 | `configure' script worked well enough that the next month I adapted it
|
---|
4880 | (by hand) to create similar `configure' scripts for several other GNU
|
---|
4881 | utilities packages. Brian Berliner also adapted one of my scripts for
|
---|
4882 | his CVS revision control system.
|
---|
4883 |
|
---|
4884 | Later that summer, I learned that Richard Stallman and Richard Pixley
|
---|
4885 | were developing similar scripts to use in the GNU compiler tools; so I
|
---|
4886 | adapted my `configure' scripts to support their evolving interface:
|
---|
4887 | using the file name `Makefile.in' as the templates; adding `+srcdir',
|
---|
4888 | the first option (of many); and creating `config.status' files.
|
---|
4889 |
|
---|
4890 |
|
---|
4891 | File: autoconf.info, Node: Exodus, Next: Leviticus, Prev: Genesis, Up: History
|
---|
4892 |
|
---|
4893 | Exodus
|
---|
4894 | ======
|
---|
4895 |
|
---|
4896 | As I got feedback from users, I incorporated many improvements, using
|
---|
4897 | Emacs to search and replace, cut and paste, similar changes in each of
|
---|
4898 | the scripts. As I adapted more GNU utilities packages to use
|
---|
4899 | `configure' scripts, updating them all by hand became impractical.
|
---|
4900 | Rich Murphey, the maintainer of the GNU graphics utilities, sent me mail
|
---|
4901 | saying that the `configure' scripts were great, and asking if I had a
|
---|
4902 | tool for generating them that I could send him. No, I thought, but I
|
---|
4903 | should! So I started to work out how to generate them. And the
|
---|
4904 | journey from the slavery of hand-written `configure' scripts to the
|
---|
4905 | abundance and ease of Autoconf began.
|
---|
4906 |
|
---|
4907 | Cygnus `configure', which was being developed at around that time,
|
---|
4908 | is table driven; it is meant to deal mainly with a discrete number of
|
---|
4909 | system types with a small number of mainly unguessable features (such as
|
---|
4910 | details of the object file format). The automatic configuration system
|
---|
4911 | that Brian Fox had developed for Bash takes a similar approach. For
|
---|
4912 | general use, it seems to me a hopeless cause to try to maintain an
|
---|
4913 | up-to-date database of which features each variant of each operating
|
---|
4914 | system has. It's easier and more reliable to check for most features on
|
---|
4915 | the fly--especially on hybrid systems that people have hacked on
|
---|
4916 | locally or that have patches from vendors installed.
|
---|
4917 |
|
---|
4918 | I considered using an architecture similar to that of Cygnus
|
---|
4919 | `configure', where there is a single `configure' script that reads
|
---|
4920 | pieces of `configure.in' when run. But I didn't want to have to
|
---|
4921 | distribute all of the feature tests with every package, so I settled on
|
---|
4922 | having a different `configure' made from each `configure.in' by a
|
---|
4923 | preprocessor. That approach also offered more control and flexibility.
|
---|
4924 |
|
---|
4925 | I looked briefly into using the Metaconfig package, by Larry Wall,
|
---|
4926 | Harlan Stenn, and Raphael Manfredi, but I decided not to for several
|
---|
4927 | reasons. The `Configure' scripts it produces are interactive, which I
|
---|
4928 | find quite inconvenient; I didn't like the ways it checked for some
|
---|
4929 | features (such as library functions); I didn't know that it was still
|
---|
4930 | being maintained, and the `Configure' scripts I had seen didn't work on
|
---|
4931 | many modern systems (such as System V R4 and NeXT); it wasn't very
|
---|
4932 | flexible in what it could do in response to a feature's presence or
|
---|
4933 | absence; I found it confusing to learn; and it was too big and complex
|
---|
4934 | for my needs (I didn't realize then how much Autoconf would eventually
|
---|
4935 | have to grow).
|
---|
4936 |
|
---|
4937 | I considered using Perl to generate my style of `configure' scripts,
|
---|
4938 | but decided that `m4' was better suited to the job of simple textual
|
---|
4939 | substitutions: it gets in the way less, because output is implicit.
|
---|
4940 | Plus, everyone already has it. (Initially I didn't rely on the GNU
|
---|
4941 | extensions to `m4'.) Also, some of my friends at the University of
|
---|
4942 | Maryland had recently been putting `m4' front ends on several programs,
|
---|
4943 | including `tvtwm', and I was interested in trying out a new language.
|
---|
4944 |
|
---|
4945 |
|
---|
4946 | File: autoconf.info, Node: Leviticus, Next: Numbers, Prev: Exodus, Up: History
|
---|
4947 |
|
---|
4948 | Leviticus
|
---|
4949 | =========
|
---|
4950 |
|
---|
4951 | Since my `configure' scripts determine the system's capabilities
|
---|
4952 | automatically, with no interactive user intervention, I decided to call
|
---|
4953 | the program that generates them Autoconfig. But with a version number
|
---|
4954 | tacked on, that name would be too long for old UNIX file systems, so I
|
---|
4955 | shortened it to Autoconf.
|
---|
4956 |
|
---|
4957 | In the fall of 1991 I called together a group of fellow questers
|
---|
4958 | after the Holy Grail of portability (er, that is, alpha testers) to
|
---|
4959 | give me feedback as I encapsulated pieces of my handwritten scripts in
|
---|
4960 | `m4' macros and continued to add features and improve the techniques
|
---|
4961 | used in the checks. Prominent among the testers were Franc,ois Pinard,
|
---|
4962 | who came up with the idea of making an `autoconf' shell script to run
|
---|
4963 | `m4' and check for unresolved macro calls; Richard Pixley, who
|
---|
4964 | suggested running the compiler instead of searching the file system to
|
---|
4965 | find include files and symbols, for more accurate results; Karl Berry,
|
---|
4966 | who got Autoconf to configure TeX and added the macro index to the
|
---|
4967 | documentation; and Ian Taylor, who added support for creating a C
|
---|
4968 | header file as an alternative to putting `-D' options in a `Makefile',
|
---|
4969 | so he could use Autoconf for his UUCP package. The alpha testers
|
---|
4970 | cheerfully adjusted their files again and again as the names and
|
---|
4971 | calling conventions of the Autoconf macros changed from release to
|
---|
4972 | release. They all contributed many specific checks, great ideas, and
|
---|
4973 | bug fixes.
|
---|
4974 |
|
---|
4975 |
|
---|
4976 | File: autoconf.info, Node: Numbers, Next: Deuteronomy, Prev: Leviticus, Up: History
|
---|
4977 |
|
---|
4978 | Numbers
|
---|
4979 | =======
|
---|
4980 |
|
---|
4981 | In July 1992, after months of alpha testing, I released Autoconf 1.0,
|
---|
4982 | and converted many GNU packages to use it. I was surprised by how
|
---|
4983 | positive the reaction to it was. More people started using it than I
|
---|
4984 | could keep track of, including people working on software that wasn't
|
---|
4985 | part of the GNU Project (such as TCL, FSP, and Kerberos V5). Autoconf
|
---|
4986 | continued to improve rapidly, as many people using the `configure'
|
---|
4987 | scripts reported problems they encountered.
|
---|
4988 |
|
---|
4989 | Autoconf turned out to be a good torture test for `m4'
|
---|
4990 | implementations. UNIX `m4' started to dump core because of the length
|
---|
4991 | of the macros that Autoconf defined, and several bugs showed up in GNU
|
---|
4992 | `m4' as well. Eventually, we realized that we needed to use some
|
---|
4993 | features that only GNU `m4' has. 4.3BSD `m4', in particular, has an
|
---|
4994 | impoverished set of builtin macros; the System V version is better, but
|
---|
4995 | still doesn't provide everything we need.
|
---|
4996 |
|
---|
4997 | More development occurred as people put Autoconf under more stresses
|
---|
4998 | (and to uses I hadn't anticipated). Karl Berry added checks for X11.
|
---|
4999 | david zuhn contributed C++ support. Franc,ois Pinard made it diagnose
|
---|
5000 | invalid arguments. Jim Blandy bravely coerced it into configuring GNU
|
---|
5001 | Emacs, laying the groundwork for several later improvements. Roland
|
---|
5002 | McGrath got it to configure the GNU C Library, wrote the `autoheader'
|
---|
5003 | script to automate the creation of C header file templates, and added a
|
---|
5004 | `--verbose' option to `configure'. Noah Friedman added the
|
---|
5005 | `--macrodir' option and `AC_MACRODIR' environment variable. (He also
|
---|
5006 | coined the term "autoconfiscate" to mean "adapt a software package to
|
---|
5007 | use Autoconf".) Roland and Noah improved the quoting protection in
|
---|
5008 | `AC_DEFINE' and fixed many bugs, especially when I got sick of dealing
|
---|
5009 | with portability problems from February through June, 1993.
|
---|
5010 |
|
---|
5011 |
|
---|
5012 | File: autoconf.info, Node: Deuteronomy, Prev: Numbers, Up: History
|
---|
5013 |
|
---|
5014 | Deuteronomy
|
---|
5015 | ===========
|
---|
5016 |
|
---|
5017 | A long wish list for major features had accumulated, and the effect
|
---|
5018 | of several years of patching by various people had left some residual
|
---|
5019 | cruft. In April 1994, while working for Cygnus Support, I began a major
|
---|
5020 | revision of Autoconf. I added most of the features of the Cygnus
|
---|
5021 | `configure' that Autoconf had lacked, largely by adapting the relevant
|
---|
5022 | parts of Cygnus `configure' with the help of david zuhn and Ken
|
---|
5023 | Raeburn. These features include support for using `config.sub',
|
---|
5024 | `config.guess', `--host', and `--target'; making links to files; and
|
---|
5025 | running `configure' scripts in subdirectories. Adding these features
|
---|
5026 | enabled Ken to convert GNU `as', and Rob Savoye to convert DejaGNU, to
|
---|
5027 | using Autoconf.
|
---|
5028 |
|
---|
5029 | I added more features in response to other peoples' requests. Many
|
---|
5030 | people had asked for `configure' scripts to share the results of the
|
---|
5031 | checks between runs, because (particularly when configuring a large
|
---|
5032 | source tree, like Cygnus does) they were frustratingly slow. Mike
|
---|
5033 | Haertel suggested adding site-specific initialization scripts. People
|
---|
5034 | distributing software that had to unpack on MS-DOS asked for a way to
|
---|
5035 | override the `.in' extension on the file names, which produced file
|
---|
5036 | names like `config.h.in' containing two dots. Jim Avera did an
|
---|
5037 | extensive examination of the problems with quoting in `AC_DEFINE' and
|
---|
5038 | `AC_SUBST'; his insights led to significant improvements. Richard
|
---|
5039 | Stallman asked that compiler output be sent to `config.log' instead of
|
---|
5040 | `/dev/null', to help people debug the Emacs `configure' script.
|
---|
5041 |
|
---|
5042 | I made some other changes because of my dissatisfaction with the
|
---|
5043 | quality of the program. I made the messages showing results of the
|
---|
5044 | checks less ambiguous, always printing a result. I regularized the
|
---|
5045 | names of the macros and cleaned up coding style inconsistencies. I
|
---|
5046 | added some auxiliary utilities that I had developed to help convert
|
---|
5047 | source code packages to use Autoconf. With the help of Franc,ois
|
---|
5048 | Pinard, I made the macros not interrupt each others' messages. (That
|
---|
5049 | feature revealed some performance bottlenecks in GNU `m4', which he
|
---|
5050 | hastily corrected!) I reorganized the documentation around problems
|
---|
5051 | people want to solve. And I began a testsuite, because experience had
|
---|
5052 | shown that Autoconf has a pronounced tendency to regress when we change
|
---|
5053 | it.
|
---|
5054 |
|
---|
5055 | Again, several alpha testers gave invaluable feedback, especially
|
---|
5056 | Franc,ois Pinard, Jim Meyering, Karl Berry, Rob Savoye, Ken Raeburn,
|
---|
5057 | and Mark Eichin.
|
---|
5058 |
|
---|
5059 | Finally, version 2.0 was ready. And there was much rejoicing. (And
|
---|
5060 | I have free time again. I think. Yeah, right.)
|
---|
5061 |
|
---|
5062 |
|
---|
5063 | File: autoconf.info, Node: Old Macro Names, Next: Environment Variable Index, Prev: History, Up: Top
|
---|
5064 |
|
---|
5065 | Old Macro Names
|
---|
5066 | ***************
|
---|
5067 |
|
---|
5068 | In version 2 of Autoconf, most of the macros were renamed to use a
|
---|
5069 | more uniform and descriptive naming scheme. Here are the old names of
|
---|
5070 | the macros that were renamed, followed by the current names of those
|
---|
5071 | macros. Although the old names are still accepted by the `autoconf'
|
---|
5072 | program for backward compatibility, the old names are considered
|
---|
5073 | obsolete. *Note Macro Names::, for a description of the new naming
|
---|
5074 | scheme.
|
---|
5075 |
|
---|
5076 | `AC_ALLOCA'
|
---|
5077 | `AC_FUNC_ALLOCA'
|
---|
5078 |
|
---|
5079 | `AC_ARG_ARRAY'
|
---|
5080 | removed because of limited usefulness
|
---|
5081 |
|
---|
5082 | `AC_CHAR_UNSIGNED'
|
---|
5083 | `AC_C_CHAR_UNSIGNED'
|
---|
5084 |
|
---|
5085 | `AC_CONST'
|
---|
5086 | `AC_C_CONST'
|
---|
5087 |
|
---|
5088 | `AC_CROSS_CHECK'
|
---|
5089 | `AC_C_CROSS'
|
---|
5090 |
|
---|
5091 | `AC_ERROR'
|
---|
5092 | `AC_MSG_ERROR'
|
---|
5093 |
|
---|
5094 | `AC_FIND_X'
|
---|
5095 | `AC_PATH_X'
|
---|
5096 |
|
---|
5097 | `AC_FIND_XTRA'
|
---|
5098 | `AC_PATH_XTRA'
|
---|
5099 |
|
---|
5100 | `AC_FUNC_CHECK'
|
---|
5101 | `AC_CHECK_FUNC'
|
---|
5102 |
|
---|
5103 | `AC_GCC_TRADITIONAL'
|
---|
5104 | `AC_PROG_GCC_TRADITIONAL'
|
---|
5105 |
|
---|
5106 | `AC_GETGROUPS_T'
|
---|
5107 | `AC_TYPE_GETGROUPS'
|
---|
5108 |
|
---|
5109 | `AC_GETLOADAVG'
|
---|
5110 | `AC_FUNC_GETLOADAVG'
|
---|
5111 |
|
---|
5112 | `AC_HAVE_FUNCS'
|
---|
5113 | `AC_CHECK_FUNCS'
|
---|
5114 |
|
---|
5115 | `AC_HAVE_HEADERS'
|
---|
5116 | `AC_CHECK_HEADERS'
|
---|
5117 |
|
---|
5118 | `AC_HAVE_POUNDBANG'
|
---|
5119 | `AC_SYS_INTERPRETER' (different calling convention)
|
---|
5120 |
|
---|
5121 | `AC_HEADER_CHECK'
|
---|
5122 | `AC_CHECK_HEADER'
|
---|
5123 |
|
---|
5124 | `AC_HEADER_EGREP'
|
---|
5125 | `AC_EGREP_HEADER'
|
---|
5126 |
|
---|
5127 | `AC_INLINE'
|
---|
5128 | `AC_C_INLINE'
|
---|
5129 |
|
---|
5130 | `AC_LN_S'
|
---|
5131 | `AC_PROG_LN_S'
|
---|
5132 |
|
---|
5133 | `AC_LONG_DOUBLE'
|
---|
5134 | `AC_C_LONG_DOUBLE'
|
---|
5135 |
|
---|
5136 | `AC_LONG_FILE_NAMES'
|
---|
5137 | `AC_SYS_LONG_FILE_NAMES'
|
---|
5138 |
|
---|
5139 | `AC_MAJOR_HEADER'
|
---|
5140 | `AC_HEADER_MAJOR'
|
---|
5141 |
|
---|
5142 | `AC_MINUS_C_MINUS_O'
|
---|
5143 | `AC_PROG_CC_C_O'
|
---|
5144 |
|
---|
5145 | `AC_MMAP'
|
---|
5146 | `AC_FUNC_MMAP'
|
---|
5147 |
|
---|
5148 | `AC_MODE_T'
|
---|
5149 | `AC_TYPE_MODE_T'
|
---|
5150 |
|
---|
5151 | `AC_OFF_T'
|
---|
5152 | `AC_TYPE_OFF_T'
|
---|
5153 |
|
---|
5154 | `AC_PID_T'
|
---|
5155 | `AC_TYPE_PID_T'
|
---|
5156 |
|
---|
5157 | `AC_PREFIX'
|
---|
5158 | `AC_PREFIX_PROGRAM'
|
---|
5159 |
|
---|
5160 | `AC_PROGRAMS_CHECK'
|
---|
5161 | `AC_CHECK_PROGS'
|
---|
5162 |
|
---|
5163 | `AC_PROGRAMS_PATH'
|
---|
5164 | `AC_PATH_PROGS'
|
---|
5165 |
|
---|
5166 | `AC_PROGRAM_CHECK'
|
---|
5167 | `AC_CHECK_PROG'
|
---|
5168 |
|
---|
5169 | `AC_PROGRAM_EGREP'
|
---|
5170 | `AC_EGREP_CPP'
|
---|
5171 |
|
---|
5172 | `AC_PROGRAM_PATH'
|
---|
5173 | `AC_PATH_PROG'
|
---|
5174 |
|
---|
5175 | `AC_REMOTE_TAPE'
|
---|
5176 | removed because of limited usefulness
|
---|
5177 |
|
---|
5178 | `AC_RESTARTABLE_SYSCALLS'
|
---|
5179 | `AC_SYS_RESTARTABLE_SYSCALLS'
|
---|
5180 |
|
---|
5181 | `AC_RETSIGTYPE'
|
---|
5182 | `AC_TYPE_SIGNAL'
|
---|
5183 |
|
---|
5184 | `AC_RSH'
|
---|
5185 | removed because of limited usefulness
|
---|
5186 |
|
---|
5187 | `AC_SETVBUF_REVERSED'
|
---|
5188 | `AC_FUNC_SETVBUF_REVERSED'
|
---|
5189 |
|
---|
5190 | `AC_SET_MAKE'
|
---|
5191 | `AC_PROG_MAKE_SET'
|
---|
5192 |
|
---|
5193 | `AC_SIZEOF_TYPE'
|
---|
5194 | `AC_CHECK_SIZEOF'
|
---|
5195 |
|
---|
5196 | `AC_SIZE_T'
|
---|
5197 | `AC_TYPE_SIZE_T'
|
---|
5198 |
|
---|
5199 | `AC_STAT_MACROS_BROKEN'
|
---|
5200 | `AC_HEADER_STAT'
|
---|
5201 |
|
---|
5202 | `AC_STDC_HEADERS'
|
---|
5203 | `AC_HEADER_STDC'
|
---|
5204 |
|
---|
5205 | `AC_STRCOLL'
|
---|
5206 | `AC_FUNC_STRCOLL'
|
---|
5207 |
|
---|
5208 | `AC_ST_BLKSIZE'
|
---|
5209 | `AC_STRUCT_ST_BLKSIZE'
|
---|
5210 |
|
---|
5211 | `AC_ST_BLOCKS'
|
---|
5212 | `AC_STRUCT_ST_BLOCKS'
|
---|
5213 |
|
---|
5214 | `AC_ST_RDEV'
|
---|
5215 | `AC_STRUCT_ST_RDEV'
|
---|
5216 |
|
---|
5217 | `AC_SYS_SIGLIST_DECLARED'
|
---|
5218 | `AC_DECL_SYS_SIGLIST'
|
---|
5219 |
|
---|
5220 | `AC_TEST_CPP'
|
---|
5221 | `AC_TRY_CPP'
|
---|
5222 |
|
---|
5223 | `AC_TEST_PROGRAM'
|
---|
5224 | `AC_TRY_RUN'
|
---|
5225 |
|
---|
5226 | `AC_TIMEZONE'
|
---|
5227 | `AC_STRUCT_TIMEZONE'
|
---|
5228 |
|
---|
5229 | `AC_TIME_WITH_SYS_TIME'
|
---|
5230 | `AC_HEADER_TIME'
|
---|
5231 |
|
---|
5232 | `AC_UID_T'
|
---|
5233 | `AC_TYPE_UID_T'
|
---|
5234 |
|
---|
5235 | `AC_UTIME_NULL'
|
---|
5236 | `AC_FUNC_UTIME_NULL'
|
---|
5237 |
|
---|
5238 | `AC_VFORK'
|
---|
5239 | `AC_FUNC_VFORK'
|
---|
5240 |
|
---|
5241 | `AC_VPRINTF'
|
---|
5242 | `AC_FUNC_VPRINTF'
|
---|
5243 |
|
---|
5244 | `AC_WAIT3'
|
---|
5245 | `AC_FUNC_WAIT3'
|
---|
5246 |
|
---|
5247 | `AC_WARN'
|
---|
5248 | `AC_MSG_WARN'
|
---|
5249 |
|
---|
5250 | `AC_WORDS_BIGENDIAN'
|
---|
5251 | `AC_C_BIGENDIAN'
|
---|
5252 |
|
---|
5253 | `AC_YYTEXT_POINTER'
|
---|
5254 | `AC_DECL_YYTEXT'
|
---|
5255 |
|
---|
5256 |
|
---|
5257 | File: autoconf.info, Node: Environment Variable Index, Next: Output Variable Index, Prev: Old Macro Names, Up: Top
|
---|
5258 |
|
---|
5259 | Environment Variable Index
|
---|
5260 | **************************
|
---|
5261 |
|
---|
5262 | This is an alphabetical list of the environment variables that
|
---|
5263 | Autoconf checks.
|
---|
5264 |
|
---|
5265 | * Menu:
|
---|
5266 |
|
---|
5267 | * AC_MACRODIR <1>: Invoking autoupdate.
|
---|
5268 | * AC_MACRODIR <2>: Invoking autoheader.
|
---|
5269 | * AC_MACRODIR <3>: Invoking autoreconf.
|
---|
5270 | * AC_MACRODIR <4>: Invoking autoconf.
|
---|
5271 | * AC_MACRODIR <5>: Invoking ifnames.
|
---|
5272 | * AC_MACRODIR: Invoking autoscan.
|
---|
5273 | * CONFIG_FILES: Invoking config.status.
|
---|
5274 | * CONFIG_HEADERS: Invoking config.status.
|
---|
5275 | * CONFIG_SHELL: Invoking config.status.
|
---|
5276 | * CONFIG_SITE: Site Defaults.
|
---|
5277 | * CONFIG_STATUS: Invoking config.status.
|
---|
5278 | * SIMPLE_BACKUP_SUFFIX: Invoking autoupdate.
|
---|
5279 |
|
---|
5280 |
|
---|
5281 | File: autoconf.info, Node: Output Variable Index, Next: Preprocessor Symbol Index, Prev: Environment Variable Index, Up: Top
|
---|
5282 |
|
---|
5283 | Output Variable Index
|
---|
5284 | *********************
|
---|
5285 |
|
---|
5286 | This is an alphabetical list of the variables that Autoconf can
|
---|
5287 | substitute into files that it creates, typically one or more
|
---|
5288 | `Makefile's. *Note Setting Output Variables::, for more information on
|
---|
5289 | how this is done.
|
---|
5290 |
|
---|
5291 | * Menu:
|
---|
5292 |
|
---|
5293 | * ALLOCA: Particular Functions.
|
---|
5294 | * AWK: Particular Programs.
|
---|
5295 | * bindir: Preset Output Variables.
|
---|
5296 | * build: System Type Variables.
|
---|
5297 | * build_alias: System Type Variables.
|
---|
5298 | * build_cpu: System Type Variables.
|
---|
5299 | * build_os: System Type Variables.
|
---|
5300 | * build_vendor: System Type Variables.
|
---|
5301 | * CC <1>: UNIX Variants.
|
---|
5302 | * CC: Particular Programs.
|
---|
5303 | * CFLAGS <1>: Particular Programs.
|
---|
5304 | * CFLAGS: Preset Output Variables.
|
---|
5305 | * configure_input: Preset Output Variables.
|
---|
5306 | * CPP: Particular Programs.
|
---|
5307 | * CPPFLAGS: Preset Output Variables.
|
---|
5308 | * CXX: Particular Programs.
|
---|
5309 | * CXXCPP: Particular Programs.
|
---|
5310 | * CXXFLAGS <1>: Particular Programs.
|
---|
5311 | * CXXFLAGS: Preset Output Variables.
|
---|
5312 | * datadir: Preset Output Variables.
|
---|
5313 | * DEFS: Preset Output Variables.
|
---|
5314 | * exec_prefix: Preset Output Variables.
|
---|
5315 | * EXEEXT: System Services.
|
---|
5316 | * F77: Particular Programs.
|
---|
5317 | * FFLAGS <1>: Particular Programs.
|
---|
5318 | * FFLAGS: Preset Output Variables.
|
---|
5319 | * FLIBS: Fortran 77 Compiler Characteristics.
|
---|
5320 | * host: System Type Variables.
|
---|
5321 | * host_alias: System Type Variables.
|
---|
5322 | * host_cpu: System Type Variables.
|
---|
5323 | * host_os: System Type Variables.
|
---|
5324 | * host_vendor: System Type Variables.
|
---|
5325 | * includedir: Preset Output Variables.
|
---|
5326 | * infodir: Preset Output Variables.
|
---|
5327 | * INSTALL: Particular Programs.
|
---|
5328 | * INSTALL_DATA: Particular Programs.
|
---|
5329 | * INSTALL_PROGRAM: Particular Programs.
|
---|
5330 | * INSTALL_SCRIPT: Particular Programs.
|
---|
5331 | * KMEM_GROUP: Particular Functions.
|
---|
5332 | * LDFLAGS: Preset Output Variables.
|
---|
5333 | * LEX: Particular Programs.
|
---|
5334 | * LEX_OUTPUT_ROOT: Particular Programs.
|
---|
5335 | * LEXLIB: Particular Programs.
|
---|
5336 | * libdir: Preset Output Variables.
|
---|
5337 | * libexecdir: Preset Output Variables.
|
---|
5338 | * LIBOBJS <1>: Structures.
|
---|
5339 | * LIBOBJS <2>: Generic Functions.
|
---|
5340 | * LIBOBJS: Particular Functions.
|
---|
5341 | * LIBS <1>: UNIX Variants.
|
---|
5342 | * LIBS: Preset Output Variables.
|
---|
5343 | * LN_S: Particular Programs.
|
---|
5344 | * localstatedir: Preset Output Variables.
|
---|
5345 | * mandir: Preset Output Variables.
|
---|
5346 | * NEED_SETGID: Particular Functions.
|
---|
5347 | * OBJEXT: System Services.
|
---|
5348 | * oldincludedir: Preset Output Variables.
|
---|
5349 | * prefix: Preset Output Variables.
|
---|
5350 | * program_transform_name: Transforming Names.
|
---|
5351 | * RANLIB: Particular Programs.
|
---|
5352 | * sbindir: Preset Output Variables.
|
---|
5353 | * SET_MAKE: Output.
|
---|
5354 | * sharedstatedir: Preset Output Variables.
|
---|
5355 | * srcdir: Preset Output Variables.
|
---|
5356 | * subdirs: Subdirectories.
|
---|
5357 | * sysconfdir: Preset Output Variables.
|
---|
5358 | * target: System Type Variables.
|
---|
5359 | * target_alias: System Type Variables.
|
---|
5360 | * target_cpu: System Type Variables.
|
---|
5361 | * target_os: System Type Variables.
|
---|
5362 | * target_vendor: System Type Variables.
|
---|
5363 | * top_srcdir: Preset Output Variables.
|
---|
5364 | * X_CFLAGS: System Services.
|
---|
5365 | * X_EXTRA_LIBS: System Services.
|
---|
5366 | * X_LIBS: System Services.
|
---|
5367 | * X_PRE_LIBS: System Services.
|
---|
5368 | * YACC: Particular Programs.
|
---|
5369 |
|
---|
5370 |
|
---|
5371 | File: autoconf.info, Node: Preprocessor Symbol Index, Next: Macro Index, Prev: Output Variable Index, Up: Top
|
---|
5372 |
|
---|
5373 | Preprocessor Symbol Index
|
---|
5374 | *************************
|
---|
5375 |
|
---|
5376 | This is an alphabetical list of the C preprocessor symbols that the
|
---|
5377 | Autoconf macros define. To work with Autoconf, C source code needs to
|
---|
5378 | use these names in `#if' directives.
|
---|
5379 |
|
---|
5380 | * Menu:
|
---|
5381 |
|
---|
5382 | * __CHAR_UNSIGNED__: C Compiler Characteristics.
|
---|
5383 | * _ALL_SOURCE: UNIX Variants.
|
---|
5384 | * _MINIX: UNIX Variants.
|
---|
5385 | * _POSIX_1_SOURCE: UNIX Variants.
|
---|
5386 | * _POSIX_SOURCE: UNIX Variants.
|
---|
5387 | * _POSIX_VERSION: Particular Headers.
|
---|
5388 | * C_ALLOCA: Particular Functions.
|
---|
5389 | * CLOSEDIR_VOID: Particular Functions.
|
---|
5390 | * const: C Compiler Characteristics.
|
---|
5391 | * DGUX: Particular Functions.
|
---|
5392 | * DIRENT: Particular Headers.
|
---|
5393 | * F77_NO_MINUS_C_MINUS_O: Particular Programs.
|
---|
5394 | * GETGROUPS_T: Particular Typedefs.
|
---|
5395 | * GETLODAVG_PRIVILEGED: Particular Functions.
|
---|
5396 | * GETPGRP_VOID: Particular Functions.
|
---|
5397 | * gid_t: Particular Typedefs.
|
---|
5398 | * HAVE_ALLOCA_H: Particular Functions.
|
---|
5399 | * HAVE_CONFIG_H: Configuration Headers.
|
---|
5400 | * HAVE_DIRENT_H: Particular Headers.
|
---|
5401 | * HAVE_DOPRNT: Particular Functions.
|
---|
5402 | * HAVE_FUNCTION: Generic Functions.
|
---|
5403 | * HAVE_GETMNTENT: Particular Functions.
|
---|
5404 | * HAVE_HEADER: Generic Headers.
|
---|
5405 | * HAVE_LONG_DOUBLE: C Compiler Characteristics.
|
---|
5406 | * HAVE_LONG_FILE_NAMES: System Services.
|
---|
5407 | * HAVE_MMAP: Particular Functions.
|
---|
5408 | * HAVE_NDIR_H: Particular Headers.
|
---|
5409 | * HAVE_RESTARTABLE_SYSCALLS: System Services.
|
---|
5410 | * HAVE_ST_BLKSIZE: Structures.
|
---|
5411 | * HAVE_ST_BLOCKS: Structures.
|
---|
5412 | * HAVE_ST_RDEV: Structures.
|
---|
5413 | * HAVE_STRCOLL: Particular Functions.
|
---|
5414 | * HAVE_STRFTIME: Particular Functions.
|
---|
5415 | * HAVE_STRINGIZE: C Compiler Characteristics.
|
---|
5416 | * HAVE_SYS_DIR_H: Particular Headers.
|
---|
5417 | * HAVE_SYS_NDIR_H: Particular Headers.
|
---|
5418 | * HAVE_SYS_WAIT_H: Particular Headers.
|
---|
5419 | * HAVE_TM_ZONE: Structures.
|
---|
5420 | * HAVE_TZNAME: Structures.
|
---|
5421 | * HAVE_UNISTD_H: Particular Headers.
|
---|
5422 | * HAVE_UTIME_NULL: Particular Functions.
|
---|
5423 | * HAVE_VFORK_H: Particular Functions.
|
---|
5424 | * HAVE_VPRINTF: Particular Functions.
|
---|
5425 | * HAVE_WAIT3: Particular Functions.
|
---|
5426 | * inline: C Compiler Characteristics.
|
---|
5427 | * INT_16_BITS: C Compiler Characteristics.
|
---|
5428 | * LONG_64_BITS: C Compiler Characteristics.
|
---|
5429 | * MAJOR_IN_MKDEV: Particular Headers.
|
---|
5430 | * MAJOR_IN_SYSMACROS: Particular Headers.
|
---|
5431 | * mode_t: Particular Typedefs.
|
---|
5432 | * NDIR: Particular Headers.
|
---|
5433 | * NEED_MEMORY_H: Particular Headers.
|
---|
5434 | * NEED_SETGID: Particular Functions.
|
---|
5435 | * NLIST_NAME_UNION: Particular Functions.
|
---|
5436 | * NLIST_STRUCT: Particular Functions.
|
---|
5437 | * NO_MINUS_C_MINUS_O: Particular Programs.
|
---|
5438 | * off_t: Particular Typedefs.
|
---|
5439 | * pid_t: Particular Typedefs.
|
---|
5440 | * RETSIGTYPE: Particular Typedefs.
|
---|
5441 | * SELECT_TYPE_ARG1: Particular Functions.
|
---|
5442 | * SELECT_TYPE_ARG234: Particular Functions.
|
---|
5443 | * SELECT_TYPE_ARG5: Particular Functions.
|
---|
5444 | * SETPGRP_VOID: Particular Functions.
|
---|
5445 | * SETVBUF_REVERSED: Particular Functions.
|
---|
5446 | * size_t: Particular Typedefs.
|
---|
5447 | * STDC_HEADERS: Particular Headers.
|
---|
5448 | * SVR4: Particular Functions.
|
---|
5449 | * SYS_SIGLIST_DECLARED: Particular Headers.
|
---|
5450 | * SYSDIR: Particular Headers.
|
---|
5451 | * SYSNDIR: Particular Headers.
|
---|
5452 | * TIME_WITH_SYS_TIME: Structures.
|
---|
5453 | * TM_IN_SYS_TIME: Structures.
|
---|
5454 | * uid_t: Particular Typedefs.
|
---|
5455 | * UMAX: Particular Functions.
|
---|
5456 | * UMAX4_3: Particular Functions.
|
---|
5457 | * USG: Particular Headers.
|
---|
5458 | * vfork: Particular Functions.
|
---|
5459 | * VOID_CLOSEDIR: Particular Headers.
|
---|
5460 | * WORDS_BIGENDIAN: C Compiler Characteristics.
|
---|
5461 | * YYTEXT_POINTER: Particular Programs.
|
---|
5462 |
|
---|
5463 |
|
---|
5464 | File: autoconf.info, Node: Macro Index, Prev: Preprocessor Symbol Index, Up: Top
|
---|
5465 |
|
---|
5466 | Macro Index
|
---|
5467 | ***********
|
---|
5468 |
|
---|
5469 | This is an alphabetical list of the Autoconf macros. To make the
|
---|
5470 | list easier to use, the macros are listed without their preceding `AC_'.
|
---|
5471 |
|
---|
5472 | * Menu:
|
---|
5473 |
|
---|
5474 | * AIX: UNIX Variants.
|
---|
5475 | * ALLOCA: Old Macro Names.
|
---|
5476 | * ARG_ARRAY: Old Macro Names.
|
---|
5477 | * ARG_ENABLE: Package Options.
|
---|
5478 | * ARG_PROGRAM: Transforming Names.
|
---|
5479 | * ARG_WITH: External Software.
|
---|
5480 | * BEFORE: Suggested Ordering.
|
---|
5481 | * C_BIGENDIAN: C Compiler Characteristics.
|
---|
5482 | * C_CHAR_UNSIGNED: C Compiler Characteristics.
|
---|
5483 | * C_CONST: C Compiler Characteristics.
|
---|
5484 | * C_CROSS: Test Programs.
|
---|
5485 | * C_INLINE: C Compiler Characteristics.
|
---|
5486 | * C_LONG_DOUBLE: C Compiler Characteristics.
|
---|
5487 | * C_STRINGIZE: C Compiler Characteristics.
|
---|
5488 | * CACHE_CHECK: Caching Results.
|
---|
5489 | * CACHE_LOAD: Caching Results.
|
---|
5490 | * CACHE_SAVE: Caching Results.
|
---|
5491 | * CACHE_VAL: Caching Results.
|
---|
5492 | * CANONICAL_HOST: Canonicalizing.
|
---|
5493 | * CANONICAL_SYSTEM: Canonicalizing.
|
---|
5494 | * CHAR_UNSIGNED: Old Macro Names.
|
---|
5495 | * CHECK_FILE: Generic Programs.
|
---|
5496 | * CHECK_FILES: Generic Programs.
|
---|
5497 | * CHECK_FUNC: Generic Functions.
|
---|
5498 | * CHECK_FUNCS: Generic Functions.
|
---|
5499 | * CHECK_HEADER: Generic Headers.
|
---|
5500 | * CHECK_HEADERS: Generic Headers.
|
---|
5501 | * CHECK_LIB: Libraries.
|
---|
5502 | * CHECK_PROG: Generic Programs.
|
---|
5503 | * CHECK_PROGS: Generic Programs.
|
---|
5504 | * CHECK_SIZEOF: C Compiler Characteristics.
|
---|
5505 | * CHECK_TOOL: Generic Programs.
|
---|
5506 | * CHECK_TYPE: Generic Typedefs.
|
---|
5507 | * CHECKING: Printing Messages.
|
---|
5508 | * COMPILE_CHECK: Examining Libraries.
|
---|
5509 | * CONFIG_AUX_DIR: Input.
|
---|
5510 | * CONFIG_HEADER: Configuration Headers.
|
---|
5511 | * CONFIG_SUBDIRS: Subdirectories.
|
---|
5512 | * CONST: Old Macro Names.
|
---|
5513 | * CROSS_CHECK: Old Macro Names.
|
---|
5514 | * CYGWIN: System Services.
|
---|
5515 | * DECL_SYS_SIGLIST: Particular Headers.
|
---|
5516 | * DECL_YYTEXT: Particular Programs.
|
---|
5517 | * DEFINE: Defining Symbols.
|
---|
5518 | * DEFINE_UNQUOTED: Defining Symbols.
|
---|
5519 | * DEFUN: Macro Definitions.
|
---|
5520 | * DIR_HEADER: Particular Headers.
|
---|
5521 | * DYNIX_SEQ: UNIX Variants.
|
---|
5522 | * EGREP_CPP: Examining Declarations.
|
---|
5523 | * EGREP_HEADER: Examining Declarations.
|
---|
5524 | * ENABLE: Package Options.
|
---|
5525 | * ERROR: Old Macro Names.
|
---|
5526 | * EXEEXT: System Services.
|
---|
5527 | * F77_LIBRARY_LDFLAGS: Fortran 77 Compiler Characteristics.
|
---|
5528 | * FIND_X: Old Macro Names.
|
---|
5529 | * FIND_XTRA: Old Macro Names.
|
---|
5530 | * FUNC_ALLOCA: Particular Functions.
|
---|
5531 | * FUNC_CHECK: Old Macro Names.
|
---|
5532 | * FUNC_CLOSEDIR_VOID: Particular Functions.
|
---|
5533 | * FUNC_FNMATCH: Particular Functions.
|
---|
5534 | * FUNC_GETLOADAVG: Particular Functions.
|
---|
5535 | * FUNC_GETMNTENT: Particular Functions.
|
---|
5536 | * FUNC_GETPGRP: Particular Functions.
|
---|
5537 | * FUNC_MEMCMP: Particular Functions.
|
---|
5538 | * FUNC_MMAP: Particular Functions.
|
---|
5539 | * FUNC_SELECT_ARGTYPES: Particular Functions.
|
---|
5540 | * FUNC_SETPGRP: Particular Functions.
|
---|
5541 | * FUNC_SETVBUF_REVERSED: Particular Functions.
|
---|
5542 | * FUNC_STRCOLL: Particular Functions.
|
---|
5543 | * FUNC_STRFTIME: Particular Functions.
|
---|
5544 | * FUNC_UTIME_NULL: Particular Functions.
|
---|
5545 | * FUNC_VFORK: Particular Functions.
|
---|
5546 | * FUNC_VPRINTF: Particular Functions.
|
---|
5547 | * FUNC_WAIT3: Particular Functions.
|
---|
5548 | * GCC_TRADITIONAL: Old Macro Names.
|
---|
5549 | * GETGROUPS_T: Old Macro Names.
|
---|
5550 | * GETLOADAVG: Old Macro Names.
|
---|
5551 | * HAVE_FUNCS: Old Macro Names.
|
---|
5552 | * HAVE_HEADERS: Old Macro Names.
|
---|
5553 | * HAVE_LIBRARY: Libraries.
|
---|
5554 | * HAVE_POUNDBANG: Old Macro Names.
|
---|
5555 | * HEADER_CHECK: Old Macro Names.
|
---|
5556 | * HEADER_DIRENT: Particular Headers.
|
---|
5557 | * HEADER_EGREP: Old Macro Names.
|
---|
5558 | * HEADER_MAJOR: Particular Headers.
|
---|
5559 | * HEADER_STAT: Structures.
|
---|
5560 | * HEADER_STDC: Particular Headers.
|
---|
5561 | * HEADER_SYS_WAIT: Particular Headers.
|
---|
5562 | * HEADER_TIME: Structures.
|
---|
5563 | * INIT: Input.
|
---|
5564 | * INLINE: Old Macro Names.
|
---|
5565 | * INT_16_BITS: C Compiler Characteristics.
|
---|
5566 | * IRIX_SUN: UNIX Variants.
|
---|
5567 | * ISC_POSIX: UNIX Variants.
|
---|
5568 | * LANG_C: Language Choice.
|
---|
5569 | * LANG_CPLUSPLUS: Language Choice.
|
---|
5570 | * LANG_FORTRAN77: Language Choice.
|
---|
5571 | * LANG_RESTORE: Language Choice.
|
---|
5572 | * LANG_SAVE: Language Choice.
|
---|
5573 | * LINK_FILES: Using System Type.
|
---|
5574 | * LN_S: Old Macro Names.
|
---|
5575 | * LONG_64_BITS: C Compiler Characteristics.
|
---|
5576 | * LONG_DOUBLE: Old Macro Names.
|
---|
5577 | * LONG_FILE_NAMES: Old Macro Names.
|
---|
5578 | * MAJOR_HEADER: Old Macro Names.
|
---|
5579 | * MEMORY_H: Particular Headers.
|
---|
5580 | * MINGW32: System Services.
|
---|
5581 | * MINIX: UNIX Variants.
|
---|
5582 | * MINUS_C_MINUS_O: Old Macro Names.
|
---|
5583 | * MMAP: Old Macro Names.
|
---|
5584 | * MODE_T: Old Macro Names.
|
---|
5585 | * MSG_CHECKING: Printing Messages.
|
---|
5586 | * MSG_ERROR: Printing Messages.
|
---|
5587 | * MSG_RESULT: Printing Messages.
|
---|
5588 | * MSG_WARN: Printing Messages.
|
---|
5589 | * OBJEXT: System Services.
|
---|
5590 | * OBSOLETE: Obsolete Macros.
|
---|
5591 | * OFF_T: Old Macro Names.
|
---|
5592 | * OUTPUT: Output.
|
---|
5593 | * PATH_PROG: Generic Programs.
|
---|
5594 | * PATH_PROGS: Generic Programs.
|
---|
5595 | * PATH_X: System Services.
|
---|
5596 | * PATH_XTRA: System Services.
|
---|
5597 | * PID_T: Old Macro Names.
|
---|
5598 | * PREFIX: Old Macro Names.
|
---|
5599 | * PREFIX_PROGRAM: Default Prefix.
|
---|
5600 | * PREREQ: Versions.
|
---|
5601 | * PROG_AWK: Particular Programs.
|
---|
5602 | * PROG_CC: Particular Programs.
|
---|
5603 | * PROG_CC_C_O: Particular Programs.
|
---|
5604 | * PROG_CPP: Particular Programs.
|
---|
5605 | * PROG_CXX: Particular Programs.
|
---|
5606 | * PROG_CXXCPP: Particular Programs.
|
---|
5607 | * PROG_F77_C_O: Particular Programs.
|
---|
5608 | * PROG_FORTRAN: Particular Programs.
|
---|
5609 | * PROG_GCC_TRADITIONAL: Particular Programs.
|
---|
5610 | * PROG_INSTALL: Particular Programs.
|
---|
5611 | * PROG_LEX: Particular Programs.
|
---|
5612 | * PROG_LN_S: Particular Programs.
|
---|
5613 | * PROG_MAKE_SET: Output.
|
---|
5614 | * PROG_RANLIB: Particular Programs.
|
---|
5615 | * PROG_YACC: Particular Programs.
|
---|
5616 | * PROGRAM_CHECK: Old Macro Names.
|
---|
5617 | * PROGRAM_EGREP: Old Macro Names.
|
---|
5618 | * PROGRAM_PATH: Old Macro Names.
|
---|
5619 | * PROGRAMS_CHECK: Old Macro Names.
|
---|
5620 | * PROGRAMS_PATH: Old Macro Names.
|
---|
5621 | * PROVIDE: Prerequisite Macros.
|
---|
5622 | * REMOTE_TAPE: Old Macro Names.
|
---|
5623 | * REPLACE_FUNCS: Generic Functions.
|
---|
5624 | * REQUIRE: Prerequisite Macros.
|
---|
5625 | * REQUIRE_CPP: Language Choice.
|
---|
5626 | * RESTARTABLE_SYSCALLS: Old Macro Names.
|
---|
5627 | * RETSIGTYPE: Old Macro Names.
|
---|
5628 | * REVISION: Versions.
|
---|
5629 | * RSH: Old Macro Names.
|
---|
5630 | * SCO_INTL: UNIX Variants.
|
---|
5631 | * SEARCH_LIBS: Libraries.
|
---|
5632 | * SET_MAKE: Old Macro Names.
|
---|
5633 | * SETVBUF_REVERSED: Old Macro Names.
|
---|
5634 | * SIZE_T: Old Macro Names.
|
---|
5635 | * SIZEOF_TYPE: Old Macro Names.
|
---|
5636 | * ST_BLKSIZE: Old Macro Names.
|
---|
5637 | * ST_BLOCKS: Old Macro Names.
|
---|
5638 | * ST_RDEV: Old Macro Names.
|
---|
5639 | * STAT_MACROS_BROKEN <1>: Old Macro Names.
|
---|
5640 | * STAT_MACROS_BROKEN: Structures.
|
---|
5641 | * STDC_HEADERS: Old Macro Names.
|
---|
5642 | * STRCOLL: Old Macro Names.
|
---|
5643 | * STRUCT_ST_BLKSIZE: Structures.
|
---|
5644 | * STRUCT_ST_BLOCKS: Structures.
|
---|
5645 | * STRUCT_ST_RDEV: Structures.
|
---|
5646 | * STRUCT_TIMEZONE: Structures.
|
---|
5647 | * STRUCT_TM: Structures.
|
---|
5648 | * SUBST: Setting Output Variables.
|
---|
5649 | * SUBST_FILE: Setting Output Variables.
|
---|
5650 | * SYS_INTERPRETER: System Services.
|
---|
5651 | * SYS_LONG_FILE_NAMES: System Services.
|
---|
5652 | * SYS_RESTARTABLE_SYSCALLS: System Services.
|
---|
5653 | * SYS_SIGLIST_DECLARED: Old Macro Names.
|
---|
5654 | * TEST_CPP: Old Macro Names.
|
---|
5655 | * TEST_PROGRAM: Old Macro Names.
|
---|
5656 | * TIME_WITH_SYS_TIME: Old Macro Names.
|
---|
5657 | * TIMEZONE: Old Macro Names.
|
---|
5658 | * TRY_COMPILE: Examining Syntax.
|
---|
5659 | * TRY_CPP: Examining Declarations.
|
---|
5660 | * TRY_LINK: Examining Libraries.
|
---|
5661 | * TRY_LINK_FUNC: Examining Libraries.
|
---|
5662 | * TRY_RUN: Test Programs.
|
---|
5663 | * TYPE_GETGROUPS: Particular Typedefs.
|
---|
5664 | * TYPE_MODE_T: Particular Typedefs.
|
---|
5665 | * TYPE_OFF_T: Particular Typedefs.
|
---|
5666 | * TYPE_PID_T: Particular Typedefs.
|
---|
5667 | * TYPE_SIGNAL: Particular Typedefs.
|
---|
5668 | * TYPE_SIZE_T: Particular Typedefs.
|
---|
5669 | * TYPE_UID_T: Particular Typedefs.
|
---|
5670 | * UID_T: Old Macro Names.
|
---|
5671 | * UNISTD_H: Particular Headers.
|
---|
5672 | * USG: Particular Headers.
|
---|
5673 | * UTIME_NULL: Old Macro Names.
|
---|
5674 | * VALIDATE_CACHED_SYSTEM_TUPLE: Canonicalizing.
|
---|
5675 | * VERBOSE: Printing Messages.
|
---|
5676 | * VFORK: Old Macro Names.
|
---|
5677 | * VPRINTF: Old Macro Names.
|
---|
5678 | * WAIT3: Old Macro Names.
|
---|
5679 | * WARN: Old Macro Names.
|
---|
5680 | * WITH: External Software.
|
---|
5681 | * WORDS_BIGENDIAN: Old Macro Names.
|
---|
5682 | * XENIX_DIR: UNIX Variants.
|
---|
5683 | * YYTEXT_POINTER: Old Macro Names.
|
---|
5684 |
|
---|
5685 |
|
---|
5686 |
|
---|
5687 | Tag Table:
|
---|
5688 | Node: Top1209
|
---|
5689 | Node: Introduction9711
|
---|
5690 | Node: Making configure Scripts13551
|
---|
5691 | Node: Writing configure.in16632
|
---|
5692 | Node: Invoking autoscan20365
|
---|
5693 | Node: Invoking ifnames22670
|
---|
5694 | Node: Invoking autoconf24160
|
---|
5695 | Node: Invoking autoreconf25998
|
---|
5696 | Node: Setup28834
|
---|
5697 | Node: Input29739
|
---|
5698 | Node: Output31476
|
---|
5699 | Node: Makefile Substitutions35113
|
---|
5700 | Node: Preset Output Variables36716
|
---|
5701 | Node: Build Directories41585
|
---|
5702 | Node: Automatic Remaking43218
|
---|
5703 | Node: Configuration Headers45304
|
---|
5704 | Node: Header Templates47818
|
---|
5705 | Node: Invoking autoheader49027
|
---|
5706 | Node: Subdirectories52175
|
---|
5707 | Node: Default Prefix53570
|
---|
5708 | Node: Versions54974
|
---|
5709 | Node: Existing Tests56878
|
---|
5710 | Node: Alternative Programs58426
|
---|
5711 | Node: Particular Programs59113
|
---|
5712 | Node: Generic Programs67165
|
---|
5713 | Node: Libraries70471
|
---|
5714 | Node: Library Functions73545
|
---|
5715 | Node: Particular Functions74103
|
---|
5716 | Node: Generic Functions81297
|
---|
5717 | Node: Header Files83401
|
---|
5718 | Node: Particular Headers83960
|
---|
5719 | Node: Generic Headers90952
|
---|
5720 | Node: Structures92254
|
---|
5721 | Node: Typedefs94491
|
---|
5722 | Node: Particular Typedefs94997
|
---|
5723 | Node: Generic Typedefs96214
|
---|
5724 | Node: C Compiler Characteristics96671
|
---|
5725 | Node: Fortran 77 Compiler Characteristics99542
|
---|
5726 | Node: System Services101245
|
---|
5727 | Node: UNIX Variants104381
|
---|
5728 | Node: Writing Tests106400
|
---|
5729 | Node: Examining Declarations108393
|
---|
5730 | Node: Examining Syntax110885
|
---|
5731 | Node: Examining Libraries112330
|
---|
5732 | Node: Run Time116040
|
---|
5733 | Node: Test Programs117028
|
---|
5734 | Node: Guidelines119356
|
---|
5735 | Node: Test Functions120545
|
---|
5736 | Node: Portable Shell122088
|
---|
5737 | Node: Testing Values and Files124020
|
---|
5738 | Node: Multiple Cases125675
|
---|
5739 | Node: Language Choice126873
|
---|
5740 | Node: Results128975
|
---|
5741 | Node: Defining Symbols129737
|
---|
5742 | Node: Setting Output Variables133033
|
---|
5743 | Node: Caching Results134879
|
---|
5744 | Node: Cache Variable Names137625
|
---|
5745 | Node: Cache Files139109
|
---|
5746 | Node: Printing Messages141946
|
---|
5747 | Node: Writing Macros145394
|
---|
5748 | Node: Macro Definitions146041
|
---|
5749 | Node: Macro Names147169
|
---|
5750 | Node: Quoting149620
|
---|
5751 | Node: Dependencies Between Macros151522
|
---|
5752 | Node: Prerequisite Macros152169
|
---|
5753 | Node: Suggested Ordering153660
|
---|
5754 | Node: Obsolete Macros155190
|
---|
5755 | Node: Manual Configuration156414
|
---|
5756 | Node: Specifying Names157313
|
---|
5757 | Node: Canonicalizing159214
|
---|
5758 | Node: System Type Variables160726
|
---|
5759 | Node: Using System Type161473
|
---|
5760 | Node: Site Configuration162967
|
---|
5761 | Node: External Software163740
|
---|
5762 | Node: Package Options166943
|
---|
5763 | Node: Site Details169690
|
---|
5764 | Node: Transforming Names170913
|
---|
5765 | Node: Transformation Options172091
|
---|
5766 | Node: Transformation Examples172584
|
---|
5767 | Node: Transformation Rules174152
|
---|
5768 | Node: Site Defaults175561
|
---|
5769 | Node: Invoking configure179467
|
---|
5770 | Node: Basic Installation180416
|
---|
5771 | Node: Compilers and Options182996
|
---|
5772 | Node: Multiple Architectures183645
|
---|
5773 | Node: Installation Names184631
|
---|
5774 | Node: Optional Features185815
|
---|
5775 | Node: System Type186585
|
---|
5776 | Node: Sharing Defaults187607
|
---|
5777 | Node: Operation Controls188231
|
---|
5778 | Node: Invoking config.status189217
|
---|
5779 | Node: Questions192605
|
---|
5780 | Node: Distributing193137
|
---|
5781 | Node: Why GNU m4194281
|
---|
5782 | Node: Bootstrapping195094
|
---|
5783 | Node: Why Not Imake195710
|
---|
5784 | Node: Upgrading200119
|
---|
5785 | Node: Changed File Names201640
|
---|
5786 | Node: Changed Makefiles202394
|
---|
5787 | Node: Changed Macros203490
|
---|
5788 | Node: Invoking autoupdate204737
|
---|
5789 | Node: Changed Results206328
|
---|
5790 | Node: Changed Macro Writing208430
|
---|
5791 | Node: History209693
|
---|
5792 | Node: Genesis210485
|
---|
5793 | Node: Exodus211674
|
---|
5794 | Node: Leviticus214723
|
---|
5795 | Node: Numbers216246
|
---|
5796 | Node: Deuteronomy218162
|
---|
5797 | Node: Old Macro Names220826
|
---|
5798 | Node: Environment Variable Index223875
|
---|
5799 | Node: Output Variable Index224889
|
---|
5800 | Node: Preprocessor Symbol Index230087
|
---|
5801 | Node: Macro Index235373
|
---|
5802 |
|
---|
5803 | End Tag Table
|
---|