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