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