Remove man files from CVS, as they're generated automatically.
[autoconf.git] / doc / autoconf.texi
blobdacbabc05cb43a27426544be409e8e8582772296
1 \input texinfo @c -*-texinfo-*-
2 @comment ========================================================
3 @comment %**start of header
4 @setfilename autoconf.info
5 @include version.texi
6 @settitle Autoconf
7 @setchapternewpage odd
8 @ifnothtml
9 @setcontentsaftertitlepage
10 @end ifnothtml
11 @finalout
13 @c @ovar(ARG, DEFAULT)
14 @c -------------------
15 @c The ARG is an optional argument.  To be used for macro arguments in
16 @c their documentation (@defmac).
17 @macro ovar{varname}
18 @r{[}@var{\varname\}@r{]}
19 @end macro
21 @c @dvar(ARG, DEFAULT)
22 @c -------------------
23 @c The ARG is an optional argument, defaulting to DEFAULT.  To be used
24 @c for macro arguments in their documentation (@defmac).
25 @macro dvar{varname, default}
26 @r{[}@var{\varname\} = @samp{\default\}@r{]}
27 @end macro
29 @c Handling the indexes with Texinfo yields several different problems.
31 @c Because we want to drop out the AC_ part of the macro names in the
32 @c printed manual, but not in the other outputs, we need a layer above
33 @c the usual @acindex{} etc.  That's why we first define indexes such as
34 @c acx meant to become the macro @acindex.  First of all, using ``ac_''
35 @c does not work with makeinfo, and using ``ac1'' doesn't work with TeX.
36 @c So use something more regular ``acx''.  Then you finish with a printed
37 @c index saying ``index is not existent''.  Of course: you ought to use
38 @c two letters :(  So you use capitals.
40 @c Second, when defining a macro in the TeX world, following spaces are
41 @c eaten.  But then, since we embed @acxindex commands that use the end
42 @c of line as an end marker, the whole things wrecks itself.  So make
43 @c sure you do *force* an additional end of line, add a ``@c''.
45 @c Finally, you might want to get rid of TeX expansion, using --expand
46 @c with texi2dvi.  But then you wake up an old problem: we use macros
47 @c in @defmac etc. where TeX does perform the expansion, but not makeinfo.
49 @c Define an environment variable index.
50 @defcodeindex ev
51 @c Define an output variable index.
52 @defcodeindex ov
53 @c Define a CPP variable index.
54 @defcodeindex cv
55 @c Define an Autoconf macro index that @defmac doesn't write to.
56 @defcodeindex AC
57 @c Define an Autotest macro index that @defmac doesn't write to.
58 @defcodeindex AT
59 @c Define an M4sugar macro index that @defmac doesn't write to.
60 @defcodeindex MS
61 @c Define an index for *foreign* programs: `mv' etc.  Used for the
62 @c portability sections and so on.
63 @defindex pr
65 @c shortindexflag
66 @c --------------
67 @c Shall we factor AC_ out of the Autoconf macro index etc.?
68 @iftex
69 @set shortindexflag
70 @end iftex
72 @c @acindex{MACRO}
73 @c ---------------
74 @c Registering an AC_\MACRO\.
75 @ifset shortindexflag
76 @macro acindex{macro}
77 @ACindex \macro\
79 @end macro
80 @end ifset
81 @ifclear shortindexflag
82 @macro acindex{macro}
83 @ACindex AC_\macro\
84 @end macro
85 @end ifclear
87 @c @ahindex{MACRO}
88 @c ---------------
89 @c Registering an AH_\MACRO\.
90 @macro ahindex{macro}
91 @ACindex AH_\macro\
93 @end macro
95 @c @asindex{MACRO}
96 @c ---------------
97 @c Registering an AS_\MACRO\.
98 @ifset shortindexflag
99 @macro asindex{macro}
100 @MSindex \macro\
102 @end macro
103 @end ifset
104 @ifclear shortindexflag
105 @macro asindex{macro}
106 @MSindex AS_\macro\
107 @end macro
108 @end ifclear
110 @c @atindex{MACRO}
111 @c ---------------
112 @c Registering an AT_\MACRO\.
113 @ifset shortindexflag
114 @macro atindex{macro}
115 @ATindex \macro\
117 @end macro
118 @end ifset
119 @ifclear shortindexflag
120 @macro atindex{macro}
121 @ATindex AT_\macro\
122 @end macro
123 @end ifclear
125 @c @auindex{MACRO}
126 @c ---------------
127 @c Registering an AU_\MACRO\.
128 @macro auindex{macro}
129 @ACindex AU_\macro\
131 @end macro
133 @c @hdrindex{MACRO}
134 @c ----------------
135 @c Indexing a header.
136 @macro hdrindex{macro}
137 @prindex @file{\macro\}
139 @end macro
141 @c @msindex{MACRO}
142 @c ---------------
143 @c Registering an m4_\MACRO\.
144 @ifset shortindexflag
145 @macro msindex{macro}
146 @MSindex \macro\
148 @end macro
149 @end ifset
150 @ifclear shortindexflag
151 @macro msindex{macro}
152 @MSindex m4_\macro\
153 @end macro
154 @end ifclear
157 @c Define an index for functions: `alloca' etc.  Used for the
158 @c portability sections and so on.  We can't use `fn' (aka `fnindex),
159 @c since `@defmac' goes into it => we'd get all the macros too.
161 @c   FIXME: Aaarg!  It seems there are too many indices for TeX :(
163 @c   ! No room for a new @write .
164 @c   l.112 @defcodeindex fu
166 @c   so don't define yet another one :(  Just put some tags before each
167 @c   @prindex which is actually a @funindex.
169 @c   @defcodeindex fu
172 @c   @c Put the programs and functions into their own index.
173 @c   @syncodeindex fu pr
175 @comment %**end of header
176 @comment ========================================================
178 @copying
180 This manual is for @acronym{GNU} Autoconf
181 (version @value{VERSION}, @value{UPDATED}),
182 a package for creating scripts to configure source code packages using
183 templates and an M4 macro package.
185 Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
186 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
188 @quotation
189 Permission is granted to copy, distribute and/or modify this document
190 under the terms of the @acronym{GNU} Free Documentation License,
191 Version 1.2 or any later version published by the Free Software
192 Foundation; with no Invariant Sections, with the Front-Cover texts
193 being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
194 (a) below.  A copy of the license is included in the section entitled
195 ``@acronym{GNU} Free Documentation License.''
197 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and
198 modify this @acronym{GNU} Manual, like @acronym{GNU} software.  Copies
199 published by the Free Software Foundation raise funds for
200 @acronym{GNU} development.''
201 @end quotation
202 @end copying
206 @dircategory Software development
207 @direntry
208 * Autoconf: (autoconf).         Create source code configuration scripts.
209 @end direntry
211 @dircategory Individual utilities
212 @direntry
213 * autoscan: (autoconf)autoscan Invocation.
214                                 Semi-automatic @file{configure.ac} writing
215 * ifnames: (autoconf)ifnames Invocation.        Listing conditionals in source.
216 * autoconf: (autoconf)autoconf Invocation.
217                                 How to create configuration scripts
218 * autoreconf: (autoconf)autoreconf Invocation.
219                                 Remaking multiple @command{configure} scripts
220 * autoheader: (autoconf)autoheader Invocation.
221                                 How to create configuration templates
222 * autom4te: (autoconf)autom4te Invocation.
223                                 The Autoconf executables backbone
224 * configure: (autoconf)configure Invocation.    Configuring a package.
225 * autoupdate: (autoconf)autoupdate Invocation.
226                                 Automatic update of @file{configure.ac}
227 * config.status: (autoconf)config.status Invocation. Recreating configurations.
228 * testsuite: (autoconf)testsuite Invocation.    Running an Autotest test suite.
229 @end direntry
231 @titlepage
232 @title Autoconf
233 @subtitle Creating Automatic Configuration Scripts
234 @subtitle for version @value{VERSION}, @value{UPDATED}
235 @author David MacKenzie
236 @author Ben Elliston
237 @author Akim Demaille
238 @page
239 @vskip 0pt plus 1filll
240 @insertcopying
241 @end titlepage
243 @contents
246 @ifnottex
247 @node Top
248 @top Autoconf
249 @insertcopying
250 @end ifnottex
252 @c The master menu, created with texinfo-master-menu, goes here.
254 @menu
255 * Introduction::                Autoconf's purpose, strengths, and weaknesses
256 * The GNU Build System::        A set of tools for portable software packages
257 * Making configure Scripts::    How to organize and produce Autoconf scripts
258 * Setup::                       Initialization and output
259 * Existing Tests::              Macros that check for particular features
260 * Writing Tests::               How to write new feature checks
261 * Results::                     What to do with results from feature checks
262 * Programming in M4::           Layers on top of which Autoconf is written
263 * Writing Autoconf Macros::     Adding new macros to Autoconf
264 * Portable Shell::              Shell script portability pitfalls
265 * Portable Make::               Makefile portability pitfalls
266 * Portable C and C++::          C and C++ portability pitfalls
267 * Manual Configuration::        Selecting features that can't be guessed
268 * Site Configuration::          Local defaults for @command{configure}
269 * Running configure Scripts::   How to use the Autoconf output
270 * config.status Invocation::    Recreating a configuration
271 * Obsolete Constructs::         Kept for backward compatibility
272 * Using Autotest::              Creating portable test suites
273 * FAQ::                         Frequent Autoconf Questions, with answers
274 * History::                     History of Autoconf
275 * Copying This Manual::         How to make copies of this manual
276 * Indices::                     Indices of symbols, concepts, etc.
278 @detailmenu
279  --- The Detailed Node Listing ---
281 The @acronym{GNU} Build System
283 * Automake::                    Escaping makefile hell
284 * Gnulib::                      The @acronym{GNU} portability library
285 * Libtool::                     Building libraries portably
286 * Pointers::                    More info on the @acronym{GNU} build system
288 Making @command{configure} Scripts
290 * Writing configure.ac::        What to put in an Autoconf input file
291 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
292 * ifnames Invocation::          Listing the conditionals in source code
293 * autoconf Invocation::         How to create configuration scripts
294 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
296 Writing @file{configure.ac}
298 * Shell Script Compiler::       Autoconf as solution of a problem
299 * Autoconf Language::           Programming in Autoconf
300 * configure.ac Layout::         Standard organization of @file{configure.ac}
302 Initialization and Output Files
304 * Initializing configure::      Option processing etc.
305 * Notices::                     Copyright, version numbers in @command{configure}
306 * Input::                       Where Autoconf should find files
307 * Output::                      Outputting results from the configuration
308 * Configuration Actions::       Preparing the output based on results
309 * Configuration Files::         Creating output files
310 * Makefile Substitutions::      Using output variables in makefiles
311 * Configuration Headers::       Creating a configuration header file
312 * Configuration Commands::      Running arbitrary instantiation commands
313 * Configuration Links::         Links depending on the configuration
314 * Subdirectories::              Configuring independent packages together
315 * Default Prefix::              Changing the default installation prefix
317 Substitutions in Makefiles
319 * Preset Output Variables::     Output variables that are always set
320 * Installation Directory Variables::  Other preset output variables
321 * Changed Directory Variables:: Warnings about @file{datarootdir}
322 * Build Directories::           Supporting multiple concurrent compiles
323 * Automatic Remaking::          Makefile rules for configuring
325 Configuration Header Files
327 * Header Templates::            Input for the configuration headers
328 * autoheader Invocation::       How to create configuration templates
329 * Autoheader Macros::           How to specify CPP templates
331 Existing Tests
333 * Common Behavior::             Macros' standard schemes
334 * Alternative Programs::        Selecting between alternative programs
335 * Files::                       Checking for the existence of files
336 * Libraries::                   Library archives that might be missing
337 * Library Functions::           C library functions that might be missing
338 * Header Files::                Header files that might be missing
339 * Declarations::                Declarations that may be missing
340 * Structures::                  Structures or members that might be missing
341 * Types::                       Types that might be missing
342 * Compilers and Preprocessors::  Checking for compiling programs
343 * System Services::             Operating system services
344 * Posix Variants::              Special kludges for specific Posix variants
345 * Erlang Libraries::            Checking for the existence of Erlang libraries
347 Common Behavior
349 * Standard Symbols::            Symbols defined by the macros
350 * Default Includes::            Includes used by the generic macros
352 Alternative Programs
354 * Particular Programs::         Special handling to find certain programs
355 * Generic Programs::            How to find other programs
357 Library Functions
359 * Function Portability::        Pitfalls with usual functions
360 * Particular Functions::        Special handling to find certain functions
361 * Generic Functions::           How to find other functions
363 Header Files
365 * Header Portability::          Collected knowledge on common headers
366 * Particular Headers::          Special handling to find certain headers
367 * Generic Headers::             How to find other headers
369 Declarations
371 * Particular Declarations::     Macros to check for certain declarations
372 * Generic Declarations::        How to find other declarations
374 Structures
376 * Particular Structures::       Macros to check for certain structure members
377 * Generic Structures::          How to find other structure members
379 Types
381 * Particular Types::            Special handling to find certain types
382 * Generic Types::               How to find other types
384 Compilers and Preprocessors
386 * Specific Compiler Characteristics::  Some portability issues
387 * Generic Compiler Characteristics::  Language independent tests and features
388 * C Compiler::                  Checking its characteristics
389 * C++ Compiler::                Likewise
390 * Objective C Compiler::        Likewise
391 * Erlang Compiler and Interpreter::  Likewise
392 * Fortran Compiler::            Likewise
394 Writing Tests
396 * Language Choice::             Selecting which language to use for testing
397 * Writing Test Programs::       Forging source files for compilers
398 * Running the Preprocessor::    Detecting preprocessor symbols
399 * Running the Compiler::        Detecting language or header features
400 * Running the Linker::          Detecting library features
401 * Runtime::                     Testing for runtime features
402 * Systemology::                 A zoology of operating systems
403 * Multiple Cases::              Tests for several possible values
405 Writing Test Programs
407 * Guidelines::                  General rules for writing test programs
408 * Test Functions::              Avoiding pitfalls in test programs
409 * Generating Sources::          Source program boilerplate
411 Results of Tests
413 * Defining Symbols::            Defining C preprocessor symbols
414 * Setting Output Variables::    Replacing variables in output files
415 * Special Chars in Variables::  Characters to beware of in variables
416 * Caching Results::             Speeding up subsequent @command{configure} runs
417 * Printing Messages::           Notifying @command{configure} users
419 Caching Results
421 * Cache Variable Names::        Shell variables used in caches
422 * Cache Files::                 Files @command{configure} uses for caching
423 * Cache Checkpointing::         Loading and saving the cache file
425 Programming in M4
427 * M4 Quotation::                Protecting macros from unwanted expansion
428 * Using autom4te::              The Autoconf executables backbone
429 * Programming in M4sugar::      Convenient pure M4 macros
430 * Programming in M4sh::         Common shell Constructs
431 * File Descriptor Macros::      File descriptor macros for input and output
433 M4 Quotation
435 * Active Characters::           Characters that change the behavior of M4
436 * One Macro Call::              Quotation and one macro call
437 * Quotation and Nested Macros::  Macros calling macros
438 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
439 * Quadrigraphs::                Another way to escape special characters
440 * Quotation Rule Of Thumb::     One parenthesis, one quote
442 Using @command{autom4te}
444 * autom4te Invocation::         A @acronym{GNU} M4 wrapper
445 * Customizing autom4te::        Customizing the Autoconf package
447 Programming in M4sugar
449 * Redefined M4 Macros::         M4 builtins changed in M4sugar
450 * Looping constructs::          Iteration in M4
451 * Evaluation Macros::           More quotation and evaluation control
452 * Text processing Macros::      String manipulation in M4
453 * Forbidden Patterns::          Catching unexpanded macros
455 Writing Autoconf Macros
457 * Macro Definitions::           Basic format of an Autoconf macro
458 * Macro Names::                 What to call your new macros
459 * Reporting Messages::          Notifying @command{autoconf} users
460 * Dependencies Between Macros::  What to do when macros depend on other macros
461 * Obsoleting Macros::           Warning about old ways of doing things
462 * Coding Style::                Writing Autoconf macros @`a la Autoconf
464 Dependencies Between Macros
466 * Prerequisite Macros::         Ensuring required information
467 * Suggested Ordering::          Warning about possible ordering problems
468 * One-Shot Macros::             Ensuring a macro is called only once
470 Portable Shell Programming
472 * Shellology::                  A zoology of shells
473 * Here-Documents::              Quirks and tricks
474 * File Descriptors::            FDs and redirections
475 * File System Conventions::     File names
476 * Shell Substitutions::         Variable and command expansions
477 * Assignments::                 Varying side effects of assignments
478 * Parentheses::                 Parentheses in shell scripts
479 * Slashes::                     Slashes in shell scripts
480 * Special Shell Variables::     Variables you should not change
481 * Limitations of Builtins::     Portable use of not so portable /bin/sh
482 * Limitations of Usual Tools::  Portable use of portable tools
484 Portable Make Programming
486 * $< in Ordinary Make Rules::   $< in ordinary rules
487 * Failure in Make Rules::       Failing portably in rules
488 * Special Chars in Names::      Special Characters in Macro Names
489 * Backslash-Newline-Newline::   Empty last lines in macro definitions
490 * Backslash-Newline Comments::  Spanning comments across line boundaries
491 * Long Lines in Makefiles::     Line length limitations
492 * Macros and Submakes::         @code{make macro=value} and submakes
493 * The Make Macro MAKEFLAGS::    @code{$(MAKEFLAGS)} portability issues
494 * The Make Macro SHELL::        @code{$(SHELL)} portability issues
495 * Comments in Make Rules::      Other problems with Make comments
496 * obj/ and Make::               Don't name a subdirectory @file{obj}
497 * make -k Status::              Exit status of @samp{make -k}
498 * VPATH and Make::              @code{VPATH} woes
499 * Single Suffix Rules::         Single suffix rules and separated dependencies
500 * Timestamps and Make::         Subsecond timestamp resolution
502 @code{VPATH} and Make
504 * VPATH and Double-colon::      Problems with @samp{::} on ancient hosts
505 * $< in Explicit Rules::        @code{$<} does not work in ordinary rules
506 * Automatic Rule Rewriting::    @code{VPATH} goes wild on Solaris
507 * Tru64 Directory Magic::       @command{mkdir} goes wild on Tru64
508 * Make Target Lookup::          More details about @code{VPATH} lookup
510 Portable C and C++ Programming
512 * Varieties of Unportability::  How to make your programs unportable
513 * Integer Overflow::            When integers get too large
514 * Null Pointers::               Properties of null pointers
515 * Buffer Overruns::             Subscript errors and the like
516 * Volatile Objects::            @code{volatile} and signals
517 * Floating Point Portability::  Portable floating-point arithmetic
518 * Exiting Portably::            Exiting and the exit status
520 Manual Configuration
522 * Specifying Names::            Specifying the system type
523 * Canonicalizing::              Getting the canonical system type
524 * Using System Type::           What to do with the system type
526 Site Configuration
528 * Help Formatting::             Customizing @samp{configure --help}
529 * External Software::           Working with other optional software
530 * Package Options::             Selecting optional features
531 * Pretty Help Strings::         Formatting help string
532 * Site Details::                Configuring site details
533 * Transforming Names::          Changing program names when installing
534 * Site Defaults::               Giving @command{configure} local defaults
536 Transforming Program Names When Installing
538 * Transformation Options::      @command{configure} options to transform names
539 * Transformation Examples::     Sample uses of transforming names
540 * Transformation Rules::        Makefile uses of transforming names
542 Running @command{configure} Scripts
544 * Basic Installation::          Instructions for typical cases
545 * Compilers and Options::       Selecting compilers and optimization
546 * Multiple Architectures::      Compiling for multiple architectures at once
547 * Installation Names::          Installing in different directories
548 * Optional Features::           Selecting optional features
549 * System Type::                 Specifying the system type
550 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
551 * Defining Variables::          Specifying the compiler etc.
552 * configure Invocation::        Changing how @command{configure} runs
554 Obsolete Constructs
556 * Obsolete config.status Use::  Different calling convention
557 * acconfig.h::                  Additional entries in @file{config.h.in}
558 * autoupdate Invocation::       Automatic update of @file{configure.ac}
559 * Obsolete Macros::             Backward compatibility macros
560 * Autoconf 1::                  Tips for upgrading your files
561 * Autoconf 2.13::               Some fresher tips
563 Upgrading From Version 1
565 * Changed File Names::          Files you might rename
566 * Changed Makefiles::           New things to put in @file{Makefile.in}
567 * Changed Macros::              Macro calls you might replace
568 * Changed Results::             Changes in how to check test results
569 * Changed Macro Writing::       Better ways to write your own macros
571 Upgrading From Version 2.13
573 * Changed Quotation::           Broken code which used to work
574 * New Macros::                  Interaction with foreign macros
575 * Hosts and Cross-Compilation::  Bugward compatibility kludges
576 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
577 * AC_FOO_IFELSE vs AC_TRY_FOO::  A more generic scheme for testing sources
579 Generating Test Suites with Autotest
581 * Using an Autotest Test Suite::  Autotest and the user
582 * Writing testsuite.at::        Autotest macros
583 * testsuite Invocation::        Running @command{testsuite} scripts
584 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
586 Using an Autotest Test Suite
588 * testsuite Scripts::           The concepts of Autotest
589 * Autotest Logs::               Their contents
591 Frequent Autoconf Questions, with answers
593 * Distributing::                Distributing @command{configure} scripts
594 * Why GNU M4::                  Why not use the standard M4?
595 * Bootstrapping::               Autoconf and @acronym{GNU} M4 require each other?
596 * Why Not Imake::               Why @acronym{GNU} uses @command{configure} instead of Imake
597 * Defining Directories::        Passing @code{datadir} to program
598 * autom4te.cache::              What is it?  Can I remove it?
599 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
601 History of Autoconf
603 * Genesis::                     Prehistory and naming of @command{configure}
604 * Exodus::                      The plagues of M4 and Perl
605 * Leviticus::                   The priestly code of portability arrives
606 * Numbers::                     Growth and contributors
607 * Deuteronomy::                 Approaching the promises of easy configuration
609 Copying This Manual
611 * GNU Free Documentation License::  License for copying this manual
613 Indices
615 * Environment Variable Index::  Index of environment variables used
616 * Output Variable Index::       Index of variables set in output files
617 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
618 * Autoconf Macro Index::        Index of Autoconf macros
619 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
620 * Autotest Macro Index::        Index of Autotest macros
621 * Program & Function Index::    Index of those with portability problems
622 * Concept Index::               General index
624 @end detailmenu
625 @end menu
627 @c ============================================================= Introduction.
629 @node Introduction
630 @chapter Introduction
631 @cindex Introduction
633 @flushright
634 A physicist, an engineer, and a computer scientist were discussing the
635 nature of God.  ``Surely a Physicist,'' said the physicist, ``because
636 early in the Creation, God made Light; and you know, Maxwell's
637 equations, the dual nature of electromagnetic waves, the relativistic
638 consequences@dots{}'' ``An Engineer!,'' said the engineer, ``because
639 before making Light, God split the Chaos into Land and Water; it takes a
640 hell of an engineer to handle that big amount of mud, and orderly
641 separation of solids from liquids@dots{}'' The computer scientist
642 shouted: ``And the Chaos, where do you think it was coming from, hmm?''
644 ---Anonymous
645 @end flushright
646 @c (via Franc,ois Pinard)
648 Autoconf is a tool for producing shell scripts that automatically
649 configure software source code packages to adapt to many kinds of
650 Posix-like systems.  The configuration scripts produced by Autoconf
651 are independent of Autoconf when they are run, so their users do not
652 need to have Autoconf.
654 The configuration scripts produced by Autoconf require no manual user
655 intervention when run; they do not normally even need an argument
656 specifying the system type.  Instead, they individually test for the
657 presence of each feature that the software package they are for might need.
658 (Before each check, they print a one-line message stating what they are
659 checking for, so the user doesn't get too bored while waiting for the
660 script to finish.)  As a result, they deal well with systems that are
661 hybrids or customized from the more common Posix variants.  There is
662 no need to maintain files that list the features supported by each
663 release of each variant of Posix.
665 For each software package that Autoconf is used with, it creates a
666 configuration script from a template file that lists the system features
667 that the package needs or can use.  After the shell code to recognize
668 and respond to a system feature has been written, Autoconf allows it to
669 be shared by many software packages that can use (or need) that feature.
670 If it later turns out that the shell code needs adjustment for some
671 reason, it needs to be changed in only one place; all of the
672 configuration scripts can be regenerated automatically to take advantage
673 of the updated code.
675 The Metaconfig package is similar in purpose to Autoconf, but the
676 scripts it produces require manual user intervention, which is quite
677 inconvenient when configuring large source trees.  Unlike Metaconfig
678 scripts, Autoconf scripts can support cross-compiling, if some care is
679 taken in writing them.
681 Autoconf does not solve all problems related to making portable
682 software packages---for a more complete solution, it should be used in
683 concert with other @acronym{GNU} build tools like Automake and
684 Libtool.  These other tools take on jobs like the creation of a
685 portable, recursive makefile with all of the standard targets,
686 linking of shared libraries, and so on.  @xref{The GNU Build System},
687 for more information.
689 Autoconf imposes some restrictions on the names of macros used with
690 @code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
692 Autoconf requires @acronym{GNU} M4 in order to generate the scripts.  It uses
693 features that some versions of M4, including @acronym{GNU} M4 1.3,
694 do not have.  You should use version 1.4.7 or later of @acronym{GNU} M4.
696 @xref{Autoconf 1}, for information about upgrading from version 1.
697 @xref{History}, for the story of Autoconf's development.  @xref{FAQ},
698 for answers to some common questions about Autoconf.
700 See the @uref{http://www.gnu.org/software/autoconf/,
701 Autoconf web page} for up-to-date information, details on the mailing
702 lists, pointers to a list of known bugs, etc.
704 Mail suggestions to @email{autoconf@@gnu.org, the Autoconf mailing
705 list}.  Past suggestions are
706 @uref{http://lists.gnu.org/archive/html/autoconf/, archived}.
708 Mail bug reports to @email{bug-autoconf@@gnu.org, the
709 Autoconf Bugs mailing list}.  Past bug reports are
710 @uref{http://lists.gnu.org/archive/html/bug-autoconf/, archived}.
712 If possible, first check that your bug is
713 not already solved in current development versions, and that it has not
714 been reported yet.  Be sure to include all the needed information and a
715 short @file{configure.ac} that demonstrates the problem.
717 Autoconf's development tree is accessible via anonymous @acronym{CVS}; see the
718 @uref{http://savannah.gnu.org/projects/autoconf/, Autoconf
719 Summary} for details.  Patches relative to the
720 current @acronym{CVS} version can be sent for review to the
721 @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}.
722 Past patches are
723 @uref{http://lists.gnu.org/@/archive/@/html/@/autoconf-patches/, archived}.
725 Because of its mission, the Autoconf package itself
726 includes only a set of often-used
727 macros that have already demonstrated their usefulness.  Nevertheless,
728 if you wish to share your macros, or find existing ones, see the
729 @uref{http://autoconf-archive.cryp.to/, Autoconf Macro
730 Archive}, which is kindly run by @email{simons@@cryp.to,
731 Peter Simons}.
734 @c ================================================= The GNU Build System
736 @node The GNU Build System
737 @chapter The @acronym{GNU} Build System
738 @cindex @acronym{GNU} build system
740 Autoconf solves an important problem---reliable discovery of
741 system-specific build and runtime information---but this is only one
742 piece of the puzzle for the development of portable software.  To this
743 end, the @acronym{GNU} project has developed a suite of integrated
744 utilities to finish the job Autoconf started: the @acronym{GNU} build
745 system, whose most important components are Autoconf, Automake, and
746 Libtool.  In this chapter, we introduce you to those tools, point you
747 to sources of more information, and try to convince you to use the
748 entire @acronym{GNU} build system for your software.
750 @menu
751 * Automake::                    Escaping makefile hell
752 * Gnulib::                      The @acronym{GNU} portability library
753 * Libtool::                     Building libraries portably
754 * Pointers::                    More info on the @acronym{GNU} build system
755 @end menu
757 @node Automake
758 @section Automake
760 The ubiquity of @command{make} means that a makefile is almost the
761 only viable way to distribute automatic build rules for software, but
762 one quickly runs into its numerous limitations.  Its lack of
763 support for automatic dependency tracking, recursive builds in
764 subdirectories, reliable timestamps (e.g., for network file systems), and
765 so on, mean that developers must painfully (and often incorrectly)
766 reinvent the wheel for each project.  Portability is non-trivial, thanks
767 to the quirks of @command{make} on many systems.  On top of all this is the
768 manual labor required to implement the many standard targets that users
769 have come to expect (@code{make install}, @code{make distclean},
770 @code{make uninstall}, etc.).  Since you are, of course, using Autoconf,
771 you also have to insert repetitive code in your @code{Makefile.in} to
772 recognize @code{@@CC@@}, @code{@@CFLAGS@@}, and other substitutions
773 provided by @command{configure}.  Into this mess steps @dfn{Automake}.
774 @cindex Automake
776 Automake allows you to specify your build needs in a @code{Makefile.am}
777 file with a vastly simpler and more powerful syntax than that of a plain
778 makefile, and then generates a portable @code{Makefile.in} for
779 use with Autoconf.  For example, the @code{Makefile.am} to build and
780 install a simple ``Hello world'' program might look like:
782 @example
783 bin_PROGRAMS = hello
784 hello_SOURCES = hello.c
785 @end example
787 @noindent
788 The resulting @code{Makefile.in} (~400 lines) automatically supports all
789 the standard targets, the substitutions provided by Autoconf, automatic
790 dependency tracking, @code{VPATH} building, and so on.  @command{make}
791 builds the @code{hello} program, and @code{make install} installs it
792 in @file{/usr/local/bin} (or whatever prefix was given to
793 @command{configure}, if not @file{/usr/local}).
795 The benefits of Automake increase for larger packages (especially ones
796 with subdirectories), but even for small programs the added convenience
797 and portability can be substantial.  And that's not all@enddots{}
799 @node Gnulib
800 @section Gnulib
802 @acronym{GNU} software has a well-deserved reputation for running on
803 many different types of systems.  While our primary goal is to write
804 software for the @acronym{GNU} system, many users and developers have
805 been introduced to us through the systems that they were already using.
807 @cindex Gnulib
808 Gnulib is a central location for common @acronym{GNU} code, intended to
809 be shared among free software packages.  Its components are typically
810 shared at the source level, rather than being a library that gets built,
811 installed, and linked against.  The idea is to copy files from Gnulib
812 into your own source tree.  There is no distribution tarball; developers
813 should just grab source modules from the repository.  The source files
814 are available online, under various licenses, mostly @acronym{GNU}
815 @acronym{GPL} or @acronym{GNU} @acronym{LGPL}.
817 Gnulib modules typically contain C source code along with Autoconf
818 macros used to configure the source code.  For example, the Gnulib
819 @code{stdbool} module implements a @file{stdbool.h} header that nearly
820 conforms to C99, even on old-fashioned hosts that lack @file{stdbool.h}.
821 This module contains a source file for the replacement header, along
822 with an Autoconf macro that arranges to use the replacement header on
823 old-fashioned systems.
825 @node Libtool
826 @section Libtool
828 Often, one wants to build not only programs, but libraries, so that
829 other programs can benefit from the fruits of your labor.  Ideally, one
830 would like to produce @emph{shared} (dynamically linked) libraries,
831 which can be used by multiple programs without duplication on disk or in
832 memory and can be updated independently of the linked programs.
833 Producing shared libraries portably, however, is the stuff of
834 nightmares---each system has its own incompatible tools, compiler flags,
835 and magic incantations.  Fortunately, @acronym{GNU} provides a solution:
836 @dfn{Libtool}.
837 @cindex Libtool
839 Libtool handles all the requirements of building shared libraries for
840 you, and at this time seems to be the @emph{only} way to do so with any
841 portability.  It also handles many other headaches, such as: the
842 interaction of Make rules with the variable suffixes of
843 shared libraries, linking reliably with shared libraries before they are
844 installed by the superuser, and supplying a consistent versioning system
845 (so that different versions of a library can be installed or upgraded
846 without breaking binary compatibility).  Although Libtool, like
847 Autoconf, can be used without Automake, it is most simply utilized in
848 conjunction with Automake---there, Libtool is used automatically
849 whenever shared libraries are needed, and you need not know its syntax.
851 @node Pointers
852 @section Pointers
854 Developers who are used to the simplicity of @command{make} for small
855 projects on a single system might be daunted at the prospect of
856 learning to use Automake and Autoconf.  As your software is
857 distributed to more and more users, however, you otherwise
858 quickly find yourself putting lots of effort into reinventing the
859 services that the @acronym{GNU} build tools provide, and making the
860 same mistakes that they once made and overcame.  (Besides, since
861 you're already learning Autoconf, Automake is a piece of cake.)
863 There are a number of places that you can go to for more information on
864 the @acronym{GNU} build tools.
866 @itemize @minus
868 @item Web
870 The home pages for
871 @uref{http://www.gnu.org/@/software/@/autoconf/, Autoconf},
872 @uref{http://www.gnu.org/@/software/@/automake/, Automake},
873 @uref{http://www.gnu.org/@/software/@/gnulib/, Gnulib}, and
874 @uref{http://www.gnu.org/@/software/@/libtool/, Libtool}.
876 @item Automake Manual
878 @xref{Top, , Automake, automake, @acronym{GNU} Automake}, for more
879 information on Automake.
881 @item Books
883 The book @cite{@acronym{GNU} Autoconf, Automake and
884 Libtool}@footnote{@cite{@acronym{GNU} Autoconf, Automake and Libtool},
885 by G. V. Vaughan, B. Elliston, T. Tromey, and I. L. Taylor.  SAMS (originally
886 New Riders), 2000, ISBN 1578701902.} describes the complete @acronym{GNU}
887 build environment.  You can also find
888 @uref{http://sources.redhat.com/@/autobook/, the entire book on-line}.
890 @end itemize
892 @c ================================================= Making configure Scripts.
894 @node Making configure Scripts
895 @chapter Making @command{configure} Scripts
896 @cindex @file{aclocal.m4}
897 @cindex @command{configure}
899 The configuration scripts that Autoconf produces are by convention
900 called @command{configure}.  When run, @command{configure} creates several
901 files, replacing configuration parameters in them with appropriate
902 values.  The files that @command{configure} creates are:
904 @itemize @minus
905 @item
906 one or more @file{Makefile} files, usually one in each subdirectory of the
907 package (@pxref{Makefile Substitutions});
909 @item
910 optionally, a C header file, the name of which is configurable,
911 containing @code{#define} directives (@pxref{Configuration Headers});
913 @item
914 a shell script called @file{config.status} that, when run, recreates
915 the files listed above (@pxref{config.status Invocation});
917 @item
918 an optional shell script normally called @file{config.cache}
919 (created when using @samp{configure --config-cache}) that
920 saves the results of running many of the tests (@pxref{Cache Files});
922 @item
923 a file called @file{config.log} containing any messages produced by
924 compilers, to help debugging if @command{configure} makes a mistake.
925 @end itemize
927 @cindex @file{configure.in}
928 @cindex @file{configure.ac}
929 To create a @command{configure} script with Autoconf, you need to write an
930 Autoconf input file @file{configure.ac} (or @file{configure.in}) and run
931 @command{autoconf} on it.  If you write your own feature tests to
932 supplement those that come with Autoconf, you might also write files
933 called @file{aclocal.m4} and @file{acsite.m4}.  If you use a C header
934 file to contain @code{#define} directives, you might also run
935 @command{autoheader}, and you can distribute the generated file
936 @file{config.h.in} with the package.
938 Here is a diagram showing how the files that can be used in
939 configuration are produced.  Programs that are executed are suffixed by
940 @samp{*}.  Optional files are enclosed in square brackets (@samp{[]}).
941 @command{autoconf} and @command{autoheader} also read the installed Autoconf
942 macro files (by reading @file{autoconf.m4}).
944 @noindent
945 Files used in preparing a software package for distribution:
946 @example
947 your source files --> [autoscan*] --> [configure.scan] --> configure.ac
949 @group
950 configure.ac --.
951                |   .------> autoconf* -----> configure
952 [aclocal.m4] --+---+
953                |   `-----> [autoheader*] --> [config.h.in]
954 [acsite.m4] ---'
955 @end group
957 Makefile.in -------------------------------> Makefile.in
958 @end example
960 @noindent
961 Files used in configuring a software package:
962 @example
963 @group
964                        .-------------> [config.cache]
965 configure* ------------+-------------> config.log
966                        |
967 [config.h.in] -.       v            .-> [config.h] -.
968                +--> config.status* -+               +--> make*
969 Makefile.in ---'                    `-> Makefile ---'
970 @end group
971 @end example
973 @menu
974 * Writing configure.ac::        What to put in an Autoconf input file
975 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
976 * ifnames Invocation::          Listing the conditionals in source code
977 * autoconf Invocation::         How to create configuration scripts
978 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
979 @end menu
981 @node Writing configure.ac
982 @section Writing @file{configure.ac}
984 To produce a @command{configure} script for a software package, create a
985 file called @file{configure.ac} that contains invocations of the
986 Autoconf macros that test the system features your package needs or can
987 use.  Autoconf macros already exist to check for many features; see
988 @ref{Existing Tests}, for their descriptions.  For most other features,
989 you can use Autoconf template macros to produce custom checks; see
990 @ref{Writing Tests}, for information about them.  For especially tricky
991 or specialized features, @file{configure.ac} might need to contain some
992 hand-crafted shell commands; see @ref{Portable Shell}.  The
993 @command{autoscan} program can give you a good start in writing
994 @file{configure.ac} (@pxref{autoscan Invocation}, for more information).
996 Previous versions of Autoconf promoted the name @file{configure.in},
997 which is somewhat ambiguous (the tool needed to process this file is not
998 described by its extension), and introduces a slight confusion with
999 @file{config.h.in} and so on (for which @samp{.in} means ``to be
1000 processed by @command{configure}'').  Using @file{configure.ac} is now
1001 preferred.
1003 @menu
1004 * Shell Script Compiler::       Autoconf as solution of a problem
1005 * Autoconf Language::           Programming in Autoconf
1006 * configure.ac Layout::         Standard organization of @file{configure.ac}
1007 @end menu
1009 @node Shell Script Compiler
1010 @subsection A Shell Script Compiler
1012 Just as for any other computer language, in order to properly program
1013 @file{configure.ac} in Autoconf you must understand @emph{what} problem
1014 the language tries to address and @emph{how} it does so.
1016 The problem Autoconf addresses is that the world is a mess.  After all,
1017 you are using Autoconf in order to have your package compile easily on
1018 all sorts of different systems, some of them being extremely hostile.
1019 Autoconf itself bears the price for these differences: @command{configure}
1020 must run on all those systems, and thus @command{configure} must limit itself
1021 to their lowest common denominator of features.
1023 Naturally, you might then think of shell scripts; who needs
1024 @command{autoconf}?  A set of properly written shell functions is enough to
1025 make it easy to write @command{configure} scripts by hand.  Sigh!
1026 Unfortunately, shell functions do not belong to the least common
1027 denominator; therefore, where you would like to define a function and
1028 use it ten times, you would instead need to copy its body ten times.
1030 So, what is really needed is some kind of compiler, @command{autoconf},
1031 that takes an Autoconf program, @file{configure.ac}, and transforms it
1032 into a portable shell script, @command{configure}.
1034 How does @command{autoconf} perform this task?
1036 There are two obvious possibilities: creating a brand new language or
1037 extending an existing one.  The former option is attractive: all
1038 sorts of optimizations could easily be implemented in the compiler and
1039 many rigorous checks could be performed on the Autoconf program
1040 (e.g., rejecting any non-portable construct).  Alternatively, you can
1041 extend an existing language, such as the @code{sh} (Bourne shell)
1042 language.
1044 Autoconf does the latter: it is a layer on top of @code{sh}.  It was
1045 therefore most convenient to implement @command{autoconf} as a macro
1046 expander: a program that repeatedly performs @dfn{macro expansions} on
1047 text input, replacing macro calls with macro bodies and producing a pure
1048 @code{sh} script in the end.  Instead of implementing a dedicated
1049 Autoconf macro expander, it is natural to use an existing
1050 general-purpose macro language, such as M4, and implement the extensions
1051 as a set of M4 macros.
1054 @node Autoconf Language
1055 @subsection The Autoconf Language
1056 @cindex quotation
1058 The Autoconf language differs from many other computer
1059 languages because it treats actual code the same as plain text.  Whereas
1060 in C, for instance, data and instructions have different syntactic
1061 status, in Autoconf their status is rigorously the same.  Therefore, we
1062 need a means to distinguish literal strings from text to be expanded:
1063 quotation.
1065 When calling macros that take arguments, there must not be any white
1066 space between the macro name and the open parenthesis.  Arguments should
1067 be enclosed within the M4 quote characters @samp{[} and @samp{]}, and be
1068 separated by commas.  Any leading blanks or newlines in arguments are ignored,
1069 unless they are quoted.  You should always quote an argument that
1070 might contain a macro name, comma, parenthesis, or a leading blank or
1071 newline.  This rule applies recursively for every macro
1072 call, including macros called from other macros.
1074 For instance:
1076 @example
1077 AC_CHECK_HEADER([stdio.h],
1078                 [AC_DEFINE([HAVE_STDIO_H], [1],
1079                    [Define to 1 if you have <stdio.h>.])],
1080                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1081 @end example
1083 @noindent
1084 is quoted properly.  You may safely simplify its quotation to:
1086 @example
1087 AC_CHECK_HEADER([stdio.h],
1088                 [AC_DEFINE([HAVE_STDIO_H], 1,
1089                    [Define to 1 if you have <stdio.h>.])],
1090                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1091 @end example
1093 @noindent
1094 because @samp{1} cannot contain a macro call.  Here, the argument of
1095 @code{AC_MSG_ERROR} must be quoted; otherwise, its comma would be
1096 interpreted as an argument separator.  Also, the second and third arguments
1097 of @samp{AC_CHECK_HEADER} must be quoted, since they contain
1098 macro calls.  The three arguments @samp{HAVE_STDIO_H}, @samp{stdio.h},
1099 and @samp{Define to 1 if you have <stdio.h>.} do not need quoting, but
1100 if you unwisely defined a macro with a name like @samp{Define} or
1101 @samp{stdio} then they would need quoting.  Cautious Autoconf users
1102 would keep the quotes, but many Autoconf users find such precautions
1103 annoying, and would rewrite the example as follows:
1105 @example
1106 AC_CHECK_HEADER(stdio.h,
1107                 [AC_DEFINE(HAVE_STDIO_H, 1,
1108                    [Define to 1 if you have <stdio.h>.])],
1109                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1110 @end example
1112 @noindent
1113 This is safe, so long as you adopt good naming conventions and do not
1114 define macros with names like @samp{HAVE_STDIO_H}, @samp{stdio}, or
1115 @samp{h}.  Though it is also safe here to omit the quotes around
1116 @samp{Define to 1 if you have <stdio.h>.} this is not recommended, as
1117 message strings are more likely to inadvertently contain commas.
1119 The following example is wrong and dangerous, as it is underquoted:
1121 @example
1122 AC_CHECK_HEADER(stdio.h,
1123                 AC_DEFINE(HAVE_STDIO_H, 1,
1124                    Define to 1 if you have <stdio.h>.),
1125                 AC_MSG_ERROR([Sorry, can't do anything for you]))
1126 @end example
1128 In other cases, you may have to use text that also resembles a macro
1129 call.  You must quote that text even when it is not passed as a macro
1130 argument:
1132 @example
1133 echo "Hard rock was here!  --[AC_DC]"
1134 @end example
1136 @noindent
1137 which results in:
1139 @example
1140 echo "Hard rock was here!  --AC_DC"
1141 @end example
1143 @noindent
1144 When you use the same text in a macro argument, you must therefore have
1145 an extra quotation level (since one is stripped away by the macro
1146 substitution).  In general, then, it is a good idea to @emph{use double
1147 quoting for all literal string arguments}:
1149 @example
1150 AC_MSG_WARN([[AC_DC stinks  --Iron Maiden]])
1151 @end example
1153 You are now able to understand one of the constructs of Autoconf that
1154 has been continually misunderstood@dots{}  The rule of thumb is that
1155 @emph{whenever you expect macro expansion, expect quote expansion};
1156 i.e., expect one level of quotes to be lost.  For instance:
1158 @example
1159 AC_COMPILE_IFELSE([char b[10];], [], [AC_MSG_ERROR([you lose])])
1160 @end example
1162 @noindent
1163 is incorrect: here, the first argument of @code{AC_COMPILE_IFELSE} is
1164 @samp{char b[10];} and is expanded once, which results in
1165 @samp{char b10;}.  (There was an idiom common in Autoconf's past to
1166 address this issue via the M4 @code{changequote} primitive, but do not
1167 use it!)  Let's take a closer look: the author meant the first argument
1168 to be understood as a literal, and therefore it must be quoted twice:
1170 @example
1171 AC_COMPILE_IFELSE([[char b[10];]], [], [AC_MSG_ERROR([you lose])])
1172 @end example
1174 @noindent
1175 Voil@`a, you actually produce @samp{char b[10];} this time!
1177 On the other hand, descriptions (e.g., the last parameter of
1178 @code{AC_DEFINE} or @code{AS_HELP_STRING}) are not literals---they
1179 are subject to line breaking, for example---and should not be double quoted.
1180 Even if these descriptions are short and are not actually broken, double
1181 quoting them yields weird results.
1183 Some macros take optional arguments, which this documentation represents
1184 as @ovar{arg} (not to be confused with the quote characters).  You may
1185 just leave them empty, or use @samp{[]} to make the emptiness of the
1186 argument explicit, or you may simply omit the trailing commas.  The
1187 three lines below are equivalent:
1189 @example
1190 AC_CHECK_HEADERS([stdio.h], [], [], [])
1191 AC_CHECK_HEADERS([stdio.h],,,)
1192 AC_CHECK_HEADERS([stdio.h])
1193 @end example
1195 It is best to put each macro call on its own line in
1196 @file{configure.ac}.  Most of the macros don't add extra newlines; they
1197 rely on the newline after the macro call to terminate the commands.
1198 This approach makes the generated @command{configure} script a little
1199 easier to read by not inserting lots of blank lines.  It is generally
1200 safe to set shell variables on the same line as a macro call, because
1201 the shell allows assignments without intervening newlines.
1203 You can include comments in @file{configure.ac} files by starting them
1204 with the @samp{#}.  For example, it is helpful to begin
1205 @file{configure.ac} files with a line like this:
1207 @example
1208 # Process this file with autoconf to produce a configure script.
1209 @end example
1211 @node configure.ac Layout
1212 @subsection Standard @file{configure.ac} Layout
1214 The order in which @file{configure.ac} calls the Autoconf macros is not
1215 important, with a few exceptions.  Every @file{configure.ac} must
1216 contain a call to @code{AC_INIT} before the checks, and a call to
1217 @code{AC_OUTPUT} at the end (@pxref{Output}).  Additionally, some macros
1218 rely on other macros having been called first, because they check
1219 previously set values of some variables to decide what to do.  These
1220 macros are noted in the individual descriptions (@pxref{Existing
1221 Tests}), and they also warn you when @command{configure} is created if they
1222 are called out of order.
1224 To encourage consistency, here is a suggested order for calling the
1225 Autoconf macros.  Generally speaking, the things near the end of this
1226 list are those that could depend on things earlier in it.  For example,
1227 library functions could be affected by types and libraries.
1229 @display
1230 @group
1231 Autoconf requirements
1232 @code{AC_INIT(@var{package}, @var{version}, @var{bug-report-address})}
1233 information on the package
1234 checks for programs
1235 checks for libraries
1236 checks for header files
1237 checks for types
1238 checks for structures
1239 checks for compiler characteristics
1240 checks for library functions
1241 checks for system services
1242 @code{AC_CONFIG_FILES(@r{[}@var{file@dots{}}@r{]})}
1243 @code{AC_OUTPUT}
1244 @end group
1245 @end display
1248 @node autoscan Invocation
1249 @section Using @command{autoscan} to Create @file{configure.ac}
1250 @cindex @command{autoscan}
1252 The @command{autoscan} program can help you create and/or maintain a
1253 @file{configure.ac} file for a software package.  @command{autoscan}
1254 examines source files in the directory tree rooted at a directory given
1255 as a command line argument, or the current directory if none is given.
1256 It searches the source files for common portability problems and creates
1257 a file @file{configure.scan} which is a preliminary @file{configure.ac}
1258 for that package, and checks a possibly existing @file{configure.ac} for
1259 completeness.
1261 When using @command{autoscan} to create a @file{configure.ac}, you
1262 should manually examine @file{configure.scan} before renaming it to
1263 @file{configure.ac}; it probably needs some adjustments.
1264 Occasionally, @command{autoscan} outputs a macro in the wrong order
1265 relative to another macro, so that @command{autoconf} produces a warning;
1266 you need to move such macros manually.  Also, if you want the package to
1267 use a configuration header file, you must add a call to
1268 @code{AC_CONFIG_HEADERS} (@pxref{Configuration Headers}).  You might
1269 also have to change or add some @code{#if} directives to your program in
1270 order to make it work with Autoconf (@pxref{ifnames Invocation}, for
1271 information about a program that can help with that job).
1273 When using @command{autoscan} to maintain a @file{configure.ac}, simply
1274 consider adding its suggestions.  The file @file{autoscan.log}
1275 contains detailed information on why a macro is requested.
1277 @command{autoscan} uses several data files (installed along with Autoconf)
1278 to determine which macros to output when it finds particular symbols in
1279 a package's source files.  These data files all have the same format:
1280 each line consists of a symbol, one or more blanks, and the Autoconf macro to
1281 output if that symbol is encountered.  Lines starting with @samp{#} are
1282 comments.
1284 @command{autoscan} accepts the following options:
1286 @table @option
1287 @item --help
1288 @itemx -h
1289 Print a summary of the command line options and exit.
1291 @item --version
1292 @itemx -V
1293 Print the version number of Autoconf and exit.
1295 @item --verbose
1296 @itemx -v
1297 Print the names of the files it examines and the potentially interesting
1298 symbols it finds in them.  This output can be voluminous.
1300 @item --include=@var{dir}
1301 @itemx -I @var{dir}
1302 Append @var{dir} to the include path.  Multiple invocations accumulate.
1304 @item --prepend-include=@var{dir}
1305 @item -B @var{dir}
1306 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1307 @end table
1309 @node ifnames Invocation
1310 @section Using @command{ifnames} to List Conditionals
1311 @cindex @command{ifnames}
1313 @command{ifnames} can help you write @file{configure.ac} for a software
1314 package.  It prints the identifiers that the package already uses in C
1315 preprocessor conditionals.  If a package has already been set up to have
1316 some portability, @command{ifnames} can thus help you figure out what its
1317 @command{configure} needs to check for.  It may help fill in some gaps in a
1318 @file{configure.ac} generated by @command{autoscan} (@pxref{autoscan
1319 Invocation}).
1321 @command{ifnames} scans all of the C source files named on the command line
1322 (or the standard input, if none are given) and writes to the standard
1323 output a sorted list of all the identifiers that appear in those files
1324 in @code{#if}, @code{#elif}, @code{#ifdef}, or @code{#ifndef}
1325 directives.  It prints each identifier on a line, followed by a
1326 space-separated list of the files in which that identifier occurs.
1328 @noindent
1329 @command{ifnames} accepts the following options:
1331 @table @option
1332 @item --help
1333 @itemx -h
1334 Print a summary of the command line options and exit.
1336 @item --version
1337 @itemx -V
1338 Print the version number of Autoconf and exit.
1339 @end table
1341 @node autoconf Invocation
1342 @section Using @command{autoconf} to Create @command{configure}
1343 @cindex @command{autoconf}
1345 To create @command{configure} from @file{configure.ac}, run the
1346 @command{autoconf} program with no arguments.  @command{autoconf} processes
1347 @file{configure.ac} with the M4 macro processor, using the
1348 Autoconf macros.  If you give @command{autoconf} an argument, it reads that
1349 file instead of @file{configure.ac} and writes the configuration script
1350 to the standard output instead of to @command{configure}.  If you give
1351 @command{autoconf} the argument @option{-}, it reads from the standard
1352 input instead of @file{configure.ac} and writes the configuration script
1353 to the standard output.
1355 The Autoconf macros are defined in several files.  Some of the files are
1356 distributed with Autoconf; @command{autoconf} reads them first.  Then it
1357 looks for the optional file @file{acsite.m4} in the directory that
1358 contains the distributed Autoconf macro files, and for the optional file
1359 @file{aclocal.m4} in the current directory.  Those files can contain
1360 your site's or the package's own Autoconf macro definitions
1361 (@pxref{Writing Autoconf Macros}, for more information).  If a macro is
1362 defined in more than one of the files that @command{autoconf} reads, the
1363 last definition it reads overrides the earlier ones.
1365 @command{autoconf} accepts the following options:
1367 @table @option
1368 @item --help
1369 @itemx -h
1370 Print a summary of the command line options and exit.
1372 @item --version
1373 @itemx -V
1374 Print the version number of Autoconf and exit.
1376 @item --verbose
1377 @itemx -v
1378 Report processing steps.
1380 @item --debug
1381 @itemx -d
1382 Don't remove the temporary files.
1384 @item --force
1385 @itemx -f
1386 Remake @file{configure} even if newer than its input files.
1388 @item --include=@var{dir}
1389 @itemx -I @var{dir}
1390 Append @var{dir} to the include path.  Multiple invocations accumulate.
1392 @item --prepend-include=@var{dir}
1393 @item -B @var{dir}
1394 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1396 @item --output=@var{file}
1397 @itemx -o @var{file}
1398 Save output (script or trace) to @var{file}.  The file @option{-} stands
1399 for the standard output.
1401 @item --warnings=@var{category}
1402 @itemx -W @var{category}
1403 @evindex WARNINGS
1404 Report the warnings related to @var{category} (which can actually be a
1405 comma separated list).  @xref{Reporting Messages}, macro
1406 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
1407 values include:
1409 @table @samp
1410 @item all
1411 report all the warnings
1413 @item none
1414 report none
1416 @item error
1417 treats warnings as errors
1419 @item no-@var{category}
1420 disable warnings falling into @var{category}
1421 @end table
1423 Warnings about @samp{syntax} are enabled by default, and the environment
1424 variable @env{WARNINGS}, a comma separated list of categories, is
1425 honored as well.  Passing @option{-W @var{category}} actually behaves as if
1426 you had passed @option{--warnings=syntax,$WARNINGS,@var{category}}.  If
1427 you want to disable the defaults and @env{WARNINGS}, but (for example)
1428 enable the warnings about obsolete constructs, you would use @option{-W
1429 none,obsolete}.
1431 @cindex Back trace
1432 @cindex Macro invocation stack
1433 Because @command{autoconf} uses @command{autom4te} behind the scenes, it
1434 displays a back trace for errors, but not for warnings; if you want
1435 them, just pass @option{-W error}.  @xref{autom4te Invocation}, for some
1436 examples.
1438 @item --trace=@var{macro}[:@var{format}]
1439 @itemx -t @var{macro}[:@var{format}]
1440 Do not create the @command{configure} script, but list the calls to
1441 @var{macro} according to the @var{format}.  Multiple @option{--trace}
1442 arguments can be used to list several macros.  Multiple @option{--trace}
1443 arguments for a single macro are not cumulative; instead, you should
1444 just make @var{format} as long as needed.
1446 The @var{format} is a regular string, with newlines if desired, and
1447 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}; see
1448 @ref{autom4te Invocation}, for details on the @var{format}.
1450 @item --initialization
1451 @itemx -i
1452 By default, @option{--trace} does not trace the initialization of the
1453 Autoconf macros (typically the @code{AC_DEFUN} definitions).  This
1454 results in a noticeable speedup, but can be disabled by this option.
1455 @end table
1458 It is often necessary to check the content of a @file{configure.ac}
1459 file, but parsing it yourself is extremely fragile and error-prone.  It
1460 is suggested that you rely upon @option{--trace} to scan
1461 @file{configure.ac}.  For instance, to find the list of variables that
1462 are substituted, use:
1464 @example
1465 @group
1466 $ @kbd{autoconf -t AC_SUBST}
1467 configure.ac:2:AC_SUBST:ECHO_C
1468 configure.ac:2:AC_SUBST:ECHO_N
1469 configure.ac:2:AC_SUBST:ECHO_T
1470 @i{More traces deleted}
1471 @end group
1472 @end example
1474 @noindent
1475 The example below highlights the difference between @samp{$@@},
1476 @samp{$*}, and @samp{$%}.
1478 @example
1479 @group
1480 $ @kbd{cat configure.ac}
1481 AC_DEFINE(This, is, [an
1482 [example]])
1483 $ @kbd{autoconf -t 'AC_DEFINE:@@: $@@}
1484 *: $*
1485 %: $%'
1486 @@: [This],[is],[an
1487 [example]]
1488 *: This,is,an
1489 [example]
1490 %: This:is:an [example]
1491 @end group
1492 @end example
1494 @noindent
1495 The @var{format} gives you a lot of freedom:
1497 @example
1498 @group
1499 $ @kbd{autoconf -t 'AC_SUBST:$$ac_subst@{"$1"@} = "$f:$l";'}
1500 $ac_subst@{"ECHO_C"@} = "configure.ac:2";
1501 $ac_subst@{"ECHO_N"@} = "configure.ac:2";
1502 $ac_subst@{"ECHO_T"@} = "configure.ac:2";
1503 @i{More traces deleted}
1504 @end group
1505 @end example
1507 @noindent
1508 A long @var{separator} can be used to improve the readability of complex
1509 structures, and to ease their parsing (for instance when no single
1510 character is suitable as a separator):
1512 @example
1513 @group
1514 $ @kbd{autoconf -t 'AM_MISSING_PROG:$@{|:::::|@}*'}
1515 ACLOCAL|:::::|aclocal|:::::|$missing_dir
1516 AUTOCONF|:::::|autoconf|:::::|$missing_dir
1517 AUTOMAKE|:::::|automake|:::::|$missing_dir
1518 @i{More traces deleted}
1519 @end group
1520 @end example
1522 @node autoreconf Invocation
1523 @section Using @command{autoreconf} to Update @command{configure} Scripts
1524 @cindex @command{autoreconf}
1526 Installing the various components of the @acronym{GNU} Build System can be
1527 tedious: running @command{autopoint} for Gettext, @command{automake} for
1528 @file{Makefile.in} etc.@: in each directory.  It may be needed either
1529 because some tools such as @command{automake} have been updated on your
1530 system, or because some of the sources such as @file{configure.ac} have
1531 been updated, or finally, simply in order to install the @acronym{GNU} Build
1532 System in a fresh tree.
1534 @command{autoreconf} runs @command{autoconf}, @command{autoheader},
1535 @command{aclocal}, @command{automake}, @command{libtoolize}, and
1536 @command{autopoint} (when appropriate) repeatedly to update the
1537 @acronym{GNU} Build System in the specified directories and their
1538 subdirectories (@pxref{Subdirectories}).  By default, it only remakes
1539 those files that are older than their sources.
1541 If you install a new version of some tool, you can make
1542 @command{autoreconf} remake @emph{all} of the files by giving it the
1543 @option{--force} option.
1545 @xref{Automatic Remaking}, for Make rules to automatically
1546 remake @command{configure} scripts when their source files change.  That
1547 method handles the timestamps of configuration header templates
1548 properly, but does not pass @option{--autoconf-dir=@var{dir}} or
1549 @option{--localdir=@var{dir}}.
1551 @cindex Gettext
1552 @cindex @command{autopoint}
1553 Gettext supplies the @command{autopoint} command to add translation
1554 infrastructure to a source package.  If you use @command{autopoint},
1555 your @file{configure.ac} should invoke both @code{AM_GNU_GETTEXT} and
1556 @code{AM_GNU_GETTEXT_VERSION(@var{gettext-version})}.  @xref{autopoint
1557 Invocation, , Invoking the @code{autopoint} Program, gettext,
1558 @acronym{GNU} @code{gettext} utilities}, for further details.
1560 @noindent
1561 @command{autoreconf} accepts the following options:
1563 @table @option
1564 @item --help
1565 @itemx -h
1566 Print a summary of the command line options and exit.
1568 @item --version
1569 @itemx -V
1570 Print the version number of Autoconf and exit.
1572 @item --verbose
1573 Print the name of each directory @command{autoreconf} examines and the
1574 commands it runs.  If given two or more times, pass @option{--verbose}
1575 to subordinate tools that support it.
1577 @item --debug
1578 @itemx -d
1579 Don't remove the temporary files.
1581 @item --force
1582 @itemx -f
1583 Remake even @file{configure} scripts and configuration headers that are
1584 newer than their input files (@file{configure.ac} and, if present,
1585 @file{aclocal.m4}).
1587 @item --install
1588 @itemx -i
1589 Install the missing auxiliary files in the package.  By default, files
1590 are copied; this can be changed with @option{--symlink}.
1592 If deemed appropriate, this option triggers calls to
1593 @samp{automake --add-missing},
1594 @samp{libtoolize}, @samp{autopoint}, etc.
1596 @item --no-recursive
1597 Do not rebuild files in subdirectories to configure (see @ref{Subdirectories},
1598 macro @code{AC_CONFIG_SUBDIRS}).
1600 @item --symlink
1601 @itemx -s
1602 When used with @option{--install}, install symbolic links to the missing
1603 auxiliary files instead of copying them.
1605 @item --make
1606 @itemx -m
1607 When the directories were configured, update the configuration by
1608 running @samp{./config.status --recheck && ./config.status}, and then
1609 run @samp{make}.
1611 @item --include=@var{dir}
1612 @itemx -I @var{dir}
1613 Append @var{dir} to the include path.  Multiple invocations accumulate.
1614 Passed on to @command{autoconf} and @command{autoheader} internally.
1616 @item --prepend-include=@var{dir}
1617 @item -B @var{dir}
1618 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1619 Passed on to @command{autoconf} and @command{autoheader} internally.
1621 @item --warnings=@var{category}
1622 @itemx -W @var{category}
1623 @evindex WARNINGS
1624 Report the warnings related to @var{category} (which can actually be a
1625 comma separated list).
1627 @table @samp
1628 @item cross
1629 related to cross compilation issues.
1631 @item obsolete
1632 report the uses of obsolete constructs.
1634 @item portability
1635 portability issues
1637 @item syntax
1638 dubious syntactic constructs.
1640 @item all
1641 report all the warnings
1643 @item none
1644 report none
1646 @item error
1647 treats warnings as errors
1649 @item no-@var{category}
1650 disable warnings falling into @var{category}
1651 @end table
1653 Warnings about @samp{syntax} are enabled by default, and the environment
1654 variable @env{WARNINGS}, a comma separated list of categories, is
1655 honored as well.  Passing @option{-W @var{category}} actually behaves as if
1656 you had passed @option{--warnings=syntax,$WARNINGS,@var{category}}.  If
1657 you want to disable the defaults and @env{WARNINGS}, but (for example)
1658 enable the warnings about obsolete constructs, you would use @option{-W
1659 none,obsolete}.
1660 @end table
1662 If you want @command{autoreconf} to pass flags that are not listed here
1663 on to @command{aclocal}, set @code{ACLOCAL_AMFLAGS} in your @file{Makefile.am}.
1665 @c ========================================= Initialization and Output Files.
1667 @node Setup
1668 @chapter Initialization and Output Files
1670 Autoconf-generated @command{configure} scripts need some information about
1671 how to initialize, such as how to find the package's source files and
1672 about the output files to produce.  The following sections describe the
1673 initialization and the creation of output files.
1675 @menu
1676 * Initializing configure::      Option processing etc.
1677 * Notices::                     Copyright, version numbers in @command{configure}
1678 * Input::                       Where Autoconf should find files
1679 * Output::                      Outputting results from the configuration
1680 * Configuration Actions::       Preparing the output based on results
1681 * Configuration Files::         Creating output files
1682 * Makefile Substitutions::      Using output variables in makefiles
1683 * Configuration Headers::       Creating a configuration header file
1684 * Configuration Commands::      Running arbitrary instantiation commands
1685 * Configuration Links::         Links depending on the configuration
1686 * Subdirectories::              Configuring independent packages together
1687 * Default Prefix::              Changing the default installation prefix
1688 @end menu
1690 @node Initializing configure
1691 @section Initializing @command{configure}
1693 Every @command{configure} script must call @code{AC_INIT} before doing
1694 anything else.  The only other required macro is @code{AC_OUTPUT}
1695 (@pxref{Output}).
1697 @defmac AC_INIT (@var{package}, @var{version}, @ovar{bug-report}, @ovar{tarname})
1698 @acindex{INIT}
1699 Process any command-line arguments and perform various initializations
1700 and verifications.
1702 Set the name of the @var{package} and its @var{version}.  These are
1703 typically used in @option{--version} support, including that of
1704 @command{configure}.  The optional argument @var{bug-report} should be
1705 the email to which users should send bug reports.  The package
1706 @var{tarname} differs from @var{package}: the latter designates the full
1707 package name (e.g., @samp{GNU Autoconf}), while the former is meant for
1708 distribution tar ball names (e.g., @samp{autoconf}).  It defaults to
1709 @var{package} with @samp{GNU } stripped, lower-cased, and all characters
1710 other than alphanumerics and underscores are changed to @samp{-}.
1712 It is preferable that the arguments of @code{AC_INIT} be static, i.e.,
1713 there should not be any shell computation, but they can be computed by
1716 The following M4 macros (e.g., @code{AC_PACKAGE_NAME}), output variables
1717 (e.g., @code{PACKAGE_NAME}), and preprocessor symbols (e.g.,
1718 @code{PACKAGE_NAME}) are defined by @code{AC_INIT}:
1720 @table @asis
1721 @item @code{AC_PACKAGE_NAME}, @code{PACKAGE_NAME}
1722 @acindex{PACKAGE_NAME}
1723 @ovindex PACKAGE_NAME
1724 @cvindex PACKAGE_NAME
1725 Exactly @var{package}.
1727 @item @code{AC_PACKAGE_TARNAME}, @code{PACKAGE_TARNAME}
1728 @acindex{PACKAGE_TARNAME}
1729 @ovindex PACKAGE_TARNAME
1730 @cvindex PACKAGE_TARNAME
1731 Exactly @var{tarname}.
1733 @item @code{AC_PACKAGE_VERSION}, @code{PACKAGE_VERSION}
1734 @acindex{PACKAGE_VERSION}
1735 @ovindex PACKAGE_VERSION
1736 @cvindex PACKAGE_VERSION
1737 Exactly @var{version}.
1739 @item @code{AC_PACKAGE_STRING}, @code{PACKAGE_STRING}
1740 @acindex{PACKAGE_STRING}
1741 @ovindex PACKAGE_STRING
1742 @cvindex PACKAGE_STRING
1743 Exactly @samp{@var{package} @var{version}}.
1745 @item @code{AC_PACKAGE_BUGREPORT}, @code{PACKAGE_BUGREPORT}
1746 @acindex{PACKAGE_BUGREPORT}
1747 @ovindex PACKAGE_BUGREPORT
1748 @cvindex PACKAGE_BUGREPORT
1749 Exactly @var{bug-report}.
1750 @end table
1751 @end defmac
1753 If your @command{configure} script does its own option processing, it
1754 should inspect @samp{$@@} or @samp{$*} immediately after calling
1755 @code{AC_INIT}, because other Autoconf macros liberally use the
1756 @command{set} command to process strings, and this has the side effect
1757 of updating @samp{$@@} and @samp{$*}.  However, we suggest that you use
1758 standard macros like @code{AC_ARG_ENABLE} instead of attempting to
1759 implement your own option processing.  @xref{Site Configuration}.
1762 @node Notices
1763 @section Notices in @command{configure}
1764 @cindex Notices in @command{configure}
1766 The following macros manage version numbers for @command{configure}
1767 scripts.  Using them is optional.
1769 @c FIXME: AC_PREREQ should not be here
1770 @defmac AC_PREREQ (@var{version})
1771 @acindex{PREREQ}
1772 @cindex Version
1773 Ensure that a recent enough version of Autoconf is being used.  If the
1774 version of Autoconf being used to create @command{configure} is
1775 earlier than @var{version}, print an error message to the standard
1776 error output and exit with failure (exit status is 63).  For example:
1778 @example
1779 AC_PREREQ([@value{VERSION}])
1780 @end example
1782 This macro is the only macro that may be used before @code{AC_INIT}, but
1783 for consistency, you are invited not to do so.
1784 @end defmac
1786 @defmac AC_COPYRIGHT (@var{copyright-notice})
1787 @acindex{COPYRIGHT}
1788 @cindex Copyright Notice
1789 State that, in addition to the Free Software Foundation's copyright on
1790 the Autoconf macros, parts of your @command{configure} are covered by the
1791 @var{copyright-notice}.
1793 The @var{copyright-notice} shows up in both the head of
1794 @command{configure} and in @samp{configure --version}.
1795 @end defmac
1798 @defmac AC_REVISION (@var{revision-info})
1799 @acindex{REVISION}
1800 @cindex Revision
1801 Copy revision stamp @var{revision-info} into the @command{configure}
1802 script, with any dollar signs or double-quotes removed.  This macro lets
1803 you put a revision stamp from @file{configure.ac} into @command{configure}
1804 without @acronym{RCS} or @acronym{CVS} changing it when you check in
1805 @command{configure}.  That way, you can determine easily which revision of
1806 @file{configure.ac} a particular @command{configure} corresponds to.
1808 For example, this line in @file{configure.ac}:
1810 @c The asis prevents RCS from changing the example in the manual.
1811 @example
1812 AC_REVISION([$@asis{Revision: 1.30 }$])
1813 @end example
1815 @noindent
1816 produces this in @command{configure}:
1818 @example
1819 #!/bin/sh
1820 # From configure.ac Revision: 1.30
1821 @end example
1822 @end defmac
1825 @node Input
1826 @section Finding @command{configure} Input
1829 @defmac AC_CONFIG_SRCDIR (@var{unique-file-in-source-dir})
1830 @acindex{CONFIG_SRCDIR}
1831 @var{unique-file-in-source-dir} is some file that is in the package's
1832 source directory; @command{configure} checks for this file's existence to
1833 make sure that the directory that it is told contains the source code in
1834 fact does.  Occasionally people accidentally specify the wrong directory
1835 with @option{--srcdir}; this is a safety check.  @xref{configure
1836 Invocation}, for more information.
1837 @end defmac
1840 @c FIXME: Remove definitively once --install explained.
1842 @c Small packages may store all their macros in @code{aclocal.m4}.  As the
1843 @c set of macros grows, or for maintenance reasons, a maintainer may prefer
1844 @c to split the macros in several files.  In this case, Autoconf must be
1845 @c told which files to load, and in which order.
1847 @c @defmac AC_INCLUDE (@var{file}@dots{})
1848 @c @acindex{INCLUDE}
1849 @c @c FIXME: There is no longer shell globbing.
1850 @c Read the macro definitions that appear in the listed files.  A list of
1851 @c space-separated file names or shell globbing patterns is expected.  The
1852 @c files are read in the order they're listed.
1854 @c Because the order of definition of macros is important (only the last
1855 @c definition of a macro is used), beware that it is @code{AC_INIT} that
1856 @c loads @file{acsite.m4} and @file{aclocal.m4}.  Note that
1857 @c @code{AC_INCLUDE}ing a file before @code{AC_INIT} or within
1858 @c @file{aclocal.m4} is different from doing so after @code{AC_INIT}: in
1859 @c the latter case, non-macro lines from included files may end up in the
1860 @c @file{configure} script, whereas in the former case, they'd be discarded
1861 @c just like any text that appear before @code{AC_INIT}.
1862 @c @end defmac
1864 Packages that do manual configuration or use the @command{install} program
1865 might need to tell @command{configure} where to find some other shell
1866 scripts by calling @code{AC_CONFIG_AUX_DIR}, though the default places
1867 it looks are correct for most cases.
1869 @defmac AC_CONFIG_AUX_DIR (@var{dir})
1870 @acindex{CONFIG_AUX_DIR}
1871 Use the auxiliary build tools (e.g., @file{install-sh},
1872 @file{config.sub}, @file{config.guess}, Cygnus @command{configure},
1873 Automake and Libtool scripts, etc.)@: that are in directory @var{dir}.
1874 These are auxiliary files used in configuration.  @var{dir} can be
1875 either absolute or relative to @file{@var{srcdir}}.  The default is
1876 @file{@var{srcdir}} or @file{@var{srcdir}/..} or
1877 @file{@var{srcdir}/../..}, whichever is the first that contains
1878 @file{install-sh}.  The other files are not checked for, so that using
1879 @code{AC_PROG_INSTALL} does not automatically require distributing the
1880 other auxiliary files.  It checks for @file{install.sh} also, but that
1881 name is obsolete because some @code{make} have a rule that creates
1882 @file{install} from it if there is no makefile.
1884 The auxiliary directory is commonly named @file{build-aux}.
1885 If you need portability to @acronym{DOS} variants, do not name the
1886 auxiliary directory @file{aux}.  @xref{File System Conventions}.
1887 @end defmac
1889 @defmac AC_REQUIRE_AUX_FILE (@var{file})
1890 @acindex{REQUIRE_AUX_FILE}
1891 Declares that @var{file} is expected in the directory defined above.  In
1892 Autoconf proper, this macro does nothing: its sole purpose is to be
1893 traced by third-party tools to produce a list of expected auxiliary
1894 files.  For instance it is called by macros like @code{AC_PROG_INSTALL}
1895 (@pxref{Particular Programs}) or @code{AC_CANONICAL_BUILD}
1896 (@pxref{Canonicalizing}) to register the auxiliary files they need.
1897 @end defmac
1899 Similarly, packages that use @command{aclocal} should declare where
1900 local macros can be found using @code{AC_CONFIG_MACRO_DIR}.
1902 @defmac AC_CONFIG_MACRO_DIR (@var{dir})
1903 @acindex{CONFIG_MACRO_DIR}
1904 Specify @var{dir} as the location of additional local Autoconf macros.
1905 This macro is intended for use by future versions of commands like
1906 @command{autoreconf} that trace macro calls.  It should be called
1907 directly from @file{configure.ac} so that tools that install macros for
1908 @command{aclocal} can find the macros' declarations.
1909 @end defmac
1912 @node Output
1913 @section Outputting Files
1914 @cindex Outputting files
1916 Every Autoconf script, e.g., @file{configure.ac}, should finish by
1917 calling @code{AC_OUTPUT}.  That is the macro that generates and runs
1918 @file{config.status}, which in turn creates the makefiles and any
1919 other files resulting from configuration.  This is the only required
1920 macro besides @code{AC_INIT} (@pxref{Input}).
1922 @defmac AC_OUTPUT
1923 @acindex{OUTPUT}
1924 @cindex Instantiation
1925 Generate @file{config.status} and launch it.  Call this macro once, at
1926 the end of @file{configure.ac}.
1928 @file{config.status} performs all the configuration actions: all the
1929 output files (see @ref{Configuration Files}, macro
1930 @code{AC_CONFIG_FILES}), header files (see @ref{Configuration Headers},
1931 macro @code{AC_CONFIG_HEADERS}), commands (see @ref{Configuration
1932 Commands}, macro @code{AC_CONFIG_COMMANDS}), links (see
1933 @ref{Configuration Links}, macro @code{AC_CONFIG_LINKS}), subdirectories
1934 to configure (see @ref{Subdirectories}, macro @code{AC_CONFIG_SUBDIRS})
1935 are honored.
1937 The location of your @code{AC_OUTPUT} invocation is the exact point
1938 where configuration actions are taken: any code afterwards is
1939 executed by @code{configure} once @command{config.status} was run.  If
1940 you want to bind actions to @command{config.status} itself
1941 (independently of whether @command{configure} is being run), see
1942 @ref{Configuration Commands, , Running Arbitrary Configuration
1943 Commands}.
1944 @end defmac
1946 Historically, the usage of @code{AC_OUTPUT} was somewhat different.
1947 @xref{Obsolete Macros}, for a description of the arguments that
1948 @code{AC_OUTPUT} used to support.
1951 If you run @command{make} in subdirectories, you should run it using the
1952 @code{make} variable @code{MAKE}.  Most versions of @command{make} set
1953 @code{MAKE} to the name of the @command{make} program plus any options it
1954 was given.  (But many do not include in it the values of any variables
1955 set on the command line, so those are not passed on automatically.)
1956 Some old versions of @command{make} do not set this variable.  The
1957 following macro allows you to use it even with those versions.
1959 @defmac AC_PROG_MAKE_SET
1960 @acindex{PROG_MAKE_SET}
1961 @ovindex SET_MAKE
1962 If the Make command, @code{$MAKE} if set or else @samp{make}, predefines
1963 @code{$(MAKE)}, define output variable @code{SET_MAKE} to be empty.
1964 Otherwise, define @code{SET_MAKE} to a macro definition that sets
1965 @code{$(MAKE)}, such as @samp{MAKE=make}.  Calls @code{AC_SUBST} for
1966 @code{SET_MAKE}.
1967 @end defmac
1969 If you use this macro, place a line like this in each @file{Makefile.in}
1970 that runs @code{MAKE} on other directories:
1972 @example
1973 @@SET_MAKE@@
1974 @end example
1978 @node Configuration Actions
1979 @section Performing Configuration Actions
1980 @cindex Configuration actions
1982 @file{configure} is designed so that it appears to do everything itself,
1983 but there is actually a hidden slave: @file{config.status}.
1984 @file{configure} is in charge of examining your system, but it is
1985 @file{config.status} that actually takes the proper actions based on the
1986 results of @file{configure}.  The most typical task of
1987 @file{config.status} is to @emph{instantiate} files.
1989 This section describes the common behavior of the four standard
1990 instantiating macros: @code{AC_CONFIG_FILES}, @code{AC_CONFIG_HEADERS},
1991 @code{AC_CONFIG_COMMANDS} and @code{AC_CONFIG_LINKS}.  They all
1992 have this prototype:
1994 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
1995 @c awful.
1996 @example
1997 AC_CONFIG_FOOS(@var{tag}@dots{}, [@var{commands}], [@var{init-cmds}])
1998 @end example
2000 @noindent
2001 where the arguments are:
2003 @table @var
2004 @item tag@dots{}
2005 A blank-or-newline-separated list of tags, which are typically the names of
2006 the files to instantiate.
2008 You are encouraged to use literals as @var{tags}.  In particular, you
2009 should avoid
2011 @example
2012 @dots{} && my_foos="$my_foos fooo"
2013 @dots{} && my_foos="$my_foos foooo"
2014 AC_CONFIG_FOOS([$my_foos])
2015 @end example
2017 @noindent
2018 and use this instead:
2020 @example
2021 @dots{} && AC_CONFIG_FOOS([fooo])
2022 @dots{} && AC_CONFIG_FOOS([foooo])
2023 @end example
2025 The macros @code{AC_CONFIG_FILES} and @code{AC_CONFIG_HEADERS} use
2026 special @var{tag} values: they may have the form @samp{@var{output}} or
2027 @samp{@var{output}:@var{inputs}}.  The file @var{output} is instantiated
2028 from its templates, @var{inputs} (defaulting to @samp{@var{output}.in}).
2030 @samp{AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk)]},
2031 for example, asks for
2032 the creation of the file @file{Makefile} that contains the expansion of the
2033 output variables in the concatenation of @file{boiler/top.mk} and
2034 @file{boiler/bot.mk}.
2036 The special value @samp{-} might be used to denote the standard output
2037 when used in @var{output}, or the standard input when used in the
2038 @var{inputs}.  You most probably don't need to use this in
2039 @file{configure.ac}, but it is convenient when using the command line
2040 interface of @file{./config.status}, see @ref{config.status Invocation},
2041 for more details.
2043 The @var{inputs} may be absolute or relative file names.  In the latter
2044 case they are first looked for in the build tree, and then in the source
2045 tree.
2047 @item commands
2048 Shell commands output literally into @file{config.status}, and
2049 associated with a tag that the user can use to tell @file{config.status}
2050 which the commands to run.  The commands are run each time a @var{tag}
2051 request is given to @file{config.status}, typically each time the file
2052 @file{@var{tag}} is created.
2054 The variables set during the execution of @command{configure} are
2055 @emph{not} available here: you first need to set them via the
2056 @var{init-cmds}.  Nonetheless the following variables are precomputed:
2058 @table @code
2059 @item srcdir
2060 The name of the top source directory, assuming that the working
2061 directory is the top build directory.  This
2062 is what the @command{configure} option @option{--srcdir} sets.
2064 @item ac_top_srcdir
2065 The name of the top source directory, assuming that the working
2066 directory is the current build directory.
2069 @item ac_top_build_prefix
2070 The name of the top build directory, assuming that the working
2071 directory is the current build directory.
2072 It can be empty, or else ends with a slash, so that you may concatenate
2075 @item ac_srcdir
2076 The name of the corresponding source directory, assuming that the
2077 working directory is the current build directory.
2078 @end table
2080 @noindent
2081 The @dfn{current} directory refers to the directory (or
2082 pseudo-directory) containing the input part of @var{tags}.  For
2083 instance, running
2085 @example
2086 AC_CONFIG_COMMANDS([deep/dir/out:in/in.in], [@dots{}], [@dots{}])
2087 @end example
2089 @noindent
2090  with @option{--srcdir=../package} produces the following values:
2092 @example
2093 # Argument of --srcdir
2094 srcdir='../package'
2095 # Reversing deep/dir
2096 ac_top_build_prefix='../../'
2097 # Concatenation of $ac_top_build_prefix and srcdir
2098 ac_top_srcdir='../../../package'
2099 # Concatenation of $ac_top_srcdir and deep/dir
2100 ac_srcdir='../../../package/deep/dir'
2101 @end example
2103 @noindent
2104 independently of @samp{in/in.in}.
2106 @item init-cmds
2107 Shell commands output @emph{unquoted} near the beginning of
2108 @file{config.status}, and executed each time @file{config.status} runs
2109 (regardless of the tag).  Because they are unquoted, for example,
2110 @samp{$var} is output as the value of @code{var}.  @var{init-cmds}
2111 is typically used by @file{configure} to give @file{config.status} some
2112 variables it needs to run the @var{commands}.
2114 You should be extremely cautious in your variable names: all the
2115 @var{init-cmds} share the same name space and may overwrite each other
2116 in unpredictable ways.  Sorry@enddots{}
2117 @end table
2119 All these macros can be called multiple times, with different
2120 @var{tag} values, of course!
2123 @node Configuration Files
2124 @section Creating Configuration Files
2125 @cindex Creating configuration files
2126 @cindex Configuration file creation
2128 Be sure to read the previous section, @ref{Configuration Actions}.
2130 @defmac AC_CONFIG_FILES (@var{file}@dots{}, @ovar{cmds}, @ovar{init-cmds})
2131 @acindex{CONFIG_FILES}
2132 Make @code{AC_OUTPUT} create each @file{@var{file}} by copying an input
2133 file (by default @file{@var{file}.in}), substituting the output variable
2134 values.
2135 @c Before we used to have this feature, which was later rejected
2136 @c because it complicates the writing of makefiles:
2137 @c If the file would be unchanged, it is left untouched, to preserve
2138 @c timestamp.
2139 This macro is one of the instantiating macros; see @ref{Configuration
2140 Actions}.  @xref{Makefile Substitutions}, for more information on using
2141 output variables.  @xref{Setting Output Variables}, for more information
2142 on creating them.  This macro creates the directory that the file is in
2143 if it doesn't exist.  Usually, makefiles are created this way,
2144 but other files, such as @file{.gdbinit}, can be specified as well.
2146 Typical calls to @code{AC_CONFIG_FILES} look like this:
2148 @example
2149 AC_CONFIG_FILES([Makefile src/Makefile man/Makefile X/Imakefile])
2150 AC_CONFIG_FILES([autoconf], [chmod +x autoconf])
2151 @end example
2153 You can override an input file name by appending to @var{file} a
2154 colon-separated list of input files.  Examples:
2156 @example
2157 AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk]
2158                 [lib/Makefile:boiler/lib.mk])
2159 @end example
2161 @noindent
2162 Doing this allows you to keep your file names acceptable to
2163 @acronym{DOS} variants, or
2164 to prepend and/or append boilerplate to the file.
2165 @end defmac
2169 @node Makefile Substitutions
2170 @section Substitutions in Makefiles
2171 @cindex Substitutions in makefiles
2172 @cindex Makefile substitutions
2174 Each subdirectory in a distribution that contains something to be
2175 compiled or installed should come with a file @file{Makefile.in}, from
2176 which @command{configure} creates a file @file{Makefile} in that directory.
2177 To create @file{Makefile}, @command{configure} performs a simple variable
2178 substitution, replacing occurrences of @samp{@@@var{variable}@@} in
2179 @file{Makefile.in} with the value that @command{configure} has determined
2180 for that variable.  Variables that are substituted into output files in
2181 this way are called @dfn{output variables}.  They are ordinary shell
2182 variables that are set in @command{configure}.  To make @command{configure}
2183 substitute a particular variable into the output files, the macro
2184 @code{AC_SUBST} must be called with that variable name as an argument.
2185 Any occurrences of @samp{@@@var{variable}@@} for other variables are
2186 left unchanged.  @xref{Setting Output Variables}, for more information
2187 on creating output variables with @code{AC_SUBST}.
2189 A software package that uses a @command{configure} script should be
2190 distributed with a file @file{Makefile.in}, but no makefile; that
2191 way, the user has to properly configure the package for the local system
2192 before compiling it.
2194 @xref{Makefile Conventions, , Makefile Conventions, standards, The
2195 @acronym{GNU} Coding Standards}, for more information on what to put in
2196 makefiles.
2198 @menu
2199 * Preset Output Variables::     Output variables that are always set
2200 * Installation Directory Variables::  Other preset output variables
2201 * Changed Directory Variables:: Warnings about @file{datarootdir}
2202 * Build Directories::           Supporting multiple concurrent compiles
2203 * Automatic Remaking::          Makefile rules for configuring
2204 @end menu
2206 @node Preset Output Variables
2207 @subsection Preset Output Variables
2208 @cindex Output variables
2210 Some output variables are preset by the Autoconf macros.  Some of the
2211 Autoconf macros set additional output variables, which are mentioned in
2212 the descriptions for those macros.  @xref{Output Variable Index}, for a
2213 complete list of output variables.  @xref{Installation Directory
2214 Variables}, for the list of the preset ones related to installation
2215 directories.  Below are listed the other preset ones.  They all are
2216 precious variables (@pxref{Setting Output Variables},
2217 @code{AC_ARG_VAR}).
2219 @c Just say no to ASCII sorting!  We're humans, not computers.
2220 @c These variables are listed as they would be in a dictionary:
2221 @c actor
2222 @c Actress
2223 @c actress
2225 @defvar CFLAGS
2226 @ovindex CFLAGS
2227 Debugging and optimization options for the C compiler.  If it is not set
2228 in the environment when @command{configure} runs, the default value is set
2229 when you call @code{AC_PROG_CC} (or empty if you don't).  @command{configure}
2230 uses this variable when compiling or linking programs to test for C features.
2232 If a compiler option affects only the behavior of the preprocessor
2233 (e.g., @option{-D @var{name}}), it should be put into @code{CPPFLAGS}
2234 instead.  If it affects only the linker (e.g., @option{-L
2235 @var{directory}}), it should be put into @code{LDFLAGS} instead.  If it
2236 affects only the compiler proper, @code{CFLAGS} is the natural home for
2237 it.  If an option affects multiple phases of the compiler, though,
2238 matters get tricky.  One approach to put such options directly into
2239 @code{CC}, e.g., @code{CC='gcc -m64'}.  Another is to put them into both
2240 @code{CPPFLAGS} and @code{LDFLAGS}, but not into @code{CFLAGS}.
2242 @end defvar
2244 @defvar configure_input
2245 @ovindex configure_input
2246 A comment saying that the file was generated automatically by
2247 @command{configure} and giving the name of the input file.
2248 @code{AC_OUTPUT} adds a comment line containing this variable to the top
2249 of every makefile it creates.  For other files, you should
2250 reference this variable in a comment at the top of each input file.  For
2251 example, an input shell script should begin like this:
2253 @example
2254 #!/bin/sh
2255 # @@configure_input@@
2256 @end example
2258 @noindent
2259 The presence of that line also reminds people editing the file that it
2260 needs to be processed by @command{configure} in order to be used.
2261 @end defvar
2263 @defvar CPPFLAGS
2264 @ovindex CPPFLAGS
2265 Preprocessor options for the C, C++, and Objective C preprocessors and
2266 compilers.  If
2267 it is not set in the environment when @command{configure} runs, the default
2268 value is empty.  @command{configure} uses this variable when preprocessing
2269 or compiling programs to test for C, C++, and Objective C features.
2271 This variable's contents should contain options like @option{-I},
2272 @option{-D}, and @option{-U} that affect only the behavior of the
2273 preprocessor.  Please see the explanation of @code{CFLAGS} for what you
2274 can do if an option affects other phases of the compiler as well.
2276 Currently, @command{configure} always links as part of a single
2277 invocation of the compiler that also preprocesses and compiles, so it
2278 uses this variable also when linking programs.  However, it is unwise to
2279 depend on this behavior because the @acronym{GNU} coding standards do
2280 not require it and many packages do not use @code{CPPFLAGS} when linking
2281 programs.
2283 @xref{Special Chars in Variables}, for limitations that @code{CPPFLAGS}
2284 might run into.
2285 @end defvar
2287 @defvar CXXFLAGS
2288 @ovindex CXXFLAGS
2289 Debugging and optimization options for the C++ compiler.  It acts like
2290 @code{CFLAGS}, but for C++ instead of C.
2291 @end defvar
2293 @defvar DEFS
2294 @ovindex DEFS
2295 @option{-D} options to pass to the C compiler.  If @code{AC_CONFIG_HEADERS}
2296 is called, @command{configure} replaces @samp{@@DEFS@@} with
2297 @option{-DHAVE_CONFIG_H} instead (@pxref{Configuration Headers}).  This
2298 variable is not defined while @command{configure} is performing its tests,
2299 only when creating the output files.  @xref{Setting Output Variables}, for
2300 how to check the results of previous tests.
2301 @end defvar
2303 @defvar ECHO_C
2304 @defvarx ECHO_N
2305 @defvarx ECHO_T
2306 @ovindex ECHO_C
2307 @ovindex ECHO_N
2308 @ovindex ECHO_T
2309 How does one suppress the trailing newline from @command{echo} for
2310 question-answer message pairs?  These variables provide a way:
2312 @example
2313 echo $ECHO_N "And the winner is... $ECHO_C"
2314 sleep 100000000000
2315 echo "$@{ECHO_T@}dead."
2316 @end example
2318 @noindent
2319 Some old and uncommon @command{echo} implementations offer no means to
2320 achieve this, in which case @code{ECHO_T} is set to tab.  You might not
2321 want to use it.
2322 @end defvar
2324 @defvar ERLCFLAGS
2325 @ovindex ERLCFLAGS
2326 Debugging and optimization options for the Erlang compiler.  If it is not set
2327 in the environment when @command{configure} runs, the default value is empty.
2328 @command{configure} uses this variable when compiling
2329 programs to test for Erlang features.
2330 @end defvar
2332 @defvar FCFLAGS
2333 @ovindex FCFLAGS
2334 Debugging and optimization options for the Fortran compiler.  If it
2335 is not set in the environment when @command{configure} runs, the default
2336 value is set when you call @code{AC_PROG_FC} (or empty if you don't).
2337 @command{configure} uses this variable when compiling or linking
2338 programs to test for Fortran features.
2339 @end defvar
2341 @defvar FFLAGS
2342 @ovindex FFLAGS
2343 Debugging and optimization options for the Fortran 77 compiler.  If it
2344 is not set in the environment when @command{configure} runs, the default
2345 value is set when you call @code{AC_PROG_F77} (or empty if you don't).
2346 @command{configure} uses this variable when compiling or linking
2347 programs to test for Fortran 77 features.
2348 @end defvar
2350 @defvar LDFLAGS
2351 @ovindex LDFLAGS
2352 Options for the linker.  If it is not set
2353 in the environment when @command{configure} runs, the default value is empty.
2354 @command{configure} uses this variable when linking programs to test for
2355 C, C++, Objective C, and Fortran features.
2357 This variable's contents should contain options like @option{-s} and
2358 @option{-L} that affect only the behavior of the linker.  Please see the
2359 explanation of @code{CFLAGS} for what you can do if an option also
2360 affects other phases of the compiler.
2362 Don't use this variable to pass library names
2363 (@option{-l}) to the linker; use @code{LIBS} instead.
2364 @end defvar
2366 @defvar LIBS
2367 @ovindex LIBS
2368 @option{-l} options to pass to the linker.  The default value is empty,
2369 but some Autoconf macros may prepend extra libraries to this variable if
2370 those libraries are found and provide necessary functions, see
2371 @ref{Libraries}.  @command{configure} uses this variable when linking
2372 programs to test for C, C++, and Fortran features.
2373 @end defvar
2375 @defvar OBJCFLAGS
2376 @ovindex OBJCFLAGS
2377 Debugging and optimization options for the Objective C compiler.  It
2378 acts like @code{CFLAGS}, but for Objective C instead of C.
2379 @end defvar
2381 @defvar builddir
2382 @ovindex builddir
2383 Rigorously equal to @samp{.}.  Added for symmetry only.
2384 @end defvar
2386 @defvar abs_builddir
2387 @ovindex abs_builddir
2388 Absolute name of @code{builddir}.
2389 @end defvar
2391 @defvar top_builddir
2392 @ovindex top_builddir
2393 The relative name of the top level of the current build tree.  In the
2394 top-level directory, this is the same as @code{builddir}.
2395 @end defvar
2397 @defvar abs_top_builddir
2398 @ovindex abs_top_builddir
2399 Absolute name of @code{top_builddir}.
2400 @end defvar
2402 @defvar srcdir
2403 @ovindex srcdir
2404 The name of the directory that contains the source code for
2405 that makefile.
2406 @end defvar
2408 @defvar abs_srcdir
2409 @ovindex abs_srcdir
2410 Absolute name of @code{srcdir}.
2411 @end defvar
2413 @defvar top_srcdir
2414 @ovindex top_srcdir
2415 The name of the top-level source code directory for the
2416 package.  In the top-level directory, this is the same as @code{srcdir}.
2417 @end defvar
2419 @defvar abs_top_srcdir
2420 @ovindex abs_top_srcdir
2421 Absolute name of @code{top_srcdir}.
2422 @end defvar
2424 @node Installation Directory Variables
2425 @subsection Installation Directory Variables
2426 @cindex Installation directories
2427 @cindex Directories, installation
2429 The following variables specify the directories for
2430 package installation, see @ref{Directory Variables, , Variables for
2431 Installation Directories, standards, The @acronym{GNU} Coding
2432 Standards}, for more information.  See the end of this section for
2433 details on when and how to use these variables.
2435 @defvar bindir
2436 @ovindex bindir
2437 The directory for installing executables that users run.
2438 @end defvar
2440 @defvar datadir
2441 @ovindex datadir
2442 The directory for installing idiosyncratic read-only
2443 architecture-independent data.
2444 @end defvar
2446 @defvar datarootdir
2447 @ovindex datarootdir
2448 The root of the directory tree for read-only architecture-independent
2449 data files.
2450 @end defvar
2452 @defvar docdir
2453 @ovindex docdir
2454 The directory for installing documentation files (other than Info and
2455 man).
2456 @end defvar
2458 @defvar dvidir
2459 @ovindex dvidir
2460 The directory for installing documentation files in DVI format.
2461 @end defvar
2463 @defvar exec_prefix
2464 @ovindex exec_prefix
2465 The installation prefix for architecture-dependent files.  By default
2466 it's the same as @var{prefix}.  You should avoid installing anything
2467 directly to @var{exec_prefix}.  However, the default value for
2468 directories containing architecture-dependent files should be relative
2469 to @var{exec_prefix}.
2470 @end defvar
2472 @defvar htmldir
2473 @ovindex htmldir
2474 The directory for installing HTML documentation.
2475 @end defvar
2477 @defvar includedir
2478 @ovindex includedir
2479 The directory for installing C header files.
2480 @end defvar
2482 @defvar infodir
2483 @ovindex infodir
2484 The directory for installing documentation in Info format.
2485 @end defvar
2487 @defvar libdir
2488 @ovindex libdir
2489 The directory for installing object code libraries.
2490 @end defvar
2492 @defvar libexecdir
2493 @ovindex libexecdir
2494 The directory for installing executables that other programs run.
2495 @end defvar
2497 @defvar localedir
2498 @ovindex localedir
2499 The directory for installing locale-dependent but
2500 architecture-independent data, such as message catalogs.  This directory
2501 usually has a subdirectory per locale.
2502 @end defvar
2504 @defvar localstatedir
2505 @ovindex localstatedir
2506 The directory for installing modifiable single-machine data.
2507 @end defvar
2509 @defvar mandir
2510 @ovindex mandir
2511 The top-level directory for installing documentation in man format.
2512 @end defvar
2514 @defvar oldincludedir
2515 @ovindex oldincludedir
2516 The directory for installing C header files for non-@acronym{GCC} compilers.
2517 @end defvar
2519 @defvar pdfdir
2520 @ovindex pdfdir
2521 The directory for installing PDF documentation.
2522 @end defvar
2524 @defvar prefix
2525 @ovindex prefix
2526 The common installation prefix for all files.  If @var{exec_prefix}
2527 is defined to a different value, @var{prefix} is used only for
2528 architecture-independent files.
2529 @end defvar
2531 @defvar psdir
2532 @ovindex psdir
2533 The directory for installing PostScript documentation.
2534 @end defvar
2536 @defvar sbindir
2537 @ovindex sbindir
2538 The directory for installing executables that system
2539 administrators run.
2540 @end defvar
2542 @defvar sharedstatedir
2543 @ovindex sharedstatedir
2544 The directory for installing modifiable architecture-independent data.
2545 @end defvar
2547 @defvar sysconfdir
2548 @ovindex sysconfdir
2549 The directory for installing read-only single-machine data.
2550 @end defvar
2553 Most of these variables have values that rely on @code{prefix} or
2554 @code{exec_prefix}.  It is deliberate that the directory output
2555 variables keep them unexpanded: typically @samp{@@datarootdir@@} is
2556 replaced by @samp{$@{prefix@}/share}, not @samp{/usr/local/share}, and
2557 @samp{@@datadir@@} is replaced by @samp{$@{datarootdir@}}.
2559 This behavior is mandated by the @acronym{GNU} coding standards, so that when
2560 the user runs:
2562 @table @samp
2563 @item make
2564 she can still specify a different prefix from the one specified to
2565 @command{configure}, in which case, if needed, the package should hard
2566 code dependencies corresponding to the make-specified prefix.
2568 @item make install
2569 she can specify a different installation location, in which case the
2570 package @emph{must} still depend on the location which was compiled in
2571 (i.e., never recompile when @samp{make install} is run).  This is an
2572 extremely important feature, as many people may decide to install all
2573 the files of a package grouped together, and then install links from
2574 the final locations to there.
2575 @end table
2577 In order to support these features, it is essential that
2578 @code{datarootdir} remains being defined as @samp{$@{prefix@}/share} to
2579 depend upon the current value of @code{prefix}.
2581 A corollary is that you should not use these variables except in
2582 makefiles.  For instance, instead of trying to evaluate @code{datadir}
2583 in @file{configure} and hard-coding it in makefiles using
2584 e.g., @samp{AC_DEFINE_UNQUOTED([DATADIR], ["$datadir"], [Data directory.])},
2585 you should add
2586 @option{-DDATADIR='$(datadir)'} to your makefile's definition of
2587 @code{CPPFLAGS} (@code{AM_CPPFLAGS} if you are also using Automake).
2589 Similarly, you should not rely on @code{AC_CONFIG_FILES} to replace
2590 @code{datadir} and friends in your shell scripts and other files; instead,
2591 let @command{make} manage their replacement.  For instance Autoconf
2592 ships templates of its shell scripts ending with @samp{.in}, and uses a
2593 makefile snippet similar to the following to build scripts like
2594 @command{autoheader} and @command{autom4te}:
2596 @example
2597 @group
2598 edit = sed \
2599         -e 's|@@datadir[@@]|$(pkgdatadir)|g' \
2600         -e 's|@@prefix[@@]|$(prefix)|g'
2601 @end group
2603 @group
2604 autoheader autom4te: Makefile
2605         rm -f $@@ $@@.tmp
2606         $(edit) '$(srcdir)/$@@.in' >$@@.tmp
2607         chmod +x $@@.tmp
2608         chmod a-w $@@.tmp
2609         mv $@@.tmp $@@
2610 @end group
2612 @group
2613 autoheader: $(srcdir)/autoheader.in
2614 autom4te: $(srcdir)/autom4te.in
2615 @end group
2616 @end example
2618 Some details are noteworthy:
2620 @table @asis
2621 @item @samp{@@datadir[@@]}
2622 The brackets prevent @command{configure} from replacing
2623 @samp{@@datadir@@} in the Sed expression itself.
2624 Brackets are preferable to a backslash here, since
2625 Posix says @samp{\@@} is not portable.
2627 @item @samp{$(pkgdatadir)}
2628 Don't use @samp{@@pkgdatadir@@}!  Use the matching makefile variable
2629 instead.
2631 @item @samp{/}
2632 Don't use @samp{/} in the Sed expressions that replace file names since
2633 most likely the
2634 variables you use, such as @samp{$(pkgdatadir)}, contain @samp{/}.
2635 Use a shell metacharacter instead, such as @samp{|}.
2637 @item special characters
2638 File names, file name components, and the value of @code{VPATH} should
2639 not contain shell metacharacters or white
2640 space.  @xref{Special Chars in Variables}.
2642 @item dependency on @file{Makefile}
2643 Since @code{edit} uses values that depend on the configuration specific
2644 values (@code{prefix}, etc.)@: and not only on @code{VERSION} and so forth,
2645 the output depends on @file{Makefile}, not @file{configure.ac}.
2647 @item @samp{$@@}
2648 The main rule is generic, and uses @samp{$@@} extensively to
2649 avoid the need for multiple copies of the rule.
2651 @item Separated dependencies and single suffix rules
2652 You can't use them!  The above snippet cannot be (portably) rewritten
2655 @example
2656 autoconf autoheader: Makefile
2657 @group
2658 .in:
2659         rm -f $@@ $@@.tmp
2660         $(edit) $< >$@@.tmp
2661         chmod +x $@@.tmp
2662         mv $@@.tmp $@@
2663 @end group
2664 @end example
2666 @xref{Single Suffix Rules}, for details.
2668 @item @samp{$(srcdir)}
2669 Be sure to specify the name of the source directory,
2670 otherwise the package won't support separated builds.
2671 @end table
2673 For the more specific installation of Erlang libraries, the following variables
2674 are defined:
2676 @defvar ERLANG_INSTALL_LIB_DIR
2677 @ovindex ERLANG_INSTALL_LIB_DIR
2678 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
2679 The common parent directory of Erlang library installation directories.
2680 This variable is set by calling the @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR}
2681 macro in @file{configure.ac}.
2682 @end defvar
2684 @defvar ERLANG_INSTALL_LIB_DIR_@var{library}
2685 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
2686 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
2687 The installation directory for Erlang library @var{library}.
2688 This variable is set by calling the
2689 @samp{AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(@var{library}, @var{version}}
2690 macro in @file{configure.ac}.
2691 @end defvar
2693 @xref{Erlang Libraries}, for details.
2696 @node Changed Directory Variables
2697 @subsection Changed Directory Variables
2698 @cindex @file{datarootdir}
2700 In Autoconf 2.60, the set of directory variables has changed, and the
2701 defaults of some variables have been adjusted
2702 (@pxref{Installation Directory Variables}) to changes in the
2703 @acronym{GNU} Coding Standards.  Notably, @file{datadir}, @file{infodir}, and
2704 @file{mandir} are now expressed in terms of @file{datarootdir}.  If you are
2705 upgrading from an earlier Autoconf version, you may need to adjust your files
2706 to ensure that the directory variables are substituted correctly
2707 (@pxref{Defining Directories}), and that a definition of @file{datarootdir} is
2708 in place.  For example, in a @file{Makefile.in}, adding
2710 @example
2711 datarootdir = @@datarootdir@@
2712 @end example
2714 @noindent
2715 is usually sufficient.  If you use Automake to create @file{Makefile.in},
2716 it will add this for you.
2718 To help with the transition, Autoconf warns about files that seem to use
2719 @code{datarootdir} without defining it.  In some cases, it then expands
2720 the value of @code{$datarootdir} in substitutions of the directory
2721 variables.  The following example shows such a warning:
2723 @example
2724 $ @kbd{cat configure.ac}
2725 AC_INIT
2726 AC_CONFIG_FILES([Makefile])
2727 AC_OUTPUT
2728 $ @kbd{cat Makefile.in}
2729 prefix = @@prefix@@
2730 datadir = @@datadir@@
2731 $ @kbd{autoconf}
2732 $ @kbd{configure}
2733 configure: creating ./config.status
2734 config.status: creating Makefile
2735 config.status: WARNING:
2736                Makefile.in seems to ignore the --datarootdir setting
2737 $ @kbd{cat Makefile}
2738 prefix = /usr/local
2739 datadir = $@{prefix@}/share
2740 @end example
2742 Usually one can easily change the file to accommodate both older and newer
2743 Autoconf releases:
2745 @example
2746 $ @kbd{cat Makefile.in}
2747 prefix = @@prefix@@
2748 datarootdir = @@datarootdir@@
2749 datadir = @@datadir@@
2750 $ @kbd{configure}
2751 configure: creating ./config.status
2752 config.status: creating Makefile
2753 $ @kbd{cat Makefile}
2754 prefix = /usr/local
2755 datarootdir = $@{prefix@}/share
2756 datadir = $@{datarootdir@}
2757 @end example
2759 @acindex{DATAROOTDIR_CHECKED}
2760 In some cases, however, the checks may not be able to detect that a suitable
2761 initialization of @code{datarootdir} is in place, or they may fail to detect
2762 that such an initialization is necessary in the output file.  If, after
2763 auditing your package, there are still spurious @file{configure} warnings about
2764 @code{datarootdir}, you may add the line
2766 @example
2767 AC_DEFUN([AC_DATAROOTDIR_CHECKED])
2768 @end example
2770 @noindent
2771 to your @file{configure.ac} to disable the warnings.  This is an exception
2772 to the usual rule that you should not define a macro whose name begins with
2773 @code{AC_} (@pxref{Macro Names}).
2777 @node Build Directories
2778 @subsection Build Directories
2779 @cindex Build directories
2780 @cindex Directories, build
2782 You can support compiling a software package for several architectures
2783 simultaneously from the same copy of the source code.  The object files
2784 for each architecture are kept in their own directory.
2786 To support doing this, @command{make} uses the @code{VPATH} variable to
2787 find the files that are in the source directory.  @acronym{GNU} Make
2788 and most other recent @command{make} programs can do this.  Older
2789 @command{make} programs do not support @code{VPATH}; when using them, the
2790 source code must be in the same directory as the object files.
2792 To support @code{VPATH}, each @file{Makefile.in} should contain two
2793 lines that look like:
2795 @example
2796 srcdir = @@srcdir@@
2797 VPATH = @@srcdir@@
2798 @end example
2800 Do not set @code{VPATH} to the value of another variable, for example
2801 @samp{VPATH = $(srcdir)}, because some versions of @command{make} do not do
2802 variable substitutions on the value of @code{VPATH}.
2804 @command{configure} substitutes the correct value for @code{srcdir} when
2805 it produces @file{Makefile}.
2807 Do not use the @code{make} variable @code{$<}, which expands to the
2808 file name of the file in the source directory (found with @code{VPATH}),
2809 except in implicit rules.  (An implicit rule is one such as @samp{.c.o},
2810 which tells how to create a @file{.o} file from a @file{.c} file.)  Some
2811 versions of @command{make} do not set @code{$<} in explicit rules; they
2812 expand it to an empty value.
2814 Instead, Make command lines should always refer to source
2815 files by prefixing them with @samp{$(srcdir)/}.  For example:
2817 @example
2818 time.info: time.texinfo
2819         $(MAKEINFO) '$(srcdir)/time.texinfo'
2820 @end example
2822 @node Automatic Remaking
2823 @subsection Automatic Remaking
2824 @cindex Automatic remaking
2825 @cindex Remaking automatically
2827 You can put rules like the following in the top-level @file{Makefile.in}
2828 for a package to automatically update the configuration information when
2829 you change the configuration files.  This example includes all of the
2830 optional files, such as @file{aclocal.m4} and those related to
2831 configuration header files.  Omit from the @file{Makefile.in} rules for
2832 any of these files that your package does not use.
2834 The @samp{$(srcdir)/} prefix is included because of limitations in the
2835 @code{VPATH} mechanism.
2837 The @file{stamp-} files are necessary because the timestamps of
2838 @file{config.h.in} and @file{config.h} are not changed if remaking
2839 them does not change their contents.  This feature avoids unnecessary
2840 recompilation.  You should include the file @file{stamp-h.in} your
2841 package's distribution, so that @command{make} considers
2842 @file{config.h.in} up to date.  Don't use @command{touch}
2843 (@pxref{Limitations of Usual Tools}); instead, use @command{echo} (using
2844 @command{date} would cause needless differences, hence @acronym{CVS}
2845 conflicts, etc.).
2847 @example
2848 @group
2849 $(srcdir)/configure: configure.ac aclocal.m4
2850         cd '$(srcdir)' && autoconf
2852 # autoheader might not change config.h.in, so touch a stamp file.
2853 $(srcdir)/config.h.in: stamp-h.in
2854 $(srcdir)/stamp-h.in: configure.ac aclocal.m4
2855         cd '$(srcdir)' && autoheader
2856         echo timestamp > '$(srcdir)/stamp-h.in'
2858 config.h: stamp-h
2859 stamp-h: config.h.in config.status
2860         ./config.status
2862 Makefile: Makefile.in config.status
2863         ./config.status
2865 config.status: configure
2866         ./config.status --recheck
2867 @end group
2868 @end example
2870 @noindent
2871 (Be careful if you copy these lines directly into your makefile, as you
2872 need to convert the indented lines to start with the tab character.)
2874 In addition, you should use
2876 @example
2877 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
2878 @end example
2880 @noindent
2881 so @file{config.status} ensures that @file{config.h} is considered up to
2882 date.  @xref{Output}, for more information about @code{AC_OUTPUT}.
2884 @xref{config.status Invocation}, for more examples of handling
2885 configuration-related dependencies.
2887 @node Configuration Headers
2888 @section Configuration Header Files
2889 @cindex Configuration Header
2890 @cindex @file{config.h}
2892 When a package contains more than a few tests that define C preprocessor
2893 symbols, the command lines to pass @option{-D} options to the compiler
2894 can get quite long.  This causes two problems.  One is that the
2895 @command{make} output is hard to visually scan for errors.  More
2896 seriously, the command lines can exceed the length limits of some
2897 operating systems.  As an alternative to passing @option{-D} options to
2898 the compiler, @command{configure} scripts can create a C header file
2899 containing @samp{#define} directives.  The @code{AC_CONFIG_HEADERS}
2900 macro selects this kind of output.  Though it can be called anywhere
2901 between @code{AC_INIT} and @code{AC_OUTPUT}, it is customary to call
2902 it right after @code{AC_INIT}.
2904 The package should @samp{#include} the configuration header file before
2905 any other header files, to prevent inconsistencies in declarations (for
2906 example, if it redefines @code{const}).
2908 To provide for VPATH builds, remember to pass the C compiler a @option{-I.}
2909 option (or @option{-I..}; whichever directory contains @file{config.h}).
2910 Even if you use @samp{#include "config.h"}, the preprocessor searches only
2911 the directory of the currently read file, i.e., the source directory, not
2912 the build directory.
2914 With the appropriate @option{-I} option, you can use
2915 @samp{#include <config.h>}.  Actually, it's a good habit to use it,
2916 because in the rare case when the source directory contains another
2917 @file{config.h}, the build directory should be searched first.
2920 @defmac AC_CONFIG_HEADERS (@var{header} @dots{}, @ovar{cmds}, @ovar{init-cmds})
2921 @acindex{CONFIG_HEADERS}
2922 @cvindex HAVE_CONFIG_H
2923 This macro is one of the instantiating macros; see @ref{Configuration
2924 Actions}.  Make @code{AC_OUTPUT} create the file(s) in the
2925 blank-or-newline-separated list @var{header} containing C preprocessor
2926 @code{#define} statements, and replace @samp{@@DEFS@@} in generated
2927 files with @option{-DHAVE_CONFIG_H} instead of the value of @code{DEFS}.
2928 The usual name for @var{header} is @file{config.h}.
2930 If @var{header} already exists and its contents are identical to what
2931 @code{AC_OUTPUT} would put in it, it is left alone.  Doing this allows
2932 making some changes in the configuration without needlessly causing
2933 object files that depend on the header file to be recompiled.
2935 Usually the input file is named @file{@var{header}.in}; however, you can
2936 override the input file name by appending to @var{header} a
2937 colon-separated list of input files.  For example, you might need to make
2938 the input file name acceptable to @acronym{DOS} variants:
2940 @example
2941 AC_CONFIG_HEADERS([config.h:config.hin])
2942 @end example
2944 @end defmac
2946 @defmac AH_HEADER
2947 @ahindex{HEADER}
2948 This macro is defined as the name of the first declared config header
2949 and undefined if no config headers have been declared up to this point.
2950 A third-party macro may, for example, require use of a config header
2951 without invoking AC_CONFIG_HEADERS twice, like this:
2953 @example
2954 AC_CONFIG_COMMANDS_PRE(
2955         [m4_ifndef([AH_HEADER], [AC_CONFIG_HEADERS([config.h])])])
2956 @end example
2958 @end defmac
2960 @xref{Configuration Actions}, for more details on @var{header}.
2962 @menu
2963 * Header Templates::            Input for the configuration headers
2964 * autoheader Invocation::       How to create configuration templates
2965 * Autoheader Macros::           How to specify CPP templates
2966 @end menu
2968 @node Header Templates
2969 @subsection Configuration Header Templates
2970 @cindex Configuration Header Template
2971 @cindex Header templates
2972 @cindex @file{config.h.in}
2974 Your distribution should contain a template file that looks as you want
2975 the final header file to look, including comments, with @code{#undef}
2976 statements which are used as hooks.  For example, suppose your
2977 @file{configure.ac} makes these calls:
2979 @example
2980 AC_CONFIG_HEADERS([conf.h])
2981 AC_CHECK_HEADERS([unistd.h])
2982 @end example
2984 @noindent
2985 Then you could have code like the following in @file{conf.h.in}.  On
2986 systems that have @file{unistd.h}, @command{configure} defines
2987 @samp{HAVE_UNISTD_H} to 1.  On other systems, the whole line is
2988 commented out (in case the system predefines that symbol).
2990 @example
2991 @group
2992 /* Define as 1 if you have unistd.h.  */
2993 #undef HAVE_UNISTD_H
2994 @end group
2995 @end example
2997 Pay attention that @samp{#undef} is in the first column, and there is
2998 nothing after @samp{HAVE_UNISTD_H}, not even white space.  You can
2999 then decode the configuration header using the preprocessor directives:
3001 @example
3002 @group
3003 #include <conf.h>
3005 #ifdef HAVE_UNISTD_H
3006 # include <unistd.h>
3007 #else
3008 /* We are in trouble.  */
3009 #endif
3010 @end group
3011 @end example
3013 The use of old form templates, with @samp{#define} instead of
3014 @samp{#undef} is strongly discouraged.  Similarly with old templates
3015 with comments on the same line as the @samp{#undef}.  Anyway, putting
3016 comments in preprocessor macros has never been a good idea.
3018 Since it is a tedious task to keep a template header up to date, you may
3019 use @command{autoheader} to generate it, see @ref{autoheader Invocation}.
3022 @node autoheader Invocation
3023 @subsection Using @command{autoheader} to Create @file{config.h.in}
3024 @cindex @command{autoheader}
3026 The @command{autoheader} program can create a template file of C
3027 @samp{#define} statements for @command{configure} to use.
3028 It searches for the first invocation of @code{AC_CONFIG_HEADERS} in
3029 @file{configure} sources to determine the name of the template.
3030 (If the first call of @code{AC_CONFIG_HEADERS} specifies more than one
3031 input file name, @command{autoheader} uses the first one.)
3033 It is recommended that only one input file is used.  If you want to append
3034 a boilerplate code, it is preferable to use
3035 @samp{AH_BOTTOM([#include <conf_post.h>])}.
3036 File @file{conf_post.h} is not processed during the configuration then,
3037 which make things clearer.  Analogically, @code{AH_TOP} can be used to
3038 prepend a boilerplate code.
3040 In order to do its job, @command{autoheader} needs you to document all
3041 of the symbols that you might use.  Typically this is done via an
3042 @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED} call whose first argument
3043 is a literal symbol and whose third argument describes the symbol
3044 (@pxref{Defining Symbols}).  Alternatively, you can use
3045 @code{AH_TEMPLATE} (@pxref{Autoheader Macros}), or you can supply a
3046 suitable input file for a subsequent configuration header file.
3047 Symbols defined by Autoconf's builtin tests are already documented properly;
3048 you need to document only those that you
3049 define yourself.
3051 You might wonder why @command{autoheader} is needed: after all, why
3052 would @command{configure} need to ``patch'' a @file{config.h.in} to
3053 produce a @file{config.h} instead of just creating @file{config.h} from
3054 scratch?  Well, when everything rocks, the answer is just that we are
3055 wasting our time maintaining @command{autoheader}: generating
3056 @file{config.h} directly is all that is needed.  When things go wrong,
3057 however, you'll be thankful for the existence of @command{autoheader}.
3059 The fact that the symbols are documented is important in order to
3060 @emph{check} that @file{config.h} makes sense.  The fact that there is a
3061 well-defined list of symbols that should be defined (or not) is
3062 also important for people who are porting packages to environments where
3063 @command{configure} cannot be run: they just have to @emph{fill in the
3064 blanks}.
3066 But let's come back to the point: the invocation of @command{autoheader}@dots{}
3068 If you give @command{autoheader} an argument, it uses that file instead
3069 of @file{configure.ac} and writes the header file to the standard output
3070 instead of to @file{config.h.in}.  If you give @command{autoheader} an
3071 argument of @option{-}, it reads the standard input instead of
3072 @file{configure.ac} and writes the header file to the standard output.
3074 @command{autoheader} accepts the following options:
3076 @table @option
3077 @item --help
3078 @itemx -h
3079 Print a summary of the command line options and exit.
3081 @item --version
3082 @itemx -V
3083 Print the version number of Autoconf and exit.
3085 @item --verbose
3086 @itemx -v
3087 Report processing steps.
3089 @item --debug
3090 @itemx -d
3091 Don't remove the temporary files.
3093 @item --force
3094 @itemx -f
3095 Remake the template file even if newer than its input files.
3097 @item --include=@var{dir}
3098 @itemx -I @var{dir}
3099 Append @var{dir} to the include path.  Multiple invocations accumulate.
3101 @item --prepend-include=@var{dir}
3102 @item -B @var{dir}
3103 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
3105 @item --warnings=@var{category}
3106 @itemx -W @var{category}
3107 @evindex WARNINGS
3108 Report the warnings related to @var{category} (which can actually be a
3109 comma separated list).  Current categories include:
3111 @table @samp
3112 @item obsolete
3113 report the uses of obsolete constructs
3115 @item all
3116 report all the warnings
3118 @item none
3119 report none
3121 @item error
3122 treats warnings as errors
3124 @item no-@var{category}
3125 disable warnings falling into @var{category}
3126 @end table
3128 @end table
3132 @node Autoheader Macros
3133 @subsection Autoheader Macros
3134 @cindex Autoheader macros
3136 @command{autoheader} scans @file{configure.ac} and figures out which C
3137 preprocessor symbols it might define.  It knows how to generate
3138 templates for symbols defined by @code{AC_CHECK_HEADERS},
3139 @code{AC_CHECK_FUNCS} etc., but if you @code{AC_DEFINE} any additional
3140 symbol, you must define a template for it.  If there are missing
3141 templates, @command{autoheader} fails with an error message.
3143 The template for a @var{symbol} is created
3144 by @command{autoheader} from
3145 the @var{description} argument to an @code{AC_DEFINE};
3146 see @ref{Defining Symbols}.
3148 For special needs, you can use the following macros.
3151 @defmac AH_TEMPLATE (@var{key}, @var{description})
3152 @ahindex{TEMPLATE}
3153 Tell @command{autoheader} to generate a template for @var{key}.  This macro
3154 generates standard templates just like @code{AC_DEFINE} when a
3155 @var{description} is given.
3157 For example:
3159 @example
3160 AH_TEMPLATE([CRAY_STACKSEG_END],
3161             [Define to one of _getb67, GETB67, getb67
3162              for Cray-2 and Cray-YMP systems.  This
3163              function is required for alloca.c support
3164              on those systems.])
3165 @end example
3167 @noindent
3168 generates the following template, with the description properly
3169 justified.
3171 @example
3172 /* Define to one of _getb67, GETB67, getb67 for Cray-2 and
3173    Cray-YMP systems.  This function is required for alloca.c
3174    support on those systems.  */
3175 #undef CRAY_STACKSEG_END
3176 @end example
3177 @end defmac
3180 @defmac AH_VERBATIM (@var{key}, @var{template})
3181 @ahindex{VERBATIM}
3182 Tell @command{autoheader} to include the @var{template} as-is in the header
3183 template file.  This @var{template} is associated with the @var{key},
3184 which is used to sort all the different templates and guarantee their
3185 uniqueness.  It should be a symbol that can be defined via @code{AC_DEFINE}.
3186 @end defmac
3189 @defmac AH_TOP (@var{text})
3190 @ahindex{TOP}
3191 Include @var{text} at the top of the header template file.
3192 @end defmac
3195 @defmac AH_BOTTOM (@var{text})
3196 @ahindex{BOTTOM}
3197 Include @var{text} at the bottom of the header template file.
3198 @end defmac
3201 Please note that @var{text} gets included ``verbatim'' to the template file,
3202 not to the resulting config header, so it can easily get mangled when the
3203 template is processed.  There is rarely a need for something other than
3205 @example
3206 AH_BOTTOM([#include <custom.h>])
3207 @end example
3211 @node Configuration Commands
3212 @section Running Arbitrary Configuration Commands
3213 @cindex Configuration commands
3214 @cindex Commands for configuration
3216 You can execute arbitrary commands before, during, and after
3217 @file{config.status} is run.  The three following macros accumulate the
3218 commands to run when they are called multiple times.
3219 @code{AC_CONFIG_COMMANDS} replaces the obsolete macro
3220 @code{AC_OUTPUT_COMMANDS}; see @ref{Obsolete Macros}, for details.
3222 @defmac AC_CONFIG_COMMANDS (@var{tag}@dots{}, @ovar{cmds}, @ovar{init-cmds})
3223 @acindex{CONFIG_COMMANDS}
3224 Specify additional shell commands to run at the end of
3225 @file{config.status}, and shell commands to initialize any variables
3226 from @command{configure}.  Associate the commands with @var{tag}.
3227 Since typically the @var{cmds} create a file, @var{tag} should
3228 naturally be the name of that file.  If needed, the directory hosting
3229 @var{tag} is created.  This macro is one of the instantiating macros;
3230 see @ref{Configuration Actions}.
3232 Here is an unrealistic example:
3233 @example
3234 fubar=42
3235 AC_CONFIG_COMMANDS([fubar],
3236                    [echo this is extra $fubar, and so on.],
3237                    [fubar=$fubar])
3238 @end example
3240 Here is a better one:
3241 @example
3242 AC_CONFIG_COMMANDS([timestamp], [date >timestamp])
3243 @end example
3244 @end defmac
3246 The following two macros look similar, but in fact they are not of the same
3247 breed: they are executed directly by @file{configure}, so you cannot use
3248 @file{config.status} to rerun them.
3250 @c Yet it is good to leave them here.  The user sees them together and
3251 @c decides which best fits their needs.
3253 @defmac AC_CONFIG_COMMANDS_PRE (@var{cmds})
3254 @acindex{CONFIG_COMMANDS_PRE}
3255 Execute the @var{cmds} right before creating @file{config.status}.
3257 This macro presents the last opportunity to call @code{AC_SUBST},
3258 @code{AC_DEFINE}, or @code{AC_CONFIG_FOOS} macros.
3259 @end defmac
3261 @defmac AC_CONFIG_COMMANDS_POST (@var{cmds})
3262 @acindex{CONFIG_COMMANDS_POST}
3263 Execute the @var{cmds} right after creating @file{config.status}.
3264 @end defmac
3269 @node Configuration Links
3270 @section Creating Configuration Links
3271 @cindex Configuration links
3272 @cindex Links for configuration
3274 You may find it convenient to create links whose destinations depend upon
3275 results of tests.  One can use @code{AC_CONFIG_COMMANDS} but the
3276 creation of relative symbolic links can be delicate when the package is
3277 built in a directory different from the source directory.
3279 @defmac AC_CONFIG_LINKS (@var{dest}:@var{source}@dots{}, @ovar{cmds}, @ovar{init-cmds})
3280 @acindex{CONFIG_LINKS}
3281 @cindex Links
3282 Make @code{AC_OUTPUT} link each of the existing files @var{source} to
3283 the corresponding link name @var{dest}.  Makes a symbolic link if
3284 possible, otherwise a hard link if possible, otherwise a copy.  The
3285 @var{dest} and @var{source} names should be relative to the top level
3286 source or build directory.  This macro is one of the instantiating
3287 macros; see @ref{Configuration Actions}.
3289 For example, this call:
3291 @example
3292 AC_CONFIG_LINKS([host.h:config/$machine.h
3293                 object.h:config/$obj_format.h])
3294 @end example
3296 @noindent
3297 creates in the current directory @file{host.h} as a link to
3298 @file{@var{srcdir}/config/$machine.h}, and @file{object.h} as a
3299 link to @file{@var{srcdir}/config/$obj_format.h}.
3301 The tempting value @samp{.} for @var{dest} is invalid: it makes it
3302 impossible for @samp{config.status} to guess the links to establish.
3304 One can then run:
3305 @example
3306 ./config.status host.h object.h
3307 @end example
3308 @noindent
3309 to create the links.
3310 @end defmac
3314 @node Subdirectories
3315 @section Configuring Other Packages in Subdirectories
3316 @cindex Configure subdirectories
3317 @cindex Subdirectory configure
3319 In most situations, calling @code{AC_OUTPUT} is sufficient to produce
3320 makefiles in subdirectories.  However, @command{configure} scripts
3321 that control more than one independent package can use
3322 @code{AC_CONFIG_SUBDIRS} to run @command{configure} scripts for other
3323 packages in subdirectories.
3325 @defmac AC_CONFIG_SUBDIRS (@var{dir} @dots{})
3326 @acindex{CONFIG_SUBDIRS}
3327 @ovindex subdirs
3328 Make @code{AC_OUTPUT} run @command{configure} in each subdirectory
3329 @var{dir} in the given blank-or-newline-separated list.  Each @var{dir} should
3330 be a literal, i.e., please do not use:
3332 @example
3333 if test "$package_foo_enabled" = yes; then
3334   $my_subdirs="$my_subdirs foo"
3336 AC_CONFIG_SUBDIRS([$my_subdirs])
3337 @end example
3339 @noindent
3340 because this prevents @samp{./configure --help=recursive} from
3341 displaying the options of the package @code{foo}.  Instead, you should
3342 write:
3344 @example
3345 if test "$package_foo_enabled" = yes; then
3346   AC_CONFIG_SUBDIRS([foo])
3348 @end example
3350 If a given @var{dir} is not found, an error is reported: if the
3351 subdirectory is optional, write:
3353 @example
3354 if test -d "$srcdir/foo"; then
3355   AC_CONFIG_SUBDIRS([foo])
3357 @end example
3359 @c NB: Yes, below we mean configure.in, not configure.ac.
3360 If a given @var{dir} contains @command{configure.gnu}, it is run instead
3361 of @command{configure}.  This is for packages that might use a
3362 non-Autoconf script @command{Configure}, which can't be called through a
3363 wrapper @command{configure} since it would be the same file on
3364 case-insensitive file systems.  Likewise, if a @var{dir} contains
3365 @file{configure.in} but no @command{configure}, the Cygnus
3366 @command{configure} script found by @code{AC_CONFIG_AUX_DIR} is used.
3368 The subdirectory @command{configure} scripts are given the same command
3369 line options that were given to this @command{configure} script, with minor
3370 changes if needed, which include:
3372 @itemize @minus
3373 @item
3374 adjusting a relative name for the cache file;
3376 @item
3377 adjusting a relative name for the source directory;
3379 @item
3380 propagating the current value of @code{$prefix}, including if it was
3381 defaulted, and if the default values of the top level and of the subdirectory
3382 @file{configure} differ.
3383 @end itemize
3385 This macro also sets the output variable @code{subdirs} to the list of
3386 directories @samp{@var{dir} @dots{}}.  Make rules can use
3387 this variable to determine which subdirectories to recurse into.
3389 This macro may be called multiple times.
3390 @end defmac
3392 @node Default Prefix
3393 @section Default Prefix
3394 @cindex Install prefix
3395 @cindex Prefix for install
3397 By default, @command{configure} sets the prefix for files it installs to
3398 @file{/usr/local}.  The user of @command{configure} can select a different
3399 prefix using the @option{--prefix} and @option{--exec-prefix} options.
3400 There are two ways to change the default: when creating
3401 @command{configure}, and when running it.
3403 Some software packages might want to install in a directory other than
3404 @file{/usr/local} by default.  To accomplish that, use the
3405 @code{AC_PREFIX_DEFAULT} macro.
3407 @defmac AC_PREFIX_DEFAULT (@var{prefix})
3408 @acindex{PREFIX_DEFAULT}
3409 Set the default installation prefix to @var{prefix} instead of
3410 @file{/usr/local}.
3411 @end defmac
3413 It may be convenient for users to have @command{configure} guess the
3414 installation prefix from the location of a related program that they
3415 have already installed.  If you wish to do that, you can call
3416 @code{AC_PREFIX_PROGRAM}.
3418 @defmac AC_PREFIX_PROGRAM (@var{program})
3419 @acindex{PREFIX_PROGRAM}
3420 If the user did not specify an installation prefix (using the
3421 @option{--prefix} option), guess a value for it by looking for
3422 @var{program} in @env{PATH}, the way the shell does.  If @var{program}
3423 is found, set the prefix to the parent of the directory containing
3424 @var{program}, else default the prefix as described above
3425 (@file{/usr/local} or @code{AC_PREFIX_DEFAULT}).  For example, if
3426 @var{program} is @code{gcc} and the @env{PATH} contains
3427 @file{/usr/local/gnu/bin/gcc}, set the prefix to @file{/usr/local/gnu}.
3428 @end defmac
3432 @c ======================================================== Existing tests
3434 @node Existing Tests
3435 @chapter Existing Tests
3437 These macros test for particular system features that packages might
3438 need or want to use.  If you need to test for a kind of feature that
3439 none of these macros check for, you can probably do it by calling
3440 primitive test macros with appropriate arguments (@pxref{Writing
3441 Tests}).
3443 These tests print messages telling the user which feature they're
3444 checking for, and what they find.  They cache their results for future
3445 @command{configure} runs (@pxref{Caching Results}).
3447 Some of these macros set output variables.  @xref{Makefile
3448 Substitutions}, for how to get their values.  The phrase ``define
3449 @var{name}'' is used below as a shorthand to mean ``define the C
3450 preprocessor symbol @var{name} to the value 1''.  @xref{Defining
3451 Symbols}, for how to get those symbol definitions into your program.
3453 @menu
3454 * Common Behavior::             Macros' standard schemes
3455 * Alternative Programs::        Selecting between alternative programs
3456 * Files::                       Checking for the existence of files
3457 * Libraries::                   Library archives that might be missing
3458 * Library Functions::           C library functions that might be missing
3459 * Header Files::                Header files that might be missing
3460 * Declarations::                Declarations that may be missing
3461 * Structures::                  Structures or members that might be missing
3462 * Types::                       Types that might be missing
3463 * Compilers and Preprocessors::  Checking for compiling programs
3464 * System Services::             Operating system services
3465 * Posix Variants::              Special kludges for specific Posix variants
3466 * Erlang Libraries::            Checking for the existence of Erlang libraries
3467 @end menu
3469 @node Common Behavior
3470 @section Common Behavior
3471 @cindex Common autoconf behavior
3473 Much effort has been expended to make Autoconf easy to learn.  The most
3474 obvious way to reach this goal is simply to enforce standard interfaces
3475 and behaviors, avoiding exceptions as much as possible.  Because of
3476 history and inertia, unfortunately, there are still too many exceptions
3477 in Autoconf; nevertheless, this section describes some of the common
3478 rules.
3480 @menu
3481 * Standard Symbols::            Symbols defined by the macros
3482 * Default Includes::            Includes used by the generic macros
3483 @end menu
3485 @node Standard Symbols
3486 @subsection Standard Symbols
3487 @cindex Standard symbols
3489 All the generic macros that @code{AC_DEFINE} a symbol as a result of
3490 their test transform their @var{argument} values to a standard alphabet.
3491 First, @var{argument} is converted to upper case and any asterisks
3492 (@samp{*}) are each converted to @samp{P}.  Any remaining characters
3493 that are not alphanumeric are converted to underscores.
3495 For instance,
3497 @example
3498 AC_CHECK_TYPES([struct $Expensive*])
3499 @end example
3501 @noindent
3502 defines the symbol @samp{HAVE_STRUCT__EXPENSIVEP} if the check
3503 succeeds.
3506 @node Default Includes
3507 @subsection Default Includes
3508 @cindex Default includes
3509 @cindex Includes, default
3511 Several tests depend upon a set of header files.  Since these headers
3512 are not universally available, tests actually have to provide a set of
3513 protected includes, such as:
3515 @example
3516 @group
3517 #ifdef TIME_WITH_SYS_TIME
3518 # include <sys/time.h>
3519 # include <time.h>
3520 #else
3521 # ifdef HAVE_SYS_TIME_H
3522 #  include <sys/time.h>
3523 # else
3524 #  include <time.h>
3525 # endif
3526 #endif
3527 @end group
3528 @end example
3530 @noindent
3531 Unless you know exactly what you are doing, you should avoid using
3532 unconditional includes, and check the existence of the headers you
3533 include beforehand (@pxref{Header Files}).
3535 Most generic macros use the following macro to provide the default set
3536 of includes:
3538 @defmac AC_INCLUDES_DEFAULT (@ovar{include-directives})
3539 @acindex{INCLUDES_DEFAULT}
3540 Expand to @var{include-directives} if defined, otherwise to:
3542 @example
3543 @group
3544 #include <stdio.h>
3545 #ifdef HAVE_SYS_TYPES_H
3546 # include <sys/types.h>
3547 #endif
3548 #ifdef HAVE_SYS_STAT_H
3549 # include <sys/stat.h>
3550 #endif
3551 #ifdef STDC_HEADERS
3552 # include <stdlib.h>
3553 # include <stddef.h>
3554 #else
3555 # ifdef HAVE_STDLIB_H
3556 #  include <stdlib.h>
3557 # endif
3558 #endif
3559 #ifdef HAVE_STRING_H
3560 # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
3561 #  include <memory.h>
3562 # endif
3563 # include <string.h>
3564 #endif
3565 #ifdef HAVE_STRINGS_H
3566 # include <strings.h>
3567 #endif
3568 #ifdef HAVE_INTTYPES_H
3569 # include <inttypes.h>
3570 #endif
3571 #ifdef HAVE_STDINT_H
3572 # include <stdint.h>
3573 #endif
3574 #ifdef HAVE_UNISTD_H
3575 # include <unistd.h>
3576 #endif
3577 @end group
3578 @end example
3580 If the default includes are used, then check for the presence of these
3581 headers and their compatibility, i.e., you don't need to run
3582 @code{AC_HEADER_STDC}, nor check for @file{stdlib.h} etc.
3584 These headers are checked for in the same order as they are included.
3585 For instance, on some systems @file{string.h} and @file{strings.h} both
3586 exist, but conflict.  Then @code{HAVE_STRING_H} is defined, not
3587 @code{HAVE_STRINGS_H}.
3588 @end defmac
3590 @node Alternative Programs
3591 @section Alternative Programs
3592 @cindex Programs, checking
3594 These macros check for the presence or behavior of particular programs.
3595 They are used to choose between several alternative programs and to
3596 decide what to do once one has been chosen.  If there is no macro
3597 specifically defined to check for a program you need, and you don't need
3598 to check for any special properties of it, then you can use one of the
3599 general program-check macros.
3601 @menu
3602 * Particular Programs::         Special handling to find certain programs
3603 * Generic Programs::            How to find other programs
3604 @end menu
3606 @node Particular Programs
3607 @subsection Particular Program Checks
3609 These macros check for particular programs---whether they exist, and
3610 in some cases whether they support certain features.
3612 @defmac AC_PROG_AWK
3613 @acindex{PROG_AWK}
3614 @ovindex AWK
3615 Check for @code{gawk}, @code{mawk}, @code{nawk}, and @code{awk}, in that
3616 order, and set output variable @code{AWK} to the first one that is found.
3617 It tries @code{gawk} first because that is reported to be the
3618 best implementation.
3619 @end defmac
3621 @defmac AC_PROG_GREP
3622 @acindex{PROG_GREP}
3623 @ovindex GREP
3624 Look for the best available @code{grep} or @code{ggrep} that accepts the
3625 longest input lines possible, and that supports multiple @option{-e} options.
3626 Set the output variable @code{GREP} to whatever is chosen.
3627 @xref{Limitations of Usual Tools}, for more information about
3628 portability problems with the @command{grep} command family.
3629 @end defmac
3631 @defmac AC_PROG_EGREP
3632 @acindex{PROG_EGREP}
3633 @ovindex EGREP
3634 Check whether @code{$GREP -E} works, or else look for the best available
3635 @code{egrep} or @code{gegrep} that accepts the longest input lines possible.
3636 Set the output variable @code{EGREP} to whatever is chosen.
3637 @end defmac
3639 @defmac AC_PROG_FGREP
3640 @acindex{PROG_FGREP}
3641 @ovindex FGREP
3642 Check whether @code{$GREP -F} works, or else look for the best available
3643 @code{fgrep} or @code{gfgrep} that accepts the longest input lines possible.
3644 Set the output variable @code{FGREP} to whatever is chosen.
3645 @end defmac
3647 @defmac AC_PROG_INSTALL
3648 @acindex{PROG_INSTALL}
3649 @ovindex INSTALL
3650 @ovindex INSTALL_PROGRAM
3651 @ovindex INSTALL_DATA
3652 @ovindex INSTALL_SCRIPT
3653 Set output variable @code{INSTALL} to the name of a @acronym{BSD}-compatible
3654 @command{install} program, if one is found in the current @env{PATH}.
3655 Otherwise, set @code{INSTALL} to @samp{@var{dir}/install-sh -c},
3656 checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its
3657 default directories) to determine @var{dir} (@pxref{Output}).  Also set
3658 the variables @code{INSTALL_PROGRAM} and @code{INSTALL_SCRIPT} to
3659 @samp{$@{INSTALL@}} and @code{INSTALL_DATA} to @samp{$@{INSTALL@} -m 644}.
3661 @samp{@@INSTALL@@} is special, as its value may vary for different
3662 configuration files.
3664 This macro screens out various instances of @command{install} known not to
3665 work.  It prefers to find a C program rather than a shell script, for
3666 speed.  Instead of @file{install-sh}, it can also use @file{install.sh},
3667 but that name is obsolete because some @command{make} programs have a rule
3668 that creates @file{install} from it if there is no makefile.
3670 Autoconf comes with a copy of @file{install-sh} that you can use.  If
3671 you use @code{AC_PROG_INSTALL}, you must include either
3672 @file{install-sh} or @file{install.sh} in your distribution; otherwise
3673 @command{configure} produces an error message saying it can't find
3674 them---even if the system you're on has a good @command{install} program.
3675 This check is a safety measure to prevent you from accidentally leaving
3676 that file out, which would prevent your package from installing on
3677 systems that don't have a @acronym{BSD}-compatible @command{install} program.
3679 If you need to use your own installation program because it has features
3680 not found in standard @command{install} programs, there is no reason to use
3681 @code{AC_PROG_INSTALL}; just put the file name of your program into your
3682 @file{Makefile.in} files.
3683 @end defmac
3685 @defmac AC_PROG_MKDIR_P
3686 @acindex{AC_PROG_MKDIR_P}
3687 @ovindex MKDIR_P
3688 Set output variable @code{MKDIR_P} to a program that ensures that for
3689 each argument, a directory named by this argument exists, creating it
3690 and its parent directories if needed, and without race conditions when
3691 two instances of the program attempt to make the same directory at
3692 nearly the same time.
3694 This macro uses the @samp{mkdir -p} command if possible.  Otherwise, it
3695 falls back on invoking @command{install-sh} with the @option{-d} option,
3696 so your package should
3697 contain @file{install-sh} as described under @code{AC_PROG_INSTALL}.
3698 An @file{install-sh} file that predates Autoconf 2.60 or Automake 1.10
3699 is vulnerable to race conditions, so if you want to support parallel
3700 installs from
3701 different packages into the same directory you need to make sure you
3702 have an up-to-date @file{install-sh}.  In particular, be careful about
3703 using @samp{autoreconf -if} if your Automake predates Automake 1.10.
3705 This macro is related to the @code{AS_MKDIR_P} macro (@pxref{Programming
3706 in M4sh}), but it sets an output variable intended for use in other
3707 files, whereas @code{AS_MKDIR_P} is intended for use in scripts like
3708 @command{configure}.  Also, @code{AS_MKDIR_P} does not accept options,
3709 but @code{MKDIR_P} supports the @option{-m} option, e.g., a makefile
3710 might invoke @code{$(MKDIR_P) -m 0 dir} to create an inaccessible
3711 directory, and conversely a makefile should use @code{$(MKDIR_P) --
3712 $(FOO)} if @var{FOO} might yield a value that begins with @samp{-}.
3713 Finally, @code{AS_MKDIR_P} does not check for race condition
3714 vulnerability, whereas @code{AC_PROG_MKDIR_P} does.
3716 @samp{@@MKDIR_P@@} is special, as its value may vary for different
3717 configuration files.
3718 @end defmac
3720 @defmac AC_PROG_LEX
3721 @acindex{PROG_LEX}
3722 @ovindex LEX
3723 @ovindex LEXLIB
3724 @cvindex YYTEXT_POINTER
3725 @ovindex LEX_OUTPUT_ROOT
3726 If @code{flex} is found, set output variable @code{LEX} to @samp{flex}
3727 and @code{LEXLIB} to @option{-lfl}, if that library is in a standard
3728 place.  Otherwise set @code{LEX} to @samp{lex} and @code{LEXLIB} to
3729 @option{-ll}.
3731 Define @code{YYTEXT_POINTER} if @code{yytext} defaults to @samp{char *} instead
3732 of to @samp{char []}.  Also set output variable @code{LEX_OUTPUT_ROOT} to
3733 the base of the file name that the lexer generates; usually
3734 @file{lex.yy}, but sometimes something else.  These results vary
3735 according to whether @code{lex} or @code{flex} is being used.
3737 You are encouraged to use Flex in your sources, since it is both more
3738 pleasant to use than plain Lex and the C source it produces is portable.
3739 In order to ensure portability, however, you must either provide a
3740 function @code{yywrap} or, if you don't use it (e.g., your scanner has
3741 no @samp{#include}-like feature), simply include a @samp{%noyywrap}
3742 statement in the scanner's source.  Once this done, the scanner is
3743 portable (unless @emph{you} felt free to use nonportable constructs) and
3744 does not depend on any library.  In this case, and in this case only, it
3745 is suggested that you use this Autoconf snippet:
3747 @example
3748 AC_PROG_LEX
3749 if test "$LEX" != flex; then
3750   LEX="$SHELL $missing_dir/missing flex"
3751   AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
3752   AC_SUBST([LEXLIB], [''])
3754 @end example
3756 The shell script @command{missing} can be found in the Automake
3757 distribution.
3759 To ensure backward compatibility, Automake's @code{AM_PROG_LEX} invokes
3760 (indirectly) this macro twice, which causes an annoying but benign
3761 ``@code{AC_PROG_LEX} invoked multiple times'' warning.  Future versions
3762 of Automake will fix this issue; meanwhile, just ignore this message.
3764 As part of running the test, this macro may delete any file in the
3765 configuration directory named @file{lex.yy.c} or @file{lexyy.c}.
3766 @end defmac
3768 @defmac AC_PROG_LN_S
3769 @acindex{PROG_LN_S}
3770 @ovindex LN_S
3771 If @samp{ln -s} works on the current file system (the operating system
3772 and file system support symbolic links), set the output variable
3773 @code{LN_S} to @samp{ln -s}; otherwise, if @samp{ln} works, set
3774 @code{LN_S} to @samp{ln}, and otherwise set it to @samp{cp -p}.
3776 If you make a link in a directory other than the current directory, its
3777 meaning depends on whether @samp{ln} or @samp{ln -s} is used.  To safely
3778 create links using @samp{$(LN_S)}, either find out which form is used
3779 and adjust the arguments, or always invoke @code{ln} in the directory
3780 where the link is to be created.
3782 In other words, it does not work to do:
3783 @example
3784 $(LN_S) foo /x/bar
3785 @end example
3787 Instead, do:
3789 @example
3790 (cd /x && $(LN_S) foo bar)
3791 @end example
3792 @end defmac
3794 @defmac AC_PROG_RANLIB
3795 @acindex{PROG_RANLIB}
3796 @ovindex RANLIB
3797 Set output variable @code{RANLIB} to @samp{ranlib} if @code{ranlib}
3798 is found, and otherwise to @samp{:} (do nothing).
3799 @end defmac
3801 @defmac AC_PROG_SED
3802 @acindex{PROG_SED}
3803 @ovindex SED
3804 Set output variable @code{SED} to a Sed implementation that conforms to
3805 Posix and does not have arbitrary length limits.  Report an error if no
3806 acceptable Sed is found.  @xref{Limitations of Usual Tools}, for more
3807 information about portability problems with Sed.
3808 @end defmac
3810 @defmac AC_PROG_YACC
3811 @acindex{PROG_YACC}
3812 @ovindex YACC
3813 If @code{bison} is found, set output variable @code{YACC} to @samp{bison
3814 -y}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
3815 @samp{byacc}.  Otherwise set @code{YACC} to @samp{yacc}.
3816 @end defmac
3818 @node Generic Programs
3819 @subsection Generic Program and File Checks
3821 These macros are used to find programs not covered by the ``particular''
3822 test macros.  If you need to check the behavior of a program as well as
3823 find out whether it is present, you have to write your own test for it
3824 (@pxref{Writing Tests}).  By default, these macros use the environment
3825 variable @env{PATH}.  If you need to check for a program that might not
3826 be in the user's @env{PATH}, you can pass a modified path to use
3827 instead, like this:
3829 @example
3830 AC_PATH_PROG([INETD], [inetd], [/usr/libexec/inetd],
3831              [$PATH:/usr/libexec:/usr/sbin:/usr/etc:/etc])
3832 @end example
3834 You are strongly encouraged to declare the @var{variable} passed to
3835 @code{AC_CHECK_PROG} etc.@: as precious, @xref{Setting Output Variables},
3836 @code{AC_ARG_VAR}, for more details.
3838 @defmac AC_CHECK_PROG (@var{variable}, @var{prog-to-check-for}, @var{value-if-found}, @ovar{value-if-not-found}, @ovar{path},  @ovar{reject})
3839 @acindex{CHECK_PROG}
3840 Check whether program @var{prog-to-check-for} exists in @env{PATH}.  If
3841 it is found, set @var{variable} to @var{value-if-found}, otherwise to
3842 @var{value-if-not-found}, if given.  Always pass over @var{reject} (an
3843 absolute file name) even if it is the first found in the search path; in
3844 that case, set @var{variable} using the absolute file name of the
3845 @var{prog-to-check-for} found that is not @var{reject}.  If
3846 @var{variable} was already set, do nothing.  Calls @code{AC_SUBST} for
3847 @var{variable}.
3848 @end defmac
3850 @defmac AC_CHECK_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3851 @acindex{CHECK_PROGS}
3852 Check for each program in the blank-separated list
3853 @var{progs-to-check-for} existing in the @env{PATH}.  If one is found, set
3854 @var{variable} to the name of that program.  Otherwise, continue
3855 checking the next program in the list.  If none of the programs in the
3856 list are found, set @var{variable} to @var{value-if-not-found}; if
3857 @var{value-if-not-found} is not specified, the value of @var{variable}
3858 is not changed.  Calls @code{AC_SUBST} for @var{variable}.
3859 @end defmac
3861 @defmac AC_CHECK_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3862 @acindex{CHECK_TARGET_TOOL}
3863 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
3864 with a prefix of the target type as determined by
3865 @code{AC_CANONICAL_TARGET}, followed by a dash (@pxref{Canonicalizing}).
3866 If the tool cannot be found with a prefix, and if the build and target
3867 types are equal, then it is also searched for without a prefix.
3869 As noted in @ref{Specifying Names, , Specifying the system type}, the
3870 target is rarely specified, because most of the time it is the same
3871 as the host: it is the type of system for which any compiler tool in
3872 the package produces code.  What this macro looks for is,
3873 for example, @emph{a tool @r{(assembler, linker, etc.)}@: that the
3874 compiler driver @r{(@command{gcc} for the @acronym{GNU} C Compiler)}
3875 uses to produce objects, archives or executables}.
3876 @end defmac
3878 @defmac AC_CHECK_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3879 @acindex{CHECK_TOOL}
3880 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
3881 with a prefix of the host type as determined by
3882 @code{AC_CANONICAL_HOST}, followed by a dash (@pxref{Canonicalizing}).
3883 For example, if the user runs @samp{configure --host=i386-gnu}, then
3884 this call:
3885 @example
3886 AC_CHECK_TOOL([RANLIB], [ranlib], [:])
3887 @end example
3888 @noindent
3889 sets @code{RANLIB} to @file{i386-gnu-ranlib} if that program exists in
3890 @env{PATH}, or otherwise to @samp{ranlib} if that program exists in
3891 @env{PATH}, or to @samp{:} if neither program exists.
3893 In the future, when cross-compiling this macro will @emph{only}
3894 accept program names that are prefixed with the host type.
3895 For more information, see @ref{Specifying Names, , Specifying the
3896 system type}.
3897 @end defmac
3899 @defmac AC_CHECK_TARGET_TOOLS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3900 @acindex{CHECK_TARGET_TOOLS}
3901 Like @code{AC_CHECK_TARGET_TOOL}, each of the tools in the list
3902 @var{progs-to-check-for} are checked with a prefix of the target type as
3903 determined by @code{AC_CANONICAL_TARGET}, followed by a dash
3904 (@pxref{Canonicalizing}).  If none of the tools can be found with a
3905 prefix, and if the build and target types are equal, then the first one
3906 without a prefix is used.  If a tool is found, set @var{variable} to
3907 the name of that program.  If none of the tools in the list are found,
3908 set @var{variable} to @var{value-if-not-found}; if @var{value-if-not-found}
3909 is not specified, the value of @var{variable} is not changed.  Calls
3910 @code{AC_SUBST} for @var{variable}.
3911 @end defmac
3913 @defmac AC_CHECK_TOOLS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3914 @acindex{CHECK_TOOLS}
3915 Like @code{AC_CHECK_TOOL}, each of the tools in the list
3916 @var{progs-to-check-for} are checked with a prefix of the host type as
3917 determined by @code{AC_CANONICAL_HOST}, followed by a dash
3918 (@pxref{Canonicalizing}).  If none of the tools can be found with a
3919 prefix, then the first one without a prefix is used.  If a tool is found,
3920 set @var{variable} to the name of that program.  If none of the tools in
3921 the list are found, set @var{variable} to @var{value-if-not-found}; if
3922 @var{value-if-not-found} is not specified, the value of @var{variable}
3923 is not changed.  Calls @code{AC_SUBST} for @var{variable}.
3925 In the future, when cross-compiling this macro will @emph{not}
3926 accept program names that are not prefixed with the host type.
3927 @end defmac
3929 @defmac AC_PATH_PROG (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3930 @acindex{PATH_PROG}
3931 Like @code{AC_CHECK_PROG}, but set @var{variable} to the absolute
3932 name of @var{prog-to-check-for} if found.
3933 @end defmac
3935 @defmac AC_PATH_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3936 @acindex{PATH_PROGS}
3937 Like @code{AC_CHECK_PROGS}, but if any of @var{progs-to-check-for}
3938 are found, set @var{variable} to the absolute name of the program
3939 found.
3940 @end defmac
3942 @defmac AC_PATH_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3943 @acindex{PATH_TARGET_TOOL}
3944 Like @code{AC_CHECK_TARGET_TOOL}, but set @var{variable} to the absolute
3945 name of the program if it is found.
3946 @end defmac
3948 @defmac AC_PATH_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3949 @acindex{PATH_TOOL}
3950 Like @code{AC_CHECK_TOOL}, but set @var{variable} to the absolute
3951 name of the program if it is found.
3953 In the future, when cross-compiling this macro will @emph{not}
3954 accept program names that are not prefixed with the host type.
3955 @end defmac
3958 @node Files
3959 @section Files
3960 @cindex File, checking
3962 You might also need to check for the existence of files.  Before using
3963 these macros, ask yourself whether a runtime test might not be a better
3964 solution.  Be aware that, like most Autoconf macros, they test a feature
3965 of the host machine, and therefore, they die when cross-compiling.
3967 @defmac AC_CHECK_FILE (@var{file}, @ovar{action-if-found}, @ovar{action-if-not-found})
3968 @acindex{CHECK_FILE}
3969 Check whether file @var{file} exists on the native system.  If it is
3970 found, execute @var{action-if-found}, otherwise do
3971 @var{action-if-not-found}, if given.
3972 @end defmac
3974 @defmac AC_CHECK_FILES (@var{files}, @ovar{action-if-found}, @ovar{action-if-not-found})
3975 @acindex{CHECK_FILES}
3976 Executes @code{AC_CHECK_FILE} once for each file listed in @var{files}.
3977 Additionally, defines @samp{HAVE_@var{file}} (@pxref{Standard Symbols})
3978 for each file found.
3979 @end defmac
3982 @node Libraries
3983 @section Library Files
3984 @cindex Library, checking
3986 The following macros check for the presence of certain C, C++, or Fortran
3987 library archive files.
3989 @defmac AC_CHECK_LIB (@var{library}, @var{function}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
3990 @acindex{CHECK_LIB}
3991 Test whether the library @var{library} is available by trying to link
3992 a test program that calls function @var{function} with the library.
3993 @var{function} should be a function provided by the library.
3994 Use the base
3995 name of the library; e.g., to check for @option{-lmp}, use @samp{mp} as
3996 the @var{library} argument.
3998 @var{action-if-found} is a list of shell commands to run if the link
3999 with the library succeeds; @var{action-if-not-found} is a list of shell
4000 commands to run if the link fails.  If @var{action-if-found} is not
4001 specified, the default action prepends @option{-l@var{library}} to
4002 @code{LIBS} and defines @samp{HAVE_LIB@var{library}} (in all
4003 capitals).  This macro is intended to support building @code{LIBS} in
4004 a right-to-left (least-dependent to most-dependent) fashion such that
4005 library dependencies are satisfied as a natural side effect of
4006 consecutive tests.  Linkers are sensitive to library ordering
4007 so the order in which @code{LIBS} is generated is important to reliable
4008 detection of libraries.
4010 If linking with @var{library} results in unresolved symbols that would
4011 be resolved by linking with additional libraries, give those libraries
4012 as the @var{other-libraries} argument, separated by spaces:
4013 e.g., @option{-lXt -lX11}.  Otherwise, this macro fails to detect
4014 that @var{library} is present, because linking the test program
4015 always fails with unresolved symbols.  The @var{other-libraries} argument
4016 should be limited to cases where it is desirable to test for one library
4017 in the presence of another that is not already in @code{LIBS}.
4019 @code{AC_CHECK_LIB} requires some care in usage, and should be avoided
4020 in some common cases.  Many standard functions like @code{gethostbyname}
4021 appear the standard C library on some hosts, and in special libraries
4022 like @code{nsl} on other hosts.  On some hosts the special libraries
4023 contain variant implementations that you may not want to use.  These
4024 days it is normally better to use @code{AC_SEARCH_LIBS([gethostbyname],
4025 [nsl])} instead of @code{AC_CHECK_LIB([nsl], [gethostbyname])}.
4026 @end defmac
4029 @defmac AC_SEARCH_LIBS (@var{function}, @var{search-libs}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
4030 @acindex{SEARCH_LIBS}
4031 Search for a library defining @var{function} if it's not already
4032 available.  This equates to calling
4033 @samp{AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])])} first with
4034 no libraries, then for each library listed in @var{search-libs}.
4036 Add @option{-l@var{library}} to @code{LIBS} for the first library found
4037 to contain @var{function}, and run @var{action-if-found}.  If the
4038 function is not found, run @var{action-if-not-found}.
4040 If linking with @var{library} results in unresolved symbols that would
4041 be resolved by linking with additional libraries, give those libraries
4042 as the @var{other-libraries} argument, separated by spaces:
4043 e.g., @option{-lXt -lX11}.  Otherwise, this macro fails to detect
4044 that @var{function} is present, because linking the test program
4045 always fails with unresolved symbols.
4046 @end defmac
4050 @node Library Functions
4051 @section Library Functions
4053 The following macros check for particular C library functions.
4054 If there is no macro specifically defined to check for a function you need,
4055 and you don't need to check for any special properties of
4056 it, then you can use one of the general function-check macros.
4058 @menu
4059 * Function Portability::        Pitfalls with usual functions
4060 * Particular Functions::        Special handling to find certain functions
4061 * Generic Functions::           How to find other functions
4062 @end menu
4064 @node Function Portability
4065 @subsection Portability of C Functions
4066 @cindex Portability of C functions
4067 @cindex C function portability
4069 Most usual functions can either be missing, or be buggy, or be limited
4070 on some architectures.  This section tries to make an inventory of these
4071 portability issues.  By definition, this list always requires
4072 additions.  Please help us keeping it as complete as possible.
4074 @table @asis
4075 @item @code{exit}
4076 @c @fuindex exit
4077 @prindex @code{exit}
4078 On ancient hosts, @code{exit} returned @code{int}.
4079 This is because @code{exit} predates @code{void}, and there was a long
4080 tradition of it returning @code{int}.
4082 On current hosts, the problem more likely is that @code{exit} is not
4083 declared, due to C++ problems of some sort or another.  For this reason
4084 we suggest that test programs not invoke @code{exit}, but return from
4085 @code{main} instead.
4087 @item @code{free}
4088 @c @fuindex free
4089 @prindex @code{free}
4090 The C standard says a call @code{free (NULL)} does nothing, but
4091 some old systems don't support this (e.g., NextStep).
4093 @item @code{isinf}
4094 @itemx @code{isnan}
4095 @c @fuindex isinf
4096 @c @fuindex isnan
4097 @prindex @code{isinf}
4098 @prindex @code{isnan}
4099 The C99 standard says that @code{isinf} and @code{isnan} are
4100 macros.  On some systems just macros are available
4101 (e.g., @acronym{HP-UX} and Solaris 10), on
4102 some systems both macros and functions (e.g., glibc 2.3.2), and on some
4103 systems only functions (e.g., IRIX 6 and Solaris 9).  In some cases
4104 these functions are declared in nonstandard headers like
4105 @code{<sunmath.h>} and defined in non-default libraries like
4106 @option{-lm} or @option{-lsunmath}.
4108 The C99 @code{isinf} and @code{isnan} macros work correctly with
4109 @code{long double} arguments, but pre-C99 systems that use functions
4110 typically assume @code{double} arguments.  On such a system,
4111 @code{isinf} incorrectly returns true for a finite @code{long double}
4112 argument that is outside the range of @code{double}.
4114 To work around this porting mess, you can use code like the following.
4116 @smallexample
4117 #include <math.h>
4119 #ifndef isnan
4120 # define isnan(x) \
4121     (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
4122      : sizeof (x) == sizeof (double) ? isnan_d (x) \
4123      : isnan_f (x))
4124 static inline int isnan_f  (float       x) @{ return x != x; @}
4125 static inline int isnan_d  (double      x) @{ return x != x; @}
4126 static inline int isnan_ld (long double x) @{ return x != x; @}
4127 #endif
4129 #ifndef isinf
4130 # define isinf(x) \
4131     (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
4132      : sizeof (x) == sizeof (double) ? isinf_d (x) \
4133      : isinf_f (x))
4134 static inline int isinf_f  (float       x) @{ return isnan (x - x); @}
4135 static inline int isinf_d  (double      x) @{ return isnan (x - x); @}
4136 static inline int isinf_ld (long double x) @{ return isnan (x - x); @}
4137 #endif
4138 @end smallexample
4140 Use @code{AC_C_INLINE} (@pxref{C Compiler}) so that this code works on
4141 compilers that lack the @code{inline} keyword.  Some optimizing
4142 compilers mishandle these definitions, but systems with that bug
4143 typically have missing or broken @code{isnan} functions anyway, so it's
4144 probably not worth worrying about.
4146 @item @code{malloc}
4147 @c @fuindex malloc
4148 @prindex @code{malloc}
4149 The C standard says a call @code{malloc (0)} is implementation
4150 dependent.  It can return either @code{NULL} or a new non-null pointer.
4151 The latter is more common (e.g., the @acronym{GNU} C Library) but is by
4152 no means universal.  @code{AC_FUNC_MALLOC}
4153 can be used to insist on non-@code{NULL} (@pxref{Particular Functions}).
4155 @item @code{putenv}
4156 @c @fuindex putenv
4157 @prindex @code{putenv}
4158 Posix prefers @code{setenv} to @code{putenv}; among other things,
4159 @code{putenv} is not required of all Posix implementations, but
4160 @code{setenv} is.
4162 Posix specifies that @code{putenv} puts the given string directly in
4163 @code{environ}, but some systems make a copy of it instead (e.g.,
4164 glibc 2.0, or @acronym{BSD}).  And when a copy is made, @code{unsetenv} might
4165 not free it, causing a memory leak (e.g., Free@acronym{BSD} 4).
4167 On some systems @code{putenv ("FOO")} removes @samp{FOO} from the
4168 environment, but this is not standard usage and it dumps core
4169 on some systems (e.g., AIX).
4171 On MinGW, a call @code{putenv ("FOO=")} removes @samp{FOO} from the
4172 environment, rather than inserting it with an empty value.
4174 @item @code{realloc}
4175 @c @fuindex realloc
4176 @prindex @code{realloc}
4177 The C standard says a call @code{realloc (NULL, size)} is equivalent
4178 to @code{malloc (size)}, but some old systems don't support this (e.g.,
4179 NextStep).
4181 @item @code{signal} handler
4182 @c @fuindex signal
4183 @prindex @code{signal}
4184 Normally @code{signal} takes a handler function with a return type of
4185 @code{void}, but some old systems required @code{int} instead.  Any
4186 actual @code{int} value returned is not used; this is only a
4187 difference in the function prototype demanded.
4189 All systems we know of in current use return @code{void}.  The
4190 @code{int} was to support K&R C, where of course @code{void} is not
4191 available.  @code{AC_TYPE_SIGNAL} (@pxref{Particular Types}) can be
4192 used to establish the correct type in all cases.
4194 @item @code{snprintf}
4195 @c @fuindex snprintf
4196 @prindex @code{snprintf}
4197 @c @fuindex vsnprintf
4198 @prindex @code{vsnprintf}
4199 The C99 standard says that if the output array isn't big enough
4200 and if no other errors occur, @code{snprintf} and @code{vsnprintf}
4201 truncate the output and return the number of bytes that ought to have
4202 been produced.  Some older systems return the truncated length (e.g.,
4203 @acronym{GNU} C Library 2.0.x or @sc{irix} 6.5), some a negative value
4204 (e.g., earlier @acronym{GNU} C Library versions), and some the buffer
4205 length without truncation (e.g., 32-bit Solaris 7).  Also, some buggy
4206 older systems ignore the length and overrun the buffer (e.g., 64-bit
4207 Solaris 7).
4209 @item @code{sprintf}
4210 @c @fuindex sprintf
4211 @prindex @code{sprintf}
4212 @c @fuindex vsprintf
4213 @prindex @code{vsprintf}
4214 The C standard says @code{sprintf} and @code{vsprintf} return the
4215 number of bytes written.  On some ancient systems (SunOS 4 for
4216 instance) they return the buffer pointer instead, but these no
4217 longer need to be worried about.
4219 @item @code{sscanf}
4220 @c @fuindex sscanf
4221 @prindex @code{sscanf}
4222 On various old systems, e.g., @acronym{HP-UX} 9, @code{sscanf} requires that its
4223 input string be writable (though it doesn't actually change it).  This
4224 can be a problem when using @command{gcc} since it normally puts
4225 constant strings in read-only memory (@pxref{Incompatibilities,
4226 Incompatibilities of @acronym{GCC}, , gcc, Using and
4227 Porting the @acronym{GNU} Compiler Collection}).  Apparently in some cases even
4228 having format strings read-only can be a problem.
4230 @item @code{strerror_r}
4231 @c @fuindex strerror_r
4232 @prindex @code{strerror_r}
4233 Posix specifies that @code{strerror_r} returns an @code{int}, but many
4234 systems (e.g., @acronym{GNU} C Library version 2.2.4) provide a
4235 different version returning a @code{char *}.  @code{AC_FUNC_STRERROR_R}
4236 can detect which is in use (@pxref{Particular Functions}).
4238 @item @code{strnlen}
4239 @c @fuindex strnlen
4240 @prindex @code{strnlen}
4241 @acronym{AIX} 4.3 provides a broken version which produces the
4242 following results:
4244 @example
4245 strnlen ("foobar", 0) = 0
4246 strnlen ("foobar", 1) = 3
4247 strnlen ("foobar", 2) = 2
4248 strnlen ("foobar", 3) = 1
4249 strnlen ("foobar", 4) = 0
4250 strnlen ("foobar", 5) = 6
4251 strnlen ("foobar", 6) = 6
4252 strnlen ("foobar", 7) = 6
4253 strnlen ("foobar", 8) = 6
4254 strnlen ("foobar", 9) = 6
4255 @end example
4257 @item @code{sysconf}
4258 @c @fuindex sysconf
4259 @prindex @code{sysconf}
4260 @code{_SC_PAGESIZE} is standard, but some older systems (e.g., @acronym{HP-UX}
4261 9) have @code{_SC_PAGE_SIZE} instead.  This can be tested with
4262 @code{#ifdef}.
4264 @item @code{unlink}
4265 @c @fuindex unlink
4266 @prindex @code{unlink}
4267 The Posix spec says that @code{unlink} causes the given file to be
4268 removed only after there are no more open file handles for it.  Some
4269 non-Posix hosts have trouble with this requirement, though,
4270 and some @acronym{DOS} variants even corrupt the file system.
4272 @item @code{unsetenv}
4273 @c @fuindex unsetenv
4274 @prindex @code{unsetenv}
4275 On MinGW, @code{unsetenv} is not available, but a variable @samp{FOO}
4276 can be removed with a call @code{putenv ("FOO=")}, as described under
4277 @code{putenv} above.
4279 @item @code{va_copy}
4280 @c @fuindex va_copy
4281 @prindex @code{va_copy}
4282 The C99 standard provides @code{va_copy} for copying
4283 @code{va_list} variables.  It may be available in older environments
4284 too, though possibly as @code{__va_copy} (e.g., @command{gcc} in strict
4285 pre-C99 mode).  These can be tested with @code{#ifdef}.  A fallback to
4286 @code{memcpy (&dst, &src, sizeof (va_list))} gives maximum
4287 portability.
4289 @item @code{va_list}
4290 @c @fuindex va_list
4291 @prindex @code{va_list}
4292 @code{va_list} is not necessarily just a pointer.  It can be a
4293 @code{struct} (e.g., @command{gcc} on Alpha), which means @code{NULL} is
4294 not portable.  Or it can be an array (e.g., @command{gcc} in some
4295 PowerPC configurations), which means as a function parameter it can be
4296 effectively call-by-reference and library routines might modify the
4297 value back in the caller (e.g., @code{vsnprintf} in the @acronym{GNU} C Library
4298 2.1).
4300 @item Signed @code{>>}
4301 Normally the C @code{>>} right shift of a signed type replicates the
4302 high bit, giving a so-called ``arithmetic'' shift.  But care should be
4303 taken since Standard C doesn't require that behavior.  On those
4304 few processors without a native arithmetic shift (for instance Cray
4305 vector systems) zero bits may be shifted in, the same as a shift of an
4306 unsigned type.
4308 @item Integer @code{/}
4309 C divides signed integers by truncating their quotient toward zero,
4310 yielding the same result as Fortran.  However, before C99 the standard
4311 allowed C implementations to take the floor or ceiling of the quotient
4312 in some cases.  Hardly any implementations took advantage of this
4313 freedom, though, and it's probably not worth worrying about this issue
4314 nowadays.
4315 @end table
4318 @node Particular Functions
4319 @subsection Particular Function Checks
4320 @cindex Function, checking
4322 These macros check for particular C functions---whether they exist, and
4323 in some cases how they respond when given certain arguments.
4325 @defmac AC_FUNC_ALLOCA
4326 @acindex{FUNC_ALLOCA}
4327 @cvindex C_ALLOCA
4328 @cvindex HAVE_ALLOCA_H
4329 @ovindex ALLOCA
4330 @c @fuindex alloca
4331 @prindex @code{alloca}
4332 @hdrindex{alloca.h}
4333 Check how to get @code{alloca}.  Tries to get a builtin version by
4334 checking for @file{alloca.h} or the predefined C preprocessor macros
4335 @code{__GNUC__} and @code{_AIX}.  If this macro finds @file{alloca.h},
4336 it defines @code{HAVE_ALLOCA_H}.
4338 If those attempts fail, it looks for the function in the standard C
4339 library.  If any of those methods succeed, it defines
4340 @code{HAVE_ALLOCA}.  Otherwise, it sets the output variable
4341 @code{ALLOCA} to @samp{$@{LIBOBJDIR@}alloca.o} and defines
4342 @code{C_ALLOCA} (so programs can periodically call @samp{alloca (0)} to
4343 garbage collect).  This variable is separate from @code{LIBOBJS} so
4344 multiple programs can share the value of @code{ALLOCA} without needing
4345 to create an actual library, in case only some of them use the code in
4346 @code{LIBOBJS}.  The @samp{$@{LIBOBJDIR@}} prefix serves the same
4347 purpose as in @code{LIBOBJS} (@pxref{AC_LIBOBJ vs LIBOBJS}).
4349 This macro does not try to get @code{alloca} from the System V R3
4350 @file{libPW} or the System V R4 @file{libucb} because those libraries
4351 contain some incompatible functions that cause trouble.  Some versions
4352 do not even contain @code{alloca} or contain a buggy version.  If you
4353 still want to use their @code{alloca}, use @code{ar} to extract
4354 @file{alloca.o} from them instead of compiling @file{alloca.c}.
4356 Source files that use @code{alloca} should start with a piece of code
4357 like the following, to declare it properly.
4359 @example
4360 @group
4361 #ifdef HAVE_ALLOCA_H
4362 # include <alloca.h>
4363 #elif defined __GNUC__
4364 # define alloca __builtin_alloca
4365 #elif defined _AIX
4366 # define alloca __alloca
4367 #elif defined _MSC_VER
4368 # include <malloc.h>
4369 # define alloca _alloca
4370 #else
4371 # include <stddef.h>
4372 # ifdef  __cplusplus
4373 extern "C"
4374 # endif
4375 void *alloca (size_t);
4376 #endif
4377 @end group
4378 @end example
4379 @end defmac
4381 @defmac AC_FUNC_CHOWN
4382 @acindex{FUNC_CHOWN}
4383 @c @fuindex chown
4384 @prindex @code{chown}
4385 If the @code{chown} function is available and works (in particular, it
4386 should accept @option{-1} for @code{uid} and @code{gid}), define
4387 @code{HAVE_CHOWN}.
4388 @end defmac
4391 @defmac AC_FUNC_CLOSEDIR_VOID
4392 @acindex{FUNC_CLOSEDIR_VOID}
4393 @cvindex CLOSEDIR_VOID
4394 @c @fuindex closedir
4395 @prindex @code{closedir}
4396 If the @code{closedir} function does not return a meaningful value,
4397 define @code{CLOSEDIR_VOID}.  Otherwise, callers ought to check its
4398 return value for an error indicator.
4400 Currently this test is implemented by running a test program.  When
4401 cross compiling the pessimistic assumption that @code{closedir} does not
4402 return a meaningful value is made.
4404 This macro is obsolescent, as @code{closedir} returns a meaningful value
4405 on current systems.  New programs need not use this macro.
4406 @end defmac
4408 @defmac AC_FUNC_ERROR_AT_LINE
4409 @acindex{FUNC_ERROR_AT_LINE}
4410 @c @fuindex error_at_line
4411 @prindex @code{error_at_line}
4412 If the @code{error_at_line} function is not found, require an
4413 @code{AC_LIBOBJ} replacement of @samp{error}.
4414 @end defmac
4416 @defmac AC_FUNC_FNMATCH
4417 @acindex{FUNC_FNMATCH}
4418 @c @fuindex fnmatch
4419 @prindex @code{fnmatch}
4420 If the @code{fnmatch} function conforms to Posix, define
4421 @code{HAVE_FNMATCH}.  Detect common implementation bugs, for example,
4422 the bugs in Solaris 2.4.
4424 Unlike the other specific
4425 @code{AC_FUNC} macros, @code{AC_FUNC_FNMATCH} does not replace a
4426 broken/missing @code{fnmatch}.  This is for historical reasons.
4427 See @code{AC_REPLACE_FNMATCH} below.
4429 This macro is obsolescent.  New programs should use Gnulib's
4430 @code{fnmatch-posix} module.  @xref{Gnulib}.
4431 @end defmac
4433 @defmac AC_FUNC_FNMATCH_GNU
4434 @acindex{FUNC_FNMATCH_GNU}
4435 @c @fuindex fnmatch
4436 @prindex @code{fnmatch}
4437 Behave like @code{AC_REPLACE_FNMATCH} (@emph{replace}) but also test
4438 whether @code{fnmatch} supports @acronym{GNU} extensions.  Detect common
4439 implementation bugs, for example, the bugs in the @acronym{GNU} C
4440 Library 2.1.
4442 This macro is obsolescent.  New programs should use Gnulib's
4443 @code{fnmatch-gnu} module.  @xref{Gnulib}.
4444 @end defmac
4446 @defmac AC_FUNC_FORK
4447 @acindex{FUNC_FORK}
4448 @cvindex HAVE_VFORK_H
4449 @cvindex HAVE_WORKING_FORK
4450 @cvindex HAVE_WORKING_VFORK
4451 @cvindex vfork
4452 @c @fuindex fork
4453 @prindex @code{fork}
4454 @c @fuindex vfork
4455 @prindex @code{vfork}
4456 @hdrindex{vfork.h}
4457 This macro checks for the @code{fork} and @code{vfork} functions.  If a
4458 working @code{fork} is found, define @code{HAVE_WORKING_FORK}.  This macro
4459 checks whether @code{fork} is just a stub by trying to run it.
4461 If @file{vfork.h} is found, define @code{HAVE_VFORK_H}.  If a working
4462 @code{vfork} is found, define @code{HAVE_WORKING_VFORK}.  Otherwise,
4463 define @code{vfork} to be @code{fork} for backward compatibility with
4464 previous versions of @command{autoconf}.  This macro checks for several known
4465 errors in implementations of @code{vfork} and considers the system to not
4466 have a working @code{vfork} if it detects any of them.  It is not considered
4467 to be an implementation error if a child's invocation of @code{signal}
4468 modifies the parent's signal handler, since child processes rarely change
4469 their signal handlers.
4471 Since this macro defines @code{vfork} only for backward compatibility with
4472 previous versions of @command{autoconf} you're encouraged to define it
4473 yourself in new code:
4474 @example
4475 @group
4476 #ifndef HAVE_WORKING_VFORK
4477 # define vfork fork
4478 #endif
4479 @end group
4480 @end example
4481 @end defmac
4483 @defmac AC_FUNC_FSEEKO
4484 @acindex{FUNC_FSEEKO}
4485 @cvindex _LARGEFILE_SOURCE
4486 @c @fuindex fseeko
4487 @prindex @code{fseeko}
4488 If the @code{fseeko} function is available, define @code{HAVE_FSEEKO}.
4489 Define @code{_LARGEFILE_SOURCE} if necessary to make the prototype
4490 visible on some systems (e.g., glibc 2.2).  Otherwise linkage problems
4491 may occur when compiling with @code{AC_SYS_LARGEFILE} on
4492 largefile-sensitive systems where @code{off_t} does not default to a
4493 64bit entity.
4494 @end defmac
4496 @defmac AC_FUNC_GETGROUPS
4497 @acindex{FUNC_GETGROUPS}
4498 @ovindex GETGROUPS_LIBS
4499 @c @fuindex getgroups
4500 @prindex @code{getgroups}
4501 If the @code{getgroups} function is available and works (unlike on
4502 Ultrix 4.3, where @samp{getgroups (0, 0)} always fails), define
4503 @code{HAVE_GETGROUPS}.  Set @code{GETGROUPS_LIBS} to any libraries
4504 needed to get that function.  This macro runs @code{AC_TYPE_GETGROUPS}.
4505 @end defmac
4507 @defmac AC_FUNC_GETLOADAVG
4508 @acindex{FUNC_GETLOADAVG}
4509 @cvindex SVR4
4510 @cvindex DGUX
4511 @cvindex UMAX
4512 @cvindex UMAX4_3
4513 @cvindex HAVE_NLIST_H
4514 @cvindex NLIST_NAME_UNION
4515 @cvindex GETLODAVG_PRIVILEGED
4516 @cvindex NEED_SETGID
4517 @cvindex C_GETLOADAVG
4518 @ovindex LIBOBJS
4519 @ovindex NEED_SETGID
4520 @ovindex KMEM_GROUP
4521 @ovindex GETLOADAVG_LIBS
4522 @c @fuindex getloadavg
4523 @prindex @code{getloadavg}
4524 Check how to get the system load averages.  To perform its tests
4525 properly, this macro needs the file @file{getloadavg.c}; therefore, be
4526 sure to set the @code{AC_LIBOBJ} replacement directory properly (see
4527 @ref{Generic Functions}, @code{AC_CONFIG_LIBOBJ_DIR}).
4529 If the system has the @code{getloadavg} function, define
4530 @code{HAVE_GETLOADAVG}, and set @code{GETLOADAVG_LIBS} to any libraries
4531 necessary to get that function.  Also add @code{GETLOADAVG_LIBS} to
4532 @code{LIBS}.  Otherwise, require an @code{AC_LIBOBJ} replacement for
4533 @samp{getloadavg} with source code in @file{@var{dir}/getloadavg.c}, and
4534 possibly define several other C preprocessor macros and output
4535 variables:
4537 @enumerate
4538 @item
4539 Define @code{C_GETLOADAVG}.
4541 @item
4542 Define @code{SVR4}, @code{DGUX}, @code{UMAX}, or @code{UMAX4_3} if on
4543 those systems.
4545 @item
4546 @hdrindex{nlist.h}
4547 If @file{nlist.h} is found, define @code{HAVE_NLIST_H}.
4549 @item
4550 If @samp{struct nlist} has an @samp{n_un.n_name} member, define
4551 @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}.  The obsolete symbol
4552 @code{NLIST_NAME_UNION} is still defined, but do not depend upon it.
4554 @item
4555 Programs may need to be installed set-group-ID (or set-user-ID) for
4556 @code{getloadavg} to work.  In this case, define
4557 @code{GETLOADAVG_PRIVILEGED}, set the output variable @code{NEED_SETGID}
4558 to @samp{true} (and otherwise to @samp{false}), and set
4559 @code{KMEM_GROUP} to the name of the group that should own the installed
4560 program.
4561 @end enumerate
4563 The @code{AC_FUNC_GETLOADVG} macro is obsolescent.  New programs should
4564 use Gnulib's @code{getloadavg} module.  @xref{Gnulib}.
4565 @end defmac
4567 @defmac AC_FUNC_GETMNTENT
4568 @acindex{FUNC_GETMNTENT}
4569 @cvindex HAVE_GETMNTENT
4570 @c @fuindex getmntent
4571 @prindex @code{getmntent}
4572 Check for @code{getmntent} in the standard C library, and then in the
4573 @file{sun}, @file{seq}, and @file{gen} libraries, for @sc{unicos},
4574 @sc{irix} 4, @sc{ptx}, and UnixWare, respectively.  Then, if
4575 @code{getmntent} is available, define @code{HAVE_GETMNTENT}.
4576 @end defmac
4578 @defmac AC_FUNC_GETPGRP
4579 @acindex{FUNC_GETPGRP}
4580 @cvindex GETPGRP_VOID
4581 @c @fuindex getpgid
4582 @c @fuindex getpgrp
4583 @prindex @code{getpgid}
4584 @prindex @code{getpgrp}
4585 Define @code{GETPGRP_VOID} if it is an error to pass 0 to
4586 @code{getpgrp}; this is the Posix behavior.  On older @acronym{BSD}
4587 systems, you must pass 0 to @code{getpgrp}, as it takes an argument and
4588 behaves like Posix's @code{getpgid}.
4590 @example
4591 #ifdef GETPGRP_VOID
4592   pid = getpgrp ();
4593 #else
4594   pid = getpgrp (0);
4595 #endif
4596 @end example
4598 This macro does not check whether
4599 @code{getpgrp} exists at all; if you need to work in that situation,
4600 first call @code{AC_CHECK_FUNC} for @code{getpgrp}.
4602 This macro is obsolescent, as current systems have a @code{getpgrp}
4603 whose signature conforms to Posix.  New programs need not use this macro.
4604 @end defmac
4606 @defmac AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
4607 @acindex{FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK}
4608 @cvindex LSTAT_FOLLOWS_SLASHED_SYMLINK
4609 @c @fuindex lstat
4610 @prindex @code{lstat}
4611 If @file{link} is a symbolic link, then @code{lstat} should treat
4612 @file{link/} the same as @file{link/.}.  However, many older
4613 @code{lstat} implementations incorrectly ignore trailing slashes.
4615 It is safe to assume that if @code{lstat} incorrectly ignores
4616 trailing slashes, then other symbolic-link-aware functions like
4617 @code{unlink} also incorrectly ignore trailing slashes.
4619 If @code{lstat} behaves properly, define
4620 @code{LSTAT_FOLLOWS_SLASHED_SYMLINK}, otherwise require an
4621 @code{AC_LIBOBJ} replacement of @code{lstat}.
4622 @end defmac
4624 @defmac AC_FUNC_MALLOC
4625 @acindex{FUNC_MALLOC}
4626 @cvindex HAVE_MALLOC
4627 @cvindex malloc
4628 @c @fuindex malloc
4629 @prindex @code{malloc}
4630 If the @code{malloc} function is compatible with the @acronym{GNU} C
4631 library @code{malloc} (i.e., @samp{malloc (0)} returns a valid
4632 pointer), define @code{HAVE_MALLOC} to 1.  Otherwise define
4633 @code{HAVE_MALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
4634 @samp{malloc}, and define @code{malloc} to @code{rpl_malloc} so that the
4635 native @code{malloc} is not used in the main project.
4637 Typically, the replacement file @file{malloc.c} should look like (note
4638 the @samp{#undef malloc}):
4640 @verbatim
4641 #ifdef HAVE_CONFIG_H
4642 # include <config.h>
4643 #endif
4644 #undef malloc
4646 #include <sys/types.h>
4648 void *malloc ();
4650 /* Allocate an N-byte block of memory from the heap.
4651    If N is zero, allocate a 1-byte block.  */
4653 void *
4654 rpl_malloc (size_t n)
4656   if (n == 0)
4657     n = 1;
4658   return malloc (n);
4660 @end verbatim
4661 @end defmac
4663 @defmac AC_FUNC_MEMCMP
4664 @acindex{FUNC_MEMCMP}
4665 @ovindex LIBOBJS
4666 @c @fuindex memcmp
4667 @prindex @code{memcmp}
4668 If the @code{memcmp} function is not available, or does not work on
4669 8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16
4670 bytes or more and with at least one buffer not starting on a 4-byte
4671 boundary (such as the one on NeXT x86 OpenStep), require an
4672 @code{AC_LIBOBJ} replacement for @samp{memcmp}.
4674 This macro is obsolescent, as current systems have a working
4675 @code{memcmp}.  New programs need not use this macro.
4676 @end defmac
4678 @defmac AC_FUNC_MBRTOWC
4679 @acindex{FUNC_MBRTOWC}
4680 @cvindex HAVE_MBRTOWC
4681 @c @fuindex mbrtowc
4682 @prindex @code{mbrtowc}
4683 Define @code{HAVE_MBRTOWC} to 1 if the function @code{mbrtowc} and the
4684 type @code{mbstate_t} are properly declared.
4685 @end defmac
4687 @defmac AC_FUNC_MKTIME
4688 @acindex{FUNC_MKTIME}
4689 @ovindex LIBOBJS
4690 @c @fuindex mktime
4691 @prindex @code{mktime}
4692 If the @code{mktime} function is not available, or does not work
4693 correctly, require an @code{AC_LIBOBJ} replacement for @samp{mktime}.
4694 For the purposes of this test, @code{mktime} should conform to the
4695 Posix standard and should be the inverse of
4696 @code{localtime}.
4697 @end defmac
4699 @defmac AC_FUNC_MMAP
4700 @acindex{FUNC_MMAP}
4701 @cvindex HAVE_MMAP
4702 @c @fuindex mmap
4703 @prindex @code{mmap}
4704 If the @code{mmap} function exists and works correctly, define
4705 @code{HAVE_MMAP}.  This checks only private fixed mapping of already-mapped
4706 memory.
4707 @end defmac
4709 @defmac AC_FUNC_OBSTACK
4710 @acindex{FUNC_OBSTACK}
4711 @cvindex HAVE_OBSTACK
4712 @cindex obstack
4713 If the obstacks are found, define @code{HAVE_OBSTACK}, else require an
4714 @code{AC_LIBOBJ} replacement for @samp{obstack}.
4715 @end defmac
4717 @defmac AC_FUNC_REALLOC
4718 @acindex{FUNC_REALLOC}
4719 @cvindex HAVE_REALLOC
4720 @cvindex realloc
4721 @c @fuindex realloc
4722 @prindex @code{realloc}
4723 If the @code{realloc} function is compatible with the @acronym{GNU} C
4724 library @code{realloc} (i.e., @samp{realloc (NULL, 0)} returns a
4725 valid pointer), define @code{HAVE_REALLOC} to 1.  Otherwise define
4726 @code{HAVE_REALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
4727 @samp{realloc}, and define @code{realloc} to @code{rpl_realloc} so that
4728 the native @code{realloc} is not used in the main project.  See
4729 @code{AC_FUNC_MALLOC} for details.
4730 @end defmac
4732 @defmac AC_FUNC_SELECT_ARGTYPES
4733 @acindex{FUNC_SELECT_ARGTYPES}
4734 @cvindex SELECT_TYPE_ARG1
4735 @cvindex SELECT_TYPE_ARG234
4736 @cvindex SELECT_TYPE_ARG5
4737 @c @fuindex select
4738 @prindex @code{select}
4739 Determines the correct type to be passed for each of the
4740 @code{select} function's arguments, and defines those types
4741 in @code{SELECT_TYPE_ARG1}, @code{SELECT_TYPE_ARG234}, and
4742 @code{SELECT_TYPE_ARG5} respectively.  @code{SELECT_TYPE_ARG1} defaults
4743 to @samp{int}, @code{SELECT_TYPE_ARG234} defaults to @samp{int *},
4744 and @code{SELECT_TYPE_ARG5} defaults to @samp{struct timeval *}.
4746 This macro is obsolescent, as current systems have a @code{select} whose
4747 signature conforms to Posix.  New programs need not use this macro.
4748 @end defmac
4750 @defmac AC_FUNC_SETPGRP
4751 @acindex{FUNC_SETPGRP}
4752 @cvindex SETPGRP_VOID
4753 @c @fuindex setpgrp
4754 @prindex @code{setpgrp}
4755 If @code{setpgrp} takes no argument (the Posix version), define
4756 @code{SETPGRP_VOID}.  Otherwise, it is the @acronym{BSD} version, which takes
4757 two process IDs as arguments.  This macro does not check whether
4758 @code{setpgrp} exists at all; if you need to work in that situation,
4759 first call @code{AC_CHECK_FUNC} for @code{setpgrp}.
4761 This macro is obsolescent, as current systems have a @code{setpgrp}
4762 whose signature conforms to Posix.  New programs need not use this macro.
4763 @end defmac
4765 @defmac AC_FUNC_STAT
4766 @defmacx AC_FUNC_LSTAT
4767 @acindex{FUNC_STAT}
4768 @acindex{FUNC_LSTAT}
4769 @cvindex HAVE_STAT_EMPTY_STRING_BUG
4770 @cvindex HAVE_LSTAT_EMPTY_STRING_BUG
4771 @c @fuindex stat
4772 @prindex @code{stat}
4773 @c @fuindex lstat
4774 @prindex @code{lstat}
4775 Determine whether @code{stat} or @code{lstat} have the bug that it
4776 succeeds when given the zero-length file name as argument.  The @code{stat}
4777 and @code{lstat} from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do
4778 this.
4780 If it does, then define @code{HAVE_STAT_EMPTY_STRING_BUG} (or
4781 @code{HAVE_LSTAT_EMPTY_STRING_BUG}) and ask for an @code{AC_LIBOBJ}
4782 replacement of it.
4784 These macros are obsolescent, as no current systems have the bug.
4785 New programs need not use these macros.
4786 @end defmac
4788 @defmac AC_FUNC_STRCOLL
4789 @acindex{FUNC_STRCOLL}
4790 @cvindex HAVE_STRCOLL
4791 @c @fuindex strcoll
4792 @prindex @code{strcoll}
4793 If the @code{strcoll} function exists and works correctly, define
4794 @code{HAVE_STRCOLL}.  This does a bit more than
4795 @samp{AC_CHECK_FUNCS(strcoll)}, because some systems have incorrect
4796 definitions of @code{strcoll} that should not be used.
4797 @end defmac
4799 @defmac AC_FUNC_STRERROR_R
4800 @acindex{FUNC_STRERROR_R}
4801 @cvindex HAVE_STRERROR_R
4802 @cvindex HAVE_DECL_STRERROR_R
4803 @cvindex STRERROR_R_CHAR_P
4804 @c @fuindex strerror_r
4805 @prindex @code{strerror_r}
4806 If @code{strerror_r} is available, define @code{HAVE_STRERROR_R}, and if
4807 it is declared, define @code{HAVE_DECL_STRERROR_R}.  If it returns a
4808 @code{char *} message, define @code{STRERROR_R_CHAR_P}; otherwise it
4809 returns an @code{int} error number.  The Thread-Safe Functions option of
4810 Posix requires @code{strerror_r} to return @code{int}, but
4811 many systems (including, for example, version 2.2.4 of the @acronym{GNU} C
4812 Library) return a @code{char *} value that is not necessarily equal to
4813 the buffer argument.
4814 @end defmac
4816 @defmac AC_FUNC_STRFTIME
4817 @acindex{FUNC_STRFTIME}
4818 @cvindex HAVE_STRFTIME
4819 @c @fuindex strftime
4820 @prindex @code{strftime}
4821 Check for @code{strftime} in the @file{intl} library, for SCO Unix.
4822 Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}.
4824 This macro is obsolescent, as no current systems require the @file{intl}
4825 library for @code{strftime}.  New programs need not use this macro.
4826 @end defmac
4828 @defmac AC_FUNC_STRTOD
4829 @acindex{FUNC_STRTOD}
4830 @ovindex POW_LIB
4831 @c @fuindex strtod
4832 @prindex @code{strtod}
4833 If the @code{strtod} function does not exist or doesn't work correctly,
4834 ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}.  In this case,
4835 because @file{strtod.c} is likely to need @samp{pow}, set the output
4836 variable @code{POW_LIB} to the extra library needed.
4837 @end defmac
4839 @defmac AC_FUNC_STRTOLD
4840 @acindex{FUNC_STRTOLD}
4841 @prindex @code{strtold}
4842 If the @code{strtold} function exists and conforms to C99, define
4843 @code{HAVE_STRTOLD}.
4844 @end defmac
4846 @defmac AC_FUNC_STRNLEN
4847 @acindex{FUNC_STRNLEN}
4848 @cvindex HAVE_STRNLEN
4849 @c @fuindex strnlen
4850 @prindex @code{strnlen}
4851 If the @code{strnlen} function is not available, or is buggy (like the one
4852 from @acronym{AIX} 4.3), require an @code{AC_LIBOBJ} replacement for it.
4853 @end defmac
4855 @defmac AC_FUNC_UTIME_NULL
4856 @acindex{FUNC_UTIME_NULL}
4857 @cvindex HAVE_UTIME_NULL
4858 @c @fuindex utime
4859 @prindex @code{utime}
4860 If @samp{utime (@var{file}, NULL)} sets @var{file}'s timestamp to
4861 the present, define @code{HAVE_UTIME_NULL}.
4863 This macro is obsolescent, as all current systems have a @code{utime}
4864 that behaves this way.  New programs need not use this macro.
4865 @end defmac
4867 @defmac AC_FUNC_VPRINTF
4868 @acindex{FUNC_VPRINTF}
4869 @cvindex HAVE_VPRINTF
4870 @cvindex HAVE_DOPRNT
4871 @c @fuindex vprintf
4872 @prindex @code{vprintf}
4873 If @code{vprintf} is found, define @code{HAVE_VPRINTF}.  Otherwise, if
4874 @code{_doprnt} is found, define @code{HAVE_DOPRNT}.  (If @code{vprintf}
4875 is available, you may assume that @code{vfprintf} and @code{vsprintf}
4876 are also available.)
4878 This macro is obsolescent, as all current systems have @code{vprintf}.
4879 New programs need not use this macro.
4880 @end defmac
4882 @defmac AC_REPLACE_FNMATCH
4883 @acindex{REPLACE_FNMATCH}
4884 @c @fuindex fnmatch
4885 @prindex @code{fnmatch}
4886 @hdrindex{fnmatch.h}
4887 If the @code{fnmatch} function does not conform to Posix (see
4888 @code{AC_FUNC_FNMATCH}), ask for its @code{AC_LIBOBJ} replacement.
4890 The files @file{fnmatch.c}, @file{fnmatch_loop.c}, and @file{fnmatch_.h}
4891 in the @code{AC_LIBOBJ} replacement directory are assumed to contain a
4892 copy of the source code of @acronym{GNU} @code{fnmatch}.  If necessary,
4893 this source code is compiled as an @code{AC_LIBOBJ} replacement, and the
4894 @file{fnmatch_.h} file is linked to @file{fnmatch.h} so that it can be
4895 included in place of the system @code{<fnmatch.h>}.
4897 This macro is obsolescent, as it assumes the use of particular source
4898 files.  New programs should use Gnulib's @code{fnmatch-posix} module,
4899 which provides this macro along with the source files.  @xref{Gnulib}.
4900 @end defmac
4904 @node Generic Functions
4905 @subsection Generic Function Checks
4907 These macros are used to find functions not covered by the ``particular''
4908 test macros.  If the functions might be in libraries other than the
4909 default C library, first call @code{AC_CHECK_LIB} for those libraries.
4910 If you need to check the behavior of a function as well as find out
4911 whether it is present, you have to write your own test for
4912 it (@pxref{Writing Tests}).
4914 @defmac AC_CHECK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
4915 @acindex{CHECK_FUNC}
4916 If C function @var{function} is available, run shell commands
4917 @var{action-if-found}, otherwise @var{action-if-not-found}.  If you just
4918 want to define a symbol if the function is available, consider using
4919 @code{AC_CHECK_FUNCS} instead.  This macro checks for functions with C
4920 linkage even when @code{AC_LANG(C++)} has been called, since C is more
4921 standardized than C++.  (@pxref{Language Choice}, for more information
4922 about selecting the language for checks.)
4923 @end defmac
4925 @defmac AC_CHECK_FUNCS (@var{function}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found})
4926 @acindex{CHECK_FUNCS}
4927 @cvindex HAVE_@var{function}
4928 For each @var{function} enumerated in the blank-or-newline-separated argument
4929 list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
4930 If @var{action-if-found} is given, it is additional shell code to
4931 execute when one of the functions is found.  You can give it a value of
4932 @samp{break} to break out of the loop on the first match.  If
4933 @var{action-if-not-found} is given, it is executed when one of the
4934 functions is not found.
4935 @end defmac
4937 @defmac AC_CHECK_FUNCS_ONCE (@var{function}@dots{})
4938 @acindex{CHECK_FUNCS_ONCE}
4939 @cvindex HAVE_@var{function}
4940 For each @var{function} enumerated in the blank-or-newline-separated argument
4941 list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
4942 This is a once-only variant of @code{AC_CHECK_FUNCS}.  It generates the
4943 checking code at most once, so that @command{configure} is smaller and
4944 faster; but the checks cannot be conditionalized and are always done once,
4945 early during the @command{configure} run.
4946 @end defmac
4948 @sp 1
4950 Autoconf follows a philosophy that was formed over the years by those
4951 who have struggled for portability: isolate the portability issues in
4952 specific files, and then program as if you were in a Posix
4953 environment.  Some functions may be missing or unfixable, and your
4954 package must be ready to replace them.
4956 Suitable replacements for many such problem functions are available from
4957 Gnulib (@pxref{Gnulib}).
4959 @defmac AC_LIBOBJ (@var{function})
4960 @acindex{LIBOBJ}
4961 @ovindex LIBOBJS
4962 Specify that @samp{@var{function}.c} must be included in the executables
4963 to replace a missing or broken implementation of @var{function}.
4965 Technically, it adds @samp{@var{function}.$ac_objext} to the output
4966 variable @code{LIBOBJS} if it is not already in, and calls
4967 @code{AC_LIBSOURCE} for @samp{@var{function}.c}.  You should not
4968 directly change @code{LIBOBJS}, since this is not traceable.
4969 @end defmac
4971 @defmac AC_LIBSOURCE (@var{file})
4972 @acindex{LIBSOURCE}
4973 Specify that @var{file} might be needed to compile the project.  If you
4974 need to know what files might be needed by a @file{configure.ac}, you
4975 should trace @code{AC_LIBSOURCE}.  @var{file} must be a literal.
4977 This macro is called automatically from @code{AC_LIBOBJ}, but you must
4978 call it explicitly if you pass a shell variable to @code{AC_LIBOBJ}.  In
4979 that case, since shell variables cannot be traced statically, you must
4980 pass to @code{AC_LIBSOURCE} any possible files that the shell variable
4981 might cause @code{AC_LIBOBJ} to need.  For example, if you want to pass
4982 a variable @code{$foo_or_bar} to @code{AC_LIBOBJ} that holds either
4983 @code{"foo"} or @code{"bar"}, you should do:
4985 @example
4986 AC_LIBSOURCE([foo.c])
4987 AC_LIBSOURCE([bar.c])
4988 AC_LIBOBJ([$foo_or_bar])
4989 @end example
4991 @noindent
4992 There is usually a way to avoid this, however, and you are encouraged to
4993 simply call @code{AC_LIBOBJ} with literal arguments.
4995 Note that this macro replaces the obsolete @code{AC_LIBOBJ_DECL}, with
4996 slightly different semantics: the old macro took the function name,
4997 e.g., @code{foo}, as its argument rather than the file name.
4998 @end defmac
5000 @defmac AC_LIBSOURCES (@var{files})
5001 @acindex{LIBSOURCES}
5002 Like @code{AC_LIBSOURCE}, but accepts one or more @var{files} in a
5003 comma-separated M4 list.  Thus, the above example might be rewritten:
5005 @example
5006 AC_LIBSOURCES([foo.c, bar.c])
5007 AC_LIBOBJ([$foo_or_bar])
5008 @end example
5009 @end defmac
5011 @defmac AC_CONFIG_LIBOBJ_DIR (@var{directory})
5012 @acindex{CONFIG_LIBOBJ_DIR}
5013 Specify that @code{AC_LIBOBJ} replacement files are to be found in
5014 @var{directory}, a name relative to the top level of the
5015 source tree.  The replacement directory defaults to @file{.}, the top
5016 level directory, and the most typical value is @file{lib}, corresponding
5017 to @samp{AC_CONFIG_LIBOBJ_DIR([lib])}.
5019 @command{configure} might need to know the replacement directory for the
5020 following reasons: (i) some checks use the replacement files, (ii) some
5021 macros bypass broken system headers by installing links to the
5022 replacement headers (iii) when used in conjunction with Automake,
5023 within each makefile, @var{directory} is used as a relative path
5024 from @code{$(top_srcdir)} to each object named in @code{LIBOBJS} and
5025 @code{LTLIBOBJS}, etc.
5026 @end defmac
5028 @sp 1
5030 It is common to merely check for the existence of a function, and ask
5031 for its @code{AC_LIBOBJ} replacement if missing.  The following macro is
5032 a convenient shorthand.
5034 @defmac AC_REPLACE_FUNCS (@var{function}@dots{})
5035 @acindex{REPLACE_FUNCS}
5036 @ovindex LIBOBJS
5037 Like @code{AC_CHECK_FUNCS}, but uses @samp{AC_LIBOBJ(@var{function})} as
5038 @var{action-if-not-found}.  You can declare your replacement function by
5039 enclosing the prototype in @samp{#ifndef HAVE_@var{function}}.  If the
5040 system has the function, it probably declares it in a header file you
5041 should be including, so you shouldn't redeclare it lest your declaration
5042 conflict.
5043 @end defmac
5045 @node Header Files
5046 @section Header Files
5047 @cindex Header, checking
5049 The following macros check for the presence of certain C header files.
5050 If there is no macro specifically defined to check for a header file you need,
5051 and you don't need to check for any special properties of
5052 it, then you can use one of the general header-file check macros.
5054 @menu
5055 * Header Portability::          Collected knowledge on common headers
5056 * Particular Headers::          Special handling to find certain headers
5057 * Generic Headers::             How to find other headers
5058 @end menu
5060 @node Header Portability
5061 @subsection Portability of Headers
5062 @cindex Portability of headers
5063 @cindex Header portability
5065 This section tries to collect knowledge about common headers, and the
5066 problems they cause.  By definition, this list always requires
5067 additions.  Please help us keeping it as complete as possible.
5069 @table @asis
5071 @item @file{limits.h}
5072 C99 says that @file{limits.h} defines @code{LLONG_MIN},
5073 @code{LLONG_MAX}, and @code{ULLONG_MAX}, but many almost-C99
5074 environments (e.g., default @acronym{GCC} 4.0.2 + glibc 2.4) do not
5075 define them.
5077 @item @file{inttypes.h} vs.@: @file{stdint.h}
5078 @hdrindex{inttypes.h}
5079 @hdrindex{stdint.h}
5080 The C99 standard says that @file{inttypes.h} includes
5081 @file{stdint.h}, so there's no need to include @file{stdint.h}
5082 separately in a standard environment.  Some implementations have
5083 @file{inttypes.h} but not @file{stdint.h} (e.g., Solaris 7), but we don't
5084 know of any implementation that has @file{stdint.h} but not
5085 @file{inttypes.h}.
5087 @item @file{linux/irda.h}
5088 @hdrindex{linux/irda.h}
5089 It requires @file{linux/types.h} and @file{sys/socket.h}.
5091 @item @file{linux/random.h}
5092 @hdrindex{linux/random.h}
5093 It requires @file{linux/types.h}.
5095 @item @file{net/if.h}
5096 @hdrindex{net/if.h}
5097 On Darwin, this file requires that @file{sys/socket.h} be included
5098 beforehand.  One should run:
5100 @example
5101 AC_CHECK_HEADERS([sys/socket.h])
5102 AC_CHECK_HEADERS([net/if.h], [], [],
5103 [#include <stdio.h>
5104 #ifdef STDC_HEADERS
5105 # include <stdlib.h>
5106 # include <stddef.h>
5107 #else
5108 # ifdef HAVE_STDLIB_H
5109 #  include <stdlib.h>
5110 # endif
5111 #endif
5112 #ifdef HAVE_SYS_SOCKET_H
5113 # include <sys/socket.h>
5114 #endif
5116 @end example
5118 @item @file{netinet/if_ether.h}
5119 @hdrindex{netinet/if_ether.h}
5120 On Darwin, this file requires that @file{stdio.h} and
5121 @file{sys/socket.h} be included beforehand.  One should run:
5123 @example
5124 AC_CHECK_HEADERS([sys/socket.h])
5125 AC_CHECK_HEADERS([netinet/if_ether.h], [], [],
5126 [#include <stdio.h>
5127 #ifdef STDC_HEADERS
5128 # include <stdlib.h>
5129 # include <stddef.h>
5130 #else
5131 # ifdef HAVE_STDLIB_H
5132 #  include <stdlib.h>
5133 # endif
5134 #endif
5135 #ifdef HAVE_SYS_SOCKET_H
5136 # include <sys/socket.h>
5137 #endif
5139 @end example
5141 @item @file{stdint.h}
5142 See above, item @file{inttypes.h} vs.@: @file{stdint.h}.
5144 @item @file{stdlib.h}
5145 @hdrindex{stdlib.h}
5146 On many systems (e.g., Darwin), @file{stdio.h} is a prerequisite.
5148 @item @file{sys/mount.h}
5149 @hdrindex{sys/mount.h}
5150 On Free@acronym{BSD} 4.8 on ia32 and using gcc version 2.95.4,
5151 @file{sys/params.h} is a prerequisite.
5153 @item @file{sys/ptem.h}
5154 @hdrindex{sys/ptem.h}
5155 On Solaris 8, @file{sys/stream.h} is a prerequisite.
5157 @item @file{sys/socket.h}
5158 @hdrindex{sys/socket.h}
5159 On Darwin, @file{stdlib.h} is a prerequisite.
5161 @item @file{sys/ucred.h}
5162 @hdrindex{sys/ucred.h}
5163 On Tru64 5.1, @file{sys/types.h} is a prerequisite.
5165 @item @file{X11/extensions/scrnsaver.h}
5166 @hdrindex{X11/extensions/scrnsaver.h}
5167 Using XFree86, this header requires @file{X11/Xlib.h}, which is probably
5168 so required that you might not even consider looking for it.
5170 @example
5171 AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], [], [],
5172 [[#include <X11/Xlib.h>
5174 @end example
5175 @end table
5178 @node Particular Headers
5179 @subsection Particular Header Checks
5181 These macros check for particular system header files---whether they
5182 exist, and in some cases whether they declare certain symbols.
5184 @defmac AC_HEADER_ASSERT
5185 @acindex{HEADER_ASSERT}
5186 @cvindex NDEBUG
5187 @hdrindex{assert.h}
5188 Check whether to enable assertions in the style of @file{assert.h}.
5189 Assertions are enabled by default, but the user can override this by
5190 invoking @command{configure} with the @option{--disable-assert} option.
5191 @end defmac
5193 @defmac AC_HEADER_DIRENT
5194 @acindex{HEADER_DIRENT}
5195 @cvindex HAVE_DIRENT_H
5196 @cvindex HAVE_NDIR_H
5197 @cvindex HAVE_SYS_DIR_H
5198 @cvindex HAVE_SYS_NDIR_H
5199 @hdrindex{dirent.h}
5200 @hdrindex{sys/ndir.h}
5201 @hdrindex{sys/dir.h}
5202 @hdrindex{ndir.h}
5203 Check for the following header files.  For the first one that is
5204 found and defines @samp{DIR}, define the listed C preprocessor macro:
5206 @multitable {@file{sys/ndir.h}} {@code{HAVE_SYS_NDIR_H}}
5207 @item @file{dirent.h}   @tab @code{HAVE_DIRENT_H}
5208 @item @file{sys/ndir.h} @tab @code{HAVE_SYS_NDIR_H}
5209 @item @file{sys/dir.h}  @tab @code{HAVE_SYS_DIR_H}
5210 @item @file{ndir.h}     @tab @code{HAVE_NDIR_H}
5211 @end multitable
5213 The directory-library declarations in your source code should look
5214 something like the following:
5216 @example
5217 @group
5218 #include <sys/types.h>
5219 #ifdef HAVE_DIRENT_H
5220 # include <dirent.h>
5221 # define NAMLEN(dirent) strlen ((dirent)->d_name)
5222 #else
5223 # define dirent direct
5224 # define NAMLEN(dirent) ((dirent)->d_namlen)
5225 # ifdef HAVE_SYS_NDIR_H
5226 #  include <sys/ndir.h>
5227 # endif
5228 # ifdef HAVE_SYS_DIR_H
5229 #  include <sys/dir.h>
5230 # endif
5231 # ifdef HAVE_NDIR_H
5232 #  include <ndir.h>
5233 # endif
5234 #endif
5235 @end group
5236 @end example
5238 Using the above declarations, the program would declare variables to be
5239 of type @code{struct dirent}, not @code{struct direct}, and would access
5240 the length of a directory entry name by passing a pointer to a
5241 @code{struct dirent} to the @code{NAMLEN} macro.
5243 This macro also checks for the SCO Xenix @file{dir} and @file{x} libraries.
5245 This macro is obsolescent, as all current systems with directory
5246 libraries have @code{<dirent.h>}.  New programs need not use this macro.
5248 Also see @code{AC_STRUCT_DIRENT_D_INO} and
5249 @code{AC_STRUCT_DIRENT_D_TYPE} (@pxref{Particular Structures}).
5250 @end defmac
5252 @defmac AC_HEADER_MAJOR
5253 @acindex{HEADER_MAJOR}
5254 @cvindex MAJOR_IN_MKDEV
5255 @cvindex MAJOR_IN_SYSMACROS
5256 @hdrindex{sys/mkdev.h}
5257 @hdrindex{sys/sysmacros.h}
5258 If @file{sys/types.h} does not define @code{major}, @code{minor}, and
5259 @code{makedev}, but @file{sys/mkdev.h} does, define
5260 @code{MAJOR_IN_MKDEV}; otherwise, if @file{sys/sysmacros.h} does, define
5261 @code{MAJOR_IN_SYSMACROS}.
5262 @end defmac
5264 @defmac AC_HEADER_RESOLV
5265 @acindex{HEADER_RESOLV}
5266 @cvindex HAVE_RESOLV_H
5267 @hdrindex{resolv.h}
5268 Checks for header @file{resolv.h}, checking for prerequisites first.
5269 To properly use @file{resolv.h}, your code should contain something like
5270 the following:
5272 @verbatim
5273 #ifdef HAVE_SYS_TYPES_H
5274 #  include <sys/types.h>
5275 #endif
5276 #ifdef HAVE_NETINET_IN_H
5277 #  include <netinet/in.h>   /* inet_ functions / structs */
5278 #endif
5279 #ifdef HAVE_ARPA_NAMESER_H
5280 #  include <arpa/nameser.h> /* DNS HEADER struct */
5281 #endif
5282 #ifdef HAVE_NETDB_H
5283 #  include <netdb.h>
5284 #endif
5285 #include <resolv.h>
5286 @end verbatim
5287 @end defmac
5289 @defmac AC_HEADER_STAT
5290 @acindex{HEADER_STAT}
5291 @cvindex STAT_MACROS_BROKEN
5292 @hdrindex{sys/stat.h}
5293 If the macros @code{S_ISDIR}, @code{S_ISREG}, etc.@: defined in
5294 @file{sys/stat.h} do not work properly (returning false positives),
5295 define @code{STAT_MACROS_BROKEN}.  This is the case on Tektronix UTekV,
5296 Amdahl UTS and Motorola System V/88.
5298 This macro is obsolescent, as no current systems have the bug.
5299 New programs need not use this macro.
5300 @end defmac
5302 @defmac AC_HEADER_STDBOOL
5303 @acindex{HEADER_STDBOOL}
5304 @cvindex HAVE_STDBOOL_H
5305 @cvindex HAVE__BOOL
5306 @hdrindex{stdbool.h}
5307 @hdrindex{system.h}
5308 If @file{stdbool.h} exists and conforms to C99, define
5309 @code{HAVE_STDBOOL_H} to 1; if the type @code{_Bool} is defined, define
5310 @code{HAVE__BOOL} to 1.  To fulfill the C99 requirements, your
5311 @file{system.h} could contain the following code:
5313 @verbatim
5314 #ifdef HAVE_STDBOOL_H
5315 # include <stdbool.h>
5316 #else
5317 # ifndef HAVE__BOOL
5318 #  ifdef __cplusplus
5319 typedef bool _Bool;
5320 #  else
5321 #   define _Bool signed char
5322 #  endif
5323 # endif
5324 # define bool _Bool
5325 # define false 0
5326 # define true 1
5327 # define __bool_true_false_are_defined 1
5328 #endif
5329 @end verbatim
5331 Alternatively you can use the @samp{stdbool} package of Gnulib
5332 (@pxref{Gnulib}); it packages the above code into a replacement header
5333 and contains a few other bells and whistles.
5335 @end defmac
5338 @defmac AC_HEADER_STDC
5339 @acindex{HEADER_STDC}
5340 @cvindex STDC_HEADERS
5341 @hdrindex{stdlib.h}
5342 @hdrindex{stdarg.h}
5343 @hdrindex{string.h}
5344 @hdrindex{float.h}
5345 @hdrindex{ctype.h}
5346 Define @code{STDC_HEADERS} if the system has C header files
5347 conforming to @acronym{ANSI} C89 (@acronym{ISO} C90).
5348 Specifically, this macro checks for @file{stdlib.h}, @file{stdarg.h},
5349 @file{string.h}, and @file{float.h}; if the system has those, it
5350 probably has the rest of the C89 header files.  This macro also
5351 checks whether @file{string.h} declares @code{memchr} (and thus
5352 presumably the other @code{mem} functions), whether @file{stdlib.h}
5353 declare @code{free} (and thus presumably @code{malloc} and other related
5354 functions), and whether the @file{ctype.h} macros work on characters
5355 with the high bit set, as the C standard requires.
5357 If you use this macro, your code can refer to @code{STDC_HEADERS} to
5358 determine whether the system has conforming header files (and probably C
5359 library functions).
5361 This macro is obsolescent, as current systems have conforming header
5362 files.  New programs need not use this macro.
5364 @hdrindex{string.h}
5365 @hdrindex{strings.h}
5366 Nowadays @file{string.h} is part of the C standard and declares functions like
5367 @code{strcpy}, and @file{strings.h} is standardized by Posix and declares
5368 @acronym{BSD} functions like @code{bcopy}; but
5369 historically, string functions were a major sticking point in this area.
5370 If you still want to worry about portability to ancient systems without
5371 standard headers, there is so much variation
5372 that it is probably easier to declare the functions you use than to
5373 figure out exactly what the system header files declare.  Some ancient systems
5374 contained a mix of functions from the C standard and from @acronym{BSD};
5375 some were mostly standard but lacked @samp{memmove}; some defined the
5376 @acronym{BSD} functions as macros in @file{string.h} or
5377 @file{strings.h}; some had only the @acronym{BSD} functions but
5378 @file{string.h}; some declared the memory functions in @file{memory.h},
5379 some in @file{string.h}; etc.  It is probably sufficient to check for
5380 one string function and one memory function; if the library had the
5381 standard versions of those then it probably had most of the others.
5382 If you put the following in @file{configure.ac}:
5384 @example
5385 # This example is obsolescent.
5386 # Nowadays you can omit these macro calls.
5387 AC_HEADER_STDC
5388 AC_CHECK_FUNCS([strchr memcpy])
5389 @end example
5391 @noindent
5392 then, in your code, you can use declarations like this:
5394 @example
5395 @group
5396 /* This example is obsolescent.
5397    Nowadays you can just #include <string.h>.  */
5398 #ifdef STDC_HEADERS
5399 # include <string.h>
5400 #else
5401 # ifndef HAVE_STRCHR
5402 #  define strchr index
5403 #  define strrchr rindex
5404 # endif
5405 char *strchr (), *strrchr ();
5406 # ifndef HAVE_MEMCPY
5407 #  define memcpy(d, s, n) bcopy ((s), (d), (n))
5408 #  define memmove(d, s, n) bcopy ((s), (d), (n))
5409 # endif
5410 #endif
5411 @end group
5412 @end example
5414 @noindent
5415 If you use a function like @code{memchr}, @code{memset}, @code{strtok},
5416 or @code{strspn}, which have no @acronym{BSD} equivalent, then macros don't
5417 suffice to port to ancient hosts; you must provide an implementation of
5418 each function.  An easy
5419 way to incorporate your implementations only when needed (since the ones
5420 in system C libraries may be hand optimized) is to, taking @code{memchr}
5421 for example, put it in @file{memchr.c} and use
5422 @samp{AC_REPLACE_FUNCS([memchr])}.
5423 @end defmac
5425 @defmac AC_HEADER_SYS_WAIT
5426 @acindex{HEADER_SYS_WAIT}
5427 @cvindex HAVE_SYS_WAIT_H
5428 @hdrindex{sys/wait.h}
5429 If @file{sys/wait.h} exists and is compatible with Posix, define
5430 @code{HAVE_SYS_WAIT_H}.  Incompatibility can occur if @file{sys/wait.h}
5431 does not exist, or if it uses the old @acronym{BSD} @code{union wait} instead
5432 of @code{int} to store a status value.  If @file{sys/wait.h} is not
5433 Posix compatible, then instead of including it, define the
5434 Posix macros with their usual interpretations.  Here is an
5435 example:
5437 @example
5438 @group
5439 #include <sys/types.h>
5440 #ifdef HAVE_SYS_WAIT_H
5441 # include <sys/wait.h>
5442 #endif
5443 #ifndef WEXITSTATUS
5444 # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
5445 #endif
5446 #ifndef WIFEXITED
5447 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
5448 #endif
5449 @end group
5450 @end example
5452 @noindent
5453 This macro is obsolescent, as current systems are compatible with Posix.
5454 New programs need not use this macro.
5455 @end defmac
5457 @cvindex _POSIX_VERSION
5458 @hdrindex{unistd.h}
5459 @code{_POSIX_VERSION} is defined when @file{unistd.h} is included on
5460 Posix systems.  If there is no @file{unistd.h}, it is definitely
5461 not a Posix system.  However, some non-Posix systems do
5462 have @file{unistd.h}.
5464 The way to check whether the system supports Posix is:
5466 @example
5467 @group
5468 #ifdef HAVE_UNISTD_H
5469 # include <sys/types.h>
5470 # include <unistd.h>
5471 #endif
5473 #ifdef _POSIX_VERSION
5474 /* Code for Posix systems.  */
5475 #endif
5476 @end group
5477 @end example
5479 @defmac AC_HEADER_TIME
5480 @acindex{HEADER_TIME}
5481 @cvindex TIME_WITH_SYS_TIME
5482 @hdrindex{time.h}
5483 @hdrindex{sys/time.h}
5484 If a program may include both @file{time.h} and @file{sys/time.h},
5485 define @code{TIME_WITH_SYS_TIME}.  On some ancient systems,
5486 @file{sys/time.h} included @file{time.h}, but @file{time.h} was not
5487 protected against multiple inclusion, so programs could not explicitly
5488 include both files.  This macro is useful in programs that use, for
5489 example, @code{struct timeval} as well as
5490 @code{struct tm}.  It is best used in conjunction with
5491 @code{HAVE_SYS_TIME_H}, which can be checked for using
5492 @code{AC_CHECK_HEADERS([sys/time.h])}.
5494 @example
5495 @group
5496 #ifdef TIME_WITH_SYS_TIME
5497 # include <sys/time.h>
5498 # include <time.h>
5499 #else
5500 # ifdef HAVE_SYS_TIME_H
5501 #  include <sys/time.h>
5502 # else
5503 #  include <time.h>
5504 # endif
5505 #endif
5506 @end group
5507 @end example
5509 @noindent
5510 This macro is obsolescent, as current systems can include both files
5511 when they exist.  New programs need not use this macro.
5512 @end defmac
5515 @defmac AC_HEADER_TIOCGWINSZ
5516 @acindex{HEADER_TIOCGWINSZ}
5517 @cvindex GWINSZ_IN_SYS_IOCTL
5518 @hdrindex{sys/ioctl.h}
5519 @hdrindex{termios.h}
5520 @c FIXME: I need clarifications from Jim.
5521 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
5522 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
5523 found in @file{<termios.h>}.
5525 Use:
5527 @example
5528 @group
5529 #ifdef HAVE_TERMIOS_H
5530 # include <termios.h>
5531 #endif
5533 #ifdef GWINSZ_IN_SYS_IOCTL
5534 # include <sys/ioctl.h>
5535 #endif
5536 @end group
5537 @end example
5538 @end defmac
5540 @node Generic Headers
5541 @subsection Generic Header Checks
5543 These macros are used to find system header files not covered by the
5544 ``particular'' test macros.  If you need to check the contents of a header
5545 as well as find out whether it is present, you have to write your own
5546 test for it (@pxref{Writing Tests}).
5548 @defmac AC_CHECK_HEADER (@var{header-file}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5549 @acindex{CHECK_HEADER}
5550 If the system header file @var{header-file} is compilable, execute shell
5551 commands @var{action-if-found}, otherwise execute
5552 @var{action-if-not-found}.  If you just want to define a symbol if the
5553 header file is available, consider using @code{AC_CHECK_HEADERS}
5554 instead.
5556 For compatibility issues with older versions of Autoconf, please read
5557 below.
5558 @end defmac
5560 @defmac AC_CHECK_HEADERS (@var{header-file}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5561 @acindex{CHECK_HEADERS}
5562 @cvindex HAVE_@var{header}
5563 For each given system header file @var{header-file} in the
5564 blank-separated argument list that exists, define
5565 @code{HAVE_@var{header-file}} (in all capitals).  If @var{action-if-found}
5566 is given, it is additional shell code to execute when one of the header
5567 files is found.  You can give it a value of @samp{break} to break out of
5568 the loop on the first match.  If @var{action-if-not-found} is given, it
5569 is executed when one of the header files is not found.
5571 For compatibility issues with older versions of Autoconf, please read
5572 below.
5573 @end defmac
5575 Previous versions of Autoconf merely checked whether the header was
5576 accepted by the preprocessor.  This was changed because the old test was
5577 inappropriate for typical uses.  Headers are typically used to compile,
5578 not merely to preprocess, and the old behavior sometimes accepted
5579 headers that clashed at compile-time.  If you need to check whether a
5580 header is preprocessable, you can use @code{AC_PREPROC_IFELSE}
5581 (@pxref{Running the Preprocessor}).
5583 This scheme, which improves the robustness of the test, also requires
5584 that you make sure that headers that must be included before the
5585 @var{header-file} be part of the @var{includes}, (@pxref{Default
5586 Includes}).  If looking for @file{bar.h}, which requires that
5587 @file{foo.h} be included before if it exists, we suggest the following
5588 scheme:
5590 @verbatim
5591 AC_CHECK_HEADERS([foo.h])
5592 AC_CHECK_HEADERS([bar.h], [], [],
5593 [#ifdef HAVE_FOO_H
5594 # include <foo.h>
5595 # endif
5597 @end verbatim
5599 The following variant generates smaller, faster @command{configure}
5600 files if you do not need the full power of @code{AC_CHECK_HEADERS}.
5602 @defmac AC_CHECK_HEADERS_ONCE (@var{header-file}@dots{})
5603 @acindex{CHECK_HEADERS_ONCE}
5604 @cvindex HAVE_@var{header}
5605 For each given system header file @var{header-file} in the
5606 blank-separated argument list that exists, define
5607 @code{HAVE_@var{header-file}} (in all capitals).
5608 This is a once-only variant of @code{AC_CHECK_HEADERS}.  It generates the
5609 checking code at most once, so that @command{configure} is smaller and
5610 faster; but the checks cannot be conditionalized and are always done once,
5611 early during the @command{configure} run.
5612 @end defmac
5614 @node Declarations
5615 @section Declarations
5616 @cindex Declaration, checking
5618 The following macros check for the declaration of variables and
5619 functions.  If there is no macro specifically defined to check for a
5620 symbol you need, then you can use the general macros (@pxref{Generic
5621 Declarations}) or, for more complex tests, you may use
5622 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
5624 @menu
5625 * Particular Declarations::     Macros to check for certain declarations
5626 * Generic Declarations::        How to find other declarations
5627 @end menu
5629 @node Particular Declarations
5630 @subsection Particular Declaration Checks
5632 There are no specific macros for declarations.
5634 @node Generic Declarations
5635 @subsection Generic Declaration Checks
5637 These macros are used to find declarations not covered by the ``particular''
5638 test macros.
5640 @defmac AC_CHECK_DECL (@var{symbol}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5641 @acindex{CHECK_DECL}
5642 If @var{symbol} (a function, variable, or constant) is not declared in
5643 @var{includes} and a declaration is needed, run the shell commands
5644 @var{action-if-not-found}, otherwise @var{action-if-found}.  If no
5645 @var{includes} are specified, the default includes are used
5646 (@pxref{Default Includes}).
5648 This macro actually tests whether @var{symbol} is defined as a macro or
5649 can be used as an r-value, not whether it is really declared, because it
5650 is much safer to avoid
5651 introducing extra declarations when they are not needed.
5652 @end defmac
5654 @defmac AC_CHECK_DECLS (@var{symbols}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5655 @acindex{CHECK_DECLS}
5656 @cvindex HAVE_DECL_@var{symbol}
5657 For each of the @var{symbols} (@emph{comma}-separated list), define
5658 @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
5659 @var{symbol} is declared, otherwise to @samp{0}.  If
5660 @var{action-if-not-found} is given, it is additional shell code to
5661 execute when one of the function declarations is needed, otherwise
5662 @var{action-if-found} is executed.
5664 This macro uses an M4 list as first argument:
5665 @example
5666 AC_CHECK_DECLS([strdup])
5667 AC_CHECK_DECLS([strlen])
5668 AC_CHECK_DECLS([malloc, realloc, calloc, free])
5669 @end example
5671 Unlike the other @samp{AC_CHECK_*S} macros, when a @var{symbol} is not
5672 declared, @code{HAVE_DECL_@var{symbol}} is defined to @samp{0} instead
5673 of leaving @code{HAVE_DECL_@var{symbol}} undeclared.  When you are
5674 @emph{sure} that the check was performed, use
5675 @code{HAVE_DECL_@var{symbol}} in @code{#if}:
5677 @example
5678 #if !HAVE_DECL_SYMBOL
5679 extern char *symbol;
5680 #endif
5681 @end example
5683 @noindent
5684 If the test may have not been performed, however, because it is safer
5685 @emph{not} to declare a symbol than to use a declaration that conflicts
5686 with the system's one, you should use:
5688 @example
5689 #if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC
5690 void *malloc (size_t *s);
5691 #endif
5692 @end example
5694 @noindent
5695 You fall into the second category only in extreme situations: either
5696 your files may be used without being configured, or they are used during
5697 the configuration.  In most cases the traditional approach is enough.
5698 @end defmac
5700 @defmac AC_CHECK_DECLS_ONCE (@var{symbols})
5701 @acindex{CHECK_DECLS_ONCE}
5702 @cvindex HAVE_DECL_@var{symbol}
5703 For each of the @var{symbols} (@emph{comma}-separated list), define
5704 @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
5705 @var{symbol} is declared in the default include files, otherwise to
5706 @samp{0}.  This is a once-only variant of @code{AC_CHECK_DECLS}.  It
5707 generates the checking code at most once, so that @command{configure} is
5708 smaller and faster; but the checks cannot be conditionalized and are
5709 always done once, early during the @command{configure} run.
5710 @end defmac
5713 @node Structures
5714 @section Structures
5715 @cindex Structure, checking
5717 The following macros check for the presence of certain members in C
5718 structures.  If there is no macro specifically defined to check for a
5719 member you need, then you can use the general structure-member macros
5720 (@pxref{Generic Structures}) or, for more complex tests, you may use
5721 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
5723 @menu
5724 * Particular Structures::       Macros to check for certain structure members
5725 * Generic Structures::          How to find other structure members
5726 @end menu
5728 @node Particular Structures
5729 @subsection Particular Structure Checks
5731 The following macros check for certain structures or structure members.
5733 @defmac AC_STRUCT_DIRENT_D_INO
5734 @acindex{STRUCT_DIRENT_D_INO}
5735 @cvindex HAVE_STRUCT_DIRENT_D_INO
5736 Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
5737 Headers}).  Then, if @code{struct dirent} contains a @code{d_ino}
5738 member, define @code{HAVE_STRUCT_DIRENT_D_INO}.
5740 @code{HAVE_STRUCT_DIRENT_D_INO} indicates only the presence of
5741 @code{d_ino}, not whether its contents are always reliable.
5742 Traditionally, a zero @code{d_ino} indicated a deleted directory entry,
5743 though current systems hide this detail from the user and never return
5744 zero @code{d_ino} values.
5745 Many current systems report an incorrect @code{d_ino} for a directory
5746 entry that is a mount point.
5747 @end defmac
5749 @defmac AC_STRUCT_DIRENT_D_TYPE
5750 @acindex{STRUCT_DIRENT_D_TYPE}
5751 @cvindex HAVE_STRUCT_DIRENT_D_TYPE
5752 Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
5753 Headers}).  Then, if @code{struct dirent} contains a @code{d_type}
5754 member, define @code{HAVE_STRUCT_DIRENT_D_TYPE}.
5755 @end defmac
5757 @defmac AC_STRUCT_ST_BLKSIZE
5758 @acindex{STRUCT_ST_BLKSIZE}
5759 @cvindex HAVE_STRUCT_STAT_ST_BLKSIZE
5760 @cvindex HAVE_ST_BLKSIZE
5761 If @code{struct stat} contains an @code{st_blksize} member, define
5762 @code{HAVE_STRUCT_STAT_ST_BLKSIZE}.  The former name,
5763 @code{HAVE_ST_BLKSIZE} is to be avoided, as its support will cease in
5764 the future.  This macro is obsoleted, and should be replaced by
5766 @example
5767 AC_CHECK_MEMBERS([struct stat.st_blksize])
5768 @end example
5769 @end defmac
5771 @defmac AC_STRUCT_ST_BLOCKS
5772 @acindex{STRUCT_ST_BLOCKS}
5773 @cvindex HAVE_STRUCT_STAT_ST_BLOCKS
5774 @cvindex HAVE_ST_BLOCKS
5775 @ovindex LIBOBJS
5776 If @code{struct stat} contains an @code{st_blocks} member, define
5777 @code{HAVE_STRUCT_STAT_ST_BLOCKS}.  Otherwise, require an
5778 @code{AC_LIBOBJ} replacement of @samp{fileblocks}.  The former name,
5779 @code{HAVE_ST_BLOCKS} is to be avoided, as its support will cease in the
5780 future.
5781 @end defmac
5783 @defmac AC_STRUCT_ST_RDEV
5784 @acindex{STRUCT_ST_RDEV}
5785 @cvindex HAVE_ST_RDEV
5786 @cvindex HAVE_STRUCT_STAT_ST_RDEV
5787 If @code{struct stat} contains an @code{st_rdev} member, define
5788 @code{HAVE_STRUCT_STAT_ST_RDEV}.  The former name for this macro,
5789 @code{HAVE_ST_RDEV}, is to be avoided as it will cease to be supported
5790 in the future.  Actually, even the new macro is obsolete and should be
5791 replaced by:
5792 @example
5793 AC_CHECK_MEMBERS([struct stat.st_rdev])
5794 @end example
5795 @end defmac
5797 @defmac AC_STRUCT_TM
5798 @acindex{STRUCT_TM}
5799 @cvindex TM_IN_SYS_TIME
5800 @hdrindex{time.h}
5801 @hdrindex{sys/time.h}
5802 If @file{time.h} does not define @code{struct tm}, define
5803 @code{TM_IN_SYS_TIME}, which means that including @file{sys/time.h}
5804 had better define @code{struct tm}.
5806 This macro is obsolescent, as @file{time.h} defines @code{struct tm} in
5807 current systems.  New programs need not use this macro.
5808 @end defmac
5810 @defmac AC_STRUCT_TIMEZONE
5811 @acindex{STRUCT_TIMEZONE}
5812 @cvindex HAVE_TM_ZONE
5813 @cvindex HAVE_TZNAME
5814 Figure out how to get the current timezone.  If @code{struct tm} has a
5815 @code{tm_zone} member, define @code{HAVE_STRUCT_TM_TM_ZONE} (and the
5816 obsoleted @code{HAVE_TM_ZONE}).  Otherwise, if the external array
5817 @code{tzname} is found, define @code{HAVE_TZNAME}; if it is declared,
5818 define @code{HAVE_DECL_TZNAME}.
5819 @end defmac
5821 @node Generic Structures
5822 @subsection Generic Structure Checks
5824 These macros are used to find structure members not covered by the
5825 ``particular'' test macros.
5827 @defmac AC_CHECK_MEMBER (@var{aggregate}.@var{member}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5828 @acindex{CHECK_MEMBER}
5829 Check whether @var{member} is a member of the aggregate @var{aggregate}.
5830 If no @var{includes} are specified, the default includes are used
5831 (@pxref{Default Includes}).
5833 @example
5834 AC_CHECK_MEMBER([struct passwd.pw_gecos], [],
5835                 [AC_MSG_ERROR([We need `passwd.pw_gecos'!])],
5836                 [#include <pwd.h>])
5837 @end example
5839 You can use this macro for submembers:
5841 @example
5842 AC_CHECK_MEMBER(struct top.middle.bot)
5843 @end example
5844 @end defmac
5846 @defmac AC_CHECK_MEMBERS (@var{members}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5847 @acindex{CHECK_MEMBERS}
5848 Check for the existence of each @samp{@var{aggregate}.@var{member}} of
5849 @var{members} using the previous macro.  When @var{member} belongs to
5850 @var{aggregate}, define @code{HAVE_@var{aggregate}_@var{member}} (in all
5851 capitals, with spaces and dots replaced by underscores).  If
5852 @var{action-if-found} is given, it is executed for each of the found
5853 members.  If @var{action-if-not-found} is given, it is executed for each
5854 of the members that could not be found.
5856 This macro uses M4 lists:
5857 @example
5858 AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize])
5859 @end example
5860 @end defmac
5863 @node Types
5864 @section Types
5865 @cindex Types
5866 @cindex C types
5868 The following macros check for C types, either builtin or typedefs.  If
5869 there is no macro specifically defined to check for a type you need, and
5870 you don't need to check for any special properties of it, then you can
5871 use a general type-check macro.
5873 @menu
5874 * Particular Types::            Special handling to find certain types
5875 * Generic Types::               How to find other types
5876 @end menu
5878 @node Particular Types
5879 @subsection Particular Type Checks
5881 @hdrindex{sys/types.h}
5882 @hdrindex{stdlib.h}
5883 @hdrindex{stdint.h}
5884 @hdrindex{inttypes.h}
5885 These macros check for particular C types in @file{sys/types.h},
5886 @file{stdlib.h}, @file{stdint.h}, @file{inttypes.h} and others, if they
5887 exist.
5889 The Gnulib @code{stdint} module is an alternate way to define many of
5890 these symbols; it is useful if you prefer your code to assume a
5891 C99-or-better environment.  @xref{Gnulib}.
5893 @defmac AC_TYPE_GETGROUPS
5894 @acindex{TYPE_GETGROUPS}
5895 @cvindex GETGROUPS_T
5896 Define @code{GETGROUPS_T} to be whichever of @code{gid_t} or @code{int}
5897 is the base type of the array argument to @code{getgroups}.
5898 @end defmac
5900 @defmac AC_TYPE_INT8_T
5901 @acindex{TYPE_INT8_T}
5902 @cvindex HAVE_INT8_T
5903 @cvindex int8_t
5904 If @file{stdint.h} or @file{inttypes.h} defines the type @code{int8_t},
5905 define @code{HAVE_INT8_T}.  Otherwise, define @code{int8_t} to a signed
5906 integer type that is exactly 8 bits wide and that uses two's complement
5907 representation, if such a type exists.
5908 @end defmac
5910 @defmac AC_TYPE_INT16_T
5911 @acindex{TYPE_INT16_T}
5912 @cvindex HAVE_INT16_T
5913 @cvindex int16_t
5914 This is like @code{AC_TYPE_INT8_T}, except for 16-bit integers.
5915 @end defmac
5917 @defmac AC_TYPE_INT32_T
5918 @acindex{TYPE_INT32_T}
5919 @cvindex HAVE_INT32_T
5920 @cvindex int32_t
5921 This is like @code{AC_TYPE_INT8_T}, except for 32-bit integers.
5922 @end defmac
5924 @defmac AC_TYPE_INT64_T
5925 @acindex{TYPE_INT64_T}
5926 @cvindex HAVE_INT64_T
5927 @cvindex int64_t
5928 This is like @code{AC_TYPE_INT8_T}, except for 64-bit integers.
5929 @end defmac
5931 @defmac AC_TYPE_INTMAX_T
5932 @acindex{TYPE_INTMAX_T}
5933 @cvindex HAVE_INTMAX_T
5934 @cvindex intmax_t
5935 If @file{stdint.h} or @file{inttypes.h} defines the type @code{intmax_t},
5936 define @code{HAVE_INTMAX_T}.  Otherwise, define @code{intmax_t} to the
5937 widest signed integer type.
5938 @end defmac
5940 @defmac AC_TYPE_INTPTR_T
5941 @acindex{TYPE_INTPTR_T}
5942 @cvindex HAVE_INTPTR_T
5943 @cvindex intptr_t
5944 If @file{stdint.h} or @file{inttypes.h} defines the type @code{intptr_t},
5945 define @code{HAVE_INTPTR_T}.  Otherwise, define @code{intptr_t} to a
5946 signed integer type wide enough to hold a pointer, if such a type
5947 exists.
5948 @end defmac
5950 @defmac AC_TYPE_LONG_DOUBLE
5951 @acindex{TYPE_LONG_DOUBLE}
5952 @cvindex HAVE_LONG_DOUBLE
5953 If the C compiler supports a working @code{long double} type, define
5954 @code{HAVE_LONG_DOUBLE}.  The @code{long double} type might have the
5955 same range and precision as @code{double}.
5956 @end defmac
5958 @defmac AC_TYPE_LONG_DOUBLE_WIDER
5959 @acindex{TYPE_LONG_DOUBLE_WIDER}
5960 @cvindex HAVE_LONG_DOUBLE_WIDER
5961 If the C compiler supports a working @code{long double} type with more
5962 range or precision than the @code{double} type, define
5963 @code{HAVE_LONG_DOUBLE_WIDER}.
5964 @end defmac
5966 @defmac AC_TYPE_LONG_LONG_INT
5967 @acindex{TYPE_LONG_LONG_INT}
5968 @cvindex HAVE_LONG_LONG_INT
5969 If the C compiler supports a working @code{long long int} type, define
5970 @code{HAVE_LONG_LONG_INT}.
5971 @end defmac
5973 @defmac AC_TYPE_MBSTATE_T
5974 @acindex{TYPE_MBSTATE_T}
5975 @cvindex mbstate_t
5976 @hdrindex{wchar.h}
5977 Define @code{HAVE_MBSTATE_T} if @code{<wchar.h>} declares the
5978 @code{mbstate_t} type.  Also, define @code{mbstate_t} to be a type if
5979 @code{<wchar.h>} does not declare it.
5980 @end defmac
5982 @defmac AC_TYPE_MODE_T
5983 @acindex{TYPE_MODE_T}
5984 @cvindex mode_t
5985 Define @code{mode_t} to a suitable type, if standard headers do not
5986 define it.
5987 @end defmac
5989 @defmac AC_TYPE_OFF_T
5990 @acindex{TYPE_OFF_T}
5991 @cvindex off_t
5992 Define @code{off_t} to a suitable type, if standard headers do not
5993 define it.
5994 @end defmac
5996 @defmac AC_TYPE_PID_T
5997 @acindex{TYPE_PID_T}
5998 @cvindex pid_t
5999 Define @code{pid_t} to a suitable type, if standard headers do not
6000 define it.
6001 @end defmac
6003 @defmac AC_TYPE_SIGNAL
6004 @acindex{TYPE_SIGNAL}
6005 @cvindex RETSIGTYPE
6006 @hdrindex{signal.h}
6007 If @file{signal.h} declares @code{signal} as returning a pointer to a
6008 function returning @code{void}, define @code{RETSIGTYPE} to be
6009 @code{void}; otherwise, define it to be @code{int}.
6011 Define signal handlers as returning type @code{RETSIGTYPE}:
6013 @example
6014 @group
6015 RETSIGTYPE
6016 hup_handler ()
6018 @dots{}
6020 @end group
6021 @end example
6022 @end defmac
6024 @defmac AC_TYPE_SIZE_T
6025 @acindex{TYPE_SIZE_T}
6026 @cvindex size_t
6027 Define @code{size_t} to a suitable type, if standard headers do not
6028 define it.
6029 @end defmac
6031 @defmac AC_TYPE_SSIZE_T
6032 @acindex{TYPE_SSIZE_T}
6033 @cvindex ssize_t
6034 Define @code{ssize_t} to a suitable type, if standard headers do not
6035 define it.
6036 @end defmac
6038 @defmac AC_TYPE_UID_T
6039 @acindex{TYPE_UID_T}
6040 @cvindex uid_t
6041 @cvindex gid_t
6042 Define @code{uid_t} and @code{gid_t} to suitable types, if standard
6043 headers do not define them.
6044 @end defmac
6046 @defmac AC_TYPE_UINT8_T
6047 @acindex{TYPE_UINT8_T}
6048 @cvindex HAVE_UINT8_T
6049 @cvindex uint8_t
6050 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uint8_t},
6051 define @code{HAVE_UINT8_T}.  Otherwise, define @code{uint8_t} to an
6052 unsigned integer type that is exactly 8 bits wide, if such a type
6053 exists.
6054 @end defmac
6056 @defmac AC_TYPE_UINT16_T
6057 @acindex{TYPE_UINT16_T}
6058 @cvindex HAVE_UINT16_T
6059 @cvindex uint16_t
6060 This is like @code{AC_TYPE_UINT8_T}, except for 16-bit unsigned integers.
6061 @end defmac
6063 @defmac AC_TYPE_UINT32_T
6064 @acindex{TYPE_UINT32_T}
6065 @cvindex HAVE_UINT32_T
6066 @cvindex uint32_t
6067 This is like @code{AC_TYPE_UINT8_T}, except for 32-bit unsigned integers.
6068 @end defmac
6070 @defmac AC_TYPE_UINT64_T
6071 @acindex{TYPE_UINT64_T}
6072 @cvindex HAVE_UINT64_T
6073 @cvindex uint64_t
6074 This is like @code{AC_TYPE_UINT8_T}, except for 64-bit unsigned integers.
6075 @end defmac
6077 @defmac AC_TYPE_UINTMAX_T
6078 @acindex{TYPE_UINTMAX_T}
6079 @cvindex HAVE_UINTMAX_T
6080 @cvindex uintmax_t
6081 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintmax_t},
6082 define @code{HAVE_UINTMAX_T}.  Otherwise, define @code{uintmax_t} to the
6083 widest unsigned integer type.
6084 @end defmac
6086 @defmac AC_TYPE_UINTPTR_T
6087 @acindex{TYPE_UINTPTR_T}
6088 @cvindex HAVE_UINTPTR_T
6089 @cvindex uintptr_t
6090 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintptr_t},
6091 define @code{HAVE_UINTPTR_T}.  Otherwise, define @code{uintptr_t} to an
6092 unsigned integer type wide enough to hold a pointer, if such a type
6093 exists.
6094 @end defmac
6096 @defmac AC_TYPE_UNSIGNED_LONG_LONG_INT
6097 @acindex{TYPE_UNSIGNED_LONG_LONG_INT}
6098 @cvindex HAVE_UNSIGNED_LONG_LONG_INT
6099 If the C compiler supports a working @code{unsigned long long int} type,
6100 define @code{HAVE_UNSIGNED_LONG_LONG_INT}.
6101 @end defmac
6103 @node Generic Types
6104 @subsection Generic Type Checks
6106 These macros are used to check for types not covered by the ``particular''
6107 test macros.
6109 @defmac AC_CHECK_TYPE (@var{type}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
6110 @acindex{CHECK_TYPE}
6111 Check whether @var{type} is defined.  It may be a compiler builtin type
6112 or defined by the @var{includes} (@pxref{Default Includes}).
6113 @end defmac
6116 @defmac AC_CHECK_TYPES (@var{types}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
6117 @acindex{CHECK_TYPES}
6118 For each @var{type} of the @var{types} that is defined, define
6119 @code{HAVE_@var{type}} (in all capitals).  If no @var{includes} are
6120 specified, the default includes are used (@pxref{Default Includes}).  If
6121 @var{action-if-found} is given, it is additional shell code to execute
6122 when one of the types is found.  If @var{action-if-not-found} is given,
6123 it is executed when one of the types is not found.
6125 This macro uses M4 lists:
6126 @example
6127 AC_CHECK_TYPES([ptrdiff_t])
6128 AC_CHECK_TYPES([unsigned long long int, uintmax_t])
6129 @end example
6131 @end defmac
6133 Autoconf, up to 2.13, used to provide to another version of
6134 @code{AC_CHECK_TYPE}, broken by design.  In order to keep backward
6135 compatibility, a simple heuristics, quite safe but not totally, is
6136 implemented.  In case of doubt, read the documentation of the former
6137 @code{AC_CHECK_TYPE}, see @ref{Obsolete Macros}.
6140 @node Compilers and Preprocessors
6141 @section Compilers and Preprocessors
6142 @cindex Compilers
6143 @cindex Preprocessors
6145 @ovindex EXEEXT
6146 All the tests for compilers (@code{AC_PROG_CC}, @code{AC_PROG_CXX},
6147 @code{AC_PROG_F77}) define the output variable @code{EXEEXT} based on
6148 the output of the compiler, typically to the empty string if
6149 Posix and @samp{.exe} if a @acronym{DOS} variant.
6151 @ovindex OBJEXT
6152 They also define the output variable @code{OBJEXT} based on the
6153 output of the compiler, after @file{.c} files have been excluded, typically
6154 to @samp{o} if Posix, @samp{obj} if a @acronym{DOS} variant.
6156 If the compiler being used does not produce executables, the tests fail.  If
6157 the executables can't be run, and cross-compilation is not enabled, they
6158 fail too.  @xref{Manual Configuration}, for more on support for cross
6159 compiling.
6161 @menu
6162 * Specific Compiler Characteristics::  Some portability issues
6163 * Generic Compiler Characteristics::  Language independent tests and features
6164 * C Compiler::                  Checking its characteristics
6165 * C++ Compiler::                Likewise
6166 * Objective C Compiler::        Likewise
6167 * Erlang Compiler and Interpreter::  Likewise
6168 * Fortran Compiler::            Likewise
6169 @end menu
6171 @node Specific Compiler Characteristics
6172 @subsection Specific Compiler Characteristics
6174 Some compilers exhibit different behaviors.
6176 @table @asis
6177 @item Static/Dynamic Expressions
6178 Autoconf relies on a trick to extract one bit of information from the C
6179 compiler: using negative array sizes.  For instance the following
6180 excerpt of a C source demonstrates how to test whether @samp{int} objects are 4
6181 bytes wide:
6183 @example
6184 static int test_array[sizeof (int) == 4 ? 1 : -1];
6185 @end example
6187 @noindent
6188 To our knowledge, there is a single compiler that does not support this
6189 trick: the @acronym{HP} C compilers (the real ones, not only the ``bundled'') on
6190 @acronym{HP-UX} 11.00.
6191 They incorrectly reject the above program with the diagnostic
6192 ``Variable-length arrays cannot have static storage.''
6193 This bug comes from @acronym{HP} compilers' mishandling of @code{sizeof (int)},
6194 not from the @code{? 1 : -1}, and
6195 Autoconf works around this problem by casting @code{sizeof (int)} to
6196 @code{long int} before comparing it.
6197 @end table
6199 @node Generic Compiler Characteristics
6200 @subsection Generic Compiler Characteristics
6202 @defmac AC_CHECK_SIZEOF (@var{type}, @ovar{unused}, @dvar{includes, default-includes})
6203 @acindex{CHECK_SIZEOF}
6204 Define @code{SIZEOF_@var{type}} (@pxref{Standard Symbols}) to be the
6205 size in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
6206 of 0.  If no @var{includes} are specified, the default includes are used
6207 (@pxref{Default Includes}).
6209 This macro now works even when cross-compiling.  The @var{unused}
6210 argument was used when cross-compiling.
6212 For example, the call
6214 @example
6215 AC_CHECK_SIZEOF([int *])
6216 @end example
6218 @noindent
6219 defines @code{SIZEOF_INT_P} to be 8 on DEC Alpha AXP systems.
6220 @end defmac
6222 @defmac AC_CHECK_ALIGNOF (@var{type}, @dvar{includes, default-includes})
6223 @acindex{CHECK_ALIGNOF}
6224 Define @code{ALIGNOF_@var{type}} (@pxref{Standard Symbols}) to be the
6225 alignment in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
6226 of 0.  If no @var{includes} are specified, the default includes are used
6227 (@pxref{Default Includes}).
6228 @end defmac
6230 @defmac AC_COMPUTE_INT (@var{var}, @var{expression}, @dvar{includes, default-includes}, @ovar{action-if-fails})
6231 @acindex{COMPUTE_INT}
6232 Store into the shell variable @var{var} the value of the integer
6233 @var{expression}.  The
6234 value should fit in an initializer in a C variable of type @code{signed
6235 long}.  To support cross compilation (in which case, the macro only works on
6236 hosts that use twos-complement arithmetic), it should be possible to evaluate
6237 the expression at compile-time.  If no @var{includes} are specified, the default
6238 includes are used (@pxref{Default Includes}).
6240 Execute @var{action-if-fails} if the value cannot be determined correctly.
6241 @end defmac
6243 @defmac AC_LANG_WERROR
6244 @acindex{LANG_WERROR}
6245 Normally Autoconf ignores warnings generated by the compiler, linker, and
6246 preprocessor.  If this macro is used, warnings count as fatal
6247 errors for the current language.  This macro is useful when the
6248 results of configuration are used where warnings are unacceptable; for
6249 instance, if parts of a program are built with the @acronym{GCC}
6250 @option{-Werror}
6251 option.  If the whole program is built using @option{-Werror} it is
6252 often simpler to put @option{-Werror} in the compiler flags (@code{CFLAGS},
6253 etc.).
6254 @end defmac
6256 @node C Compiler
6257 @subsection C Compiler Characteristics
6259 The following macros provide ways to find and exercise a C Compiler.
6260 There are a few constructs that ought to be avoided, but do not deserve
6261 being checked for, since they can easily be worked around.
6263 @table @asis
6264 @item Don't use lines containing solitary backslashes
6265 They tickle a bug in the @acronym{HP-UX} C compiler (checked on
6266 @acronym{HP-UX} 10.20,
6267 11.00, and 11i).  When given the following source:
6269 @example
6270 #ifdef __STDC__
6272 * A comment with backslash-newlines in it.  %@{ %@} *\
6275 char str[] = "\\
6276 " A string with backslash-newlines in it %@{ %@} \\
6278 char apostrophe = '\\
6282 #endif
6283 @end example
6285 @noindent
6286 the compiler incorrectly fails with the diagnostics ``Non-terminating
6287 comment at end of file'' and ``Missing @samp{#endif} at end of file.''
6288 Removing the lines with solitary backslashes solves the problem.
6290 @item Don't compile several files at once if output matters to you
6291 Some compilers, such as @acronym{HP}'s, report names of files being
6292 compiled when given more than one file operand.  For instance:
6294 @example
6295 $ @kbd{cc a.c b.c}
6296 a.c:
6297 b.c:
6298 @end example
6300 @noindent
6301 This can cause problems if you observe the output of the compiler to
6302 detect failures.  Invoking @samp{cc -c a.c && cc -c b.c && cc -o c a.o
6303 b.o} solves the issue.
6305 @item Don't rely on @code{#error} failing
6306 The @sc{irix} C compiler does not fail when #error is preprocessed; it
6307 simply emits a diagnostic and continues, exiting successfully.  So,
6308 instead of an error directive like @code{#error "Unsupported word size"}
6309 it is more portable to use an invalid directive like @code{#Unsupported
6310 word size} in Autoconf tests.  In ordinary source code, @code{#error} is
6311 OK, since installers with inadequate compilers like @sc{irix} can simply
6312 examine these compilers' diagnostic output.
6314 @item Don't rely on correct @code{#line} support
6315 On Solaris, @command{c89} (at least Sun C 5.3 through 5.8)
6316 diagnoses @code{#line} directives whose line
6317 numbers are greater than 32767.  Nothing in Posix
6318 makes this invalid.  That is why Autoconf stopped issuing
6319 @code{#line} directives.
6320 @end table
6322 @defmac AC_PROG_CC (@ovar{compiler-search-list})
6323 @acindex{PROG_CC}
6324 @ovindex CC
6325 @ovindex CFLAGS
6326 Determine a C compiler to use.  If @code{CC} is not already set in the
6327 environment, check for @code{gcc} and @code{cc}, then for other C
6328 compilers.  Set output variable @code{CC} to the name of the compiler
6329 found.
6331 This macro may, however, be invoked with an optional first argument
6332 which, if specified, must be a blank-separated list of C compilers to
6333 search for.  This just gives the user an opportunity to specify an
6334 alternative search list for the C compiler.  For example, if you didn't
6335 like the default order, then you could invoke @code{AC_PROG_CC} like
6336 this:
6338 @example
6339 AC_PROG_CC([gcc cl cc])
6340 @end example
6342 If the C compiler does not handle function prototypes correctly by
6343 default, try to add an option to output variable @code{CC} to make it
6344 so.  This macro tries various options that select standard-conformance
6345 modes on various systems.
6347 After calling this macro you can check whether the C compiler has been
6348 set to accept @acronym{ANSI} C89 (@acronym{ISO} C90); if not, the shell
6349 variable
6350 @code{ac_cv_prog_cc_c89} is set to @samp{no}.  See also
6351 @code{AC_C_PROTOTYPES} below.
6353 If using the @acronym{GNU} C compiler, set shell variable @code{GCC} to
6354 @samp{yes}.  If output variable @code{CFLAGS} was not already set, set
6355 it to @option{-g -O2} for the @acronym{GNU} C compiler (@option{-O2} on systems
6356 where @acronym{GCC} does not accept @option{-g}), or @option{-g} for
6357 other compilers.
6358 @end defmac
6360 @defmac AC_PROG_CC_C_O
6361 @acindex{PROG_CC_C_O}
6362 @cvindex NO_MINUS_C_MINUS_O
6363 If the C compiler does not accept the @option{-c} and @option{-o} options
6364 simultaneously, define @code{NO_MINUS_C_MINUS_O}.  This macro actually
6365 tests both the compiler found by @code{AC_PROG_CC}, and, if different,
6366 the first @code{cc} in the path.  The test fails if one fails.  This
6367 macro was created for @acronym{GNU} Make to choose the default C compilation
6368 rule.
6369 @end defmac
6372 @defmac AC_PROG_CPP
6373 @acindex{PROG_CPP}
6374 @ovindex CPP
6375 Set output variable @code{CPP} to a command that runs the
6376 C preprocessor.  If @samp{$CC -E} doesn't work, @file{/lib/cpp} is used.
6377 It is only portable to run @code{CPP} on files with a @file{.c}
6378 extension.
6380 Some preprocessors don't indicate missing include files by the error
6381 status.  For such preprocessors an internal variable is set that causes
6382 other macros to check the standard error from the preprocessor and
6383 consider the test failed if any warnings have been reported.
6384 For most preprocessors, though, warnings do not cause include-file
6385 tests to fail unless @code{AC_PROG_CPP_WERROR} is also specified.
6386 @end defmac
6388 @defmac AC_PROG_CPP_WERROR
6389 @acindex{PROG_CPP_WERROR}
6390 @ovindex CPP
6391 This acts like @code{AC_PROG_CPP}, except it treats warnings from the
6392 preprocessor as errors even if the preprocessor exit status indicates
6393 success.  This is useful for avoiding headers that generate mandatory
6394 warnings, such as deprecation notices.
6395 @end defmac
6398 The following macros check for C compiler or machine architecture
6399 features.  To check for characteristics not listed here, use
6400 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
6401 @code{AC_RUN_IFELSE} (@pxref{Runtime}).
6403 @defmac AC_PROG_CC_STDC
6404 @acindex{PROG_CC_STDC}
6405 If the C compiler cannot compile @acronym{ISO} Standard C (currently
6406 C99), try to add an option to output variable @code{CC} to make it work.
6407 If the compiler does not support C99, fall back to supporting
6408 @acronym{ANSI} C89 (@acronym{ISO} C90).
6410 After calling this macro you can check whether the C compiler has been
6411 set to accept Standard C; if not, the shell variable
6412 @code{ac_cv_prog_cc_stdc} is set to @samp{no}.
6413 @end defmac
6415 @defmac AC_PROG_CC_C89
6416 @acindex{PROG_CC_C89}
6417 If the C compiler is not in @acronym{ANSI} C89 (@acronym{ISO} C90) mode by
6418 default, try to add an option to output variable @code{CC} to make it
6419 so.  This macro tries various options that select @acronym{ANSI} C89 on
6420 some system or another.  It considers the compiler to be in
6421 @acronym{ANSI} C89 mode if it handles function prototypes correctly.
6423 After calling this macro you can check whether the C compiler has been
6424 set to accept @acronym{ANSI} C89; if not, the shell variable
6425 @code{ac_cv_prog_cc_c89} is set to @samp{no}.
6427 This macro is called automatically by @code{AC_PROG_CC}.
6428 @end defmac
6430 @defmac AC_PROG_CC_C99
6431 @acindex{PROG_CC_C99}
6432 If the C compiler is not in C99 mode by default, try to add an
6433 option to output variable @code{CC} to make it so.  This macro tries
6434 various options that select C99 on some system or another.  It
6435 considers the compiler to be in C99 mode if it handles @code{_Bool},
6436 @code{//} comments, flexible array members, @code{inline}, @code{long
6437 long int}, mixed code and declarations, named initialization of structs,
6438 @code{restrict}, @code{va_copy}, varargs macros, variable declarations
6439 in @code{for} loops, and variable length arrays.
6441 After calling this macro you can check whether the C compiler has been
6442 set to accept C99; if not, the shell variable
6443 @code{ac_cv_prog_cc_c99} is set to @samp{no}.
6444 @end defmac
6446 @defmac AC_C_BACKSLASH_A
6447 @acindex{HAVE_C_BACKSLASH_A}
6448 Define @samp{HAVE_C_BACKSLASH_A} to 1 if the C compiler understands
6449 @samp{\a}.
6451 This macro is obsolescent, as current C compilers understand @samp{\a}.
6452 New programs need not use this macro.
6453 @end defmac
6455 @defmac AC_C_BIGENDIAN (@ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-unknown})
6456 @acindex{C_BIGENDIAN}
6457 @cvindex WORDS_BIGENDIAN
6458 @cindex Endianness
6459 If words are stored with the most significant byte first (like Motorola
6460 and SPARC CPUs), execute @var{action-if-true}.  If words are stored with
6461 the least significant byte first (like Intel and VAX CPUs), execute
6462 @var{action-if-false}.
6464 This macro runs a test-case if endianness cannot be determined from the
6465 system header files.  When cross-compiling, the test-case is not run but
6466 grep'ed for some magic values.  @var{action-if-unknown} is executed if
6467 the latter case fails to determine the byte sex of the host system.
6469 The default for @var{action-if-true} is to define
6470 @samp{WORDS_BIGENDIAN}.  The default for @var{action-if-false} is to do
6471 nothing.  And finally, the default for @var{action-if-unknown} is to
6472 abort configure and tell the installer which variable he should preset
6473 to bypass this test.
6474 @end defmac
6476 @defmac AC_C_CONST
6477 @acindex{C_CONST}
6478 @cvindex const
6479 If the C compiler does not fully support the @code{const} keyword,
6480 define @code{const} to be empty.  Some C compilers that do
6481 not define @code{__STDC__} do support @code{const}; some compilers that
6482 define @code{__STDC__} do not completely support @code{const}.  Programs
6483 can simply use @code{const} as if every C compiler supported it; for
6484 those that don't, the makefile or configuration header file
6485 defines it as empty.
6487 Occasionally installers use a C++ compiler to compile C code, typically
6488 because they lack a C compiler.  This causes problems with @code{const},
6489 because C and C++ treat @code{const} differently.  For example:
6491 @example
6492 const int foo;
6493 @end example
6495 @noindent
6496 is valid in C but not in C++.  These differences unfortunately cannot be
6497 papered over by defining @code{const} to be empty.
6499 If @command{autoconf} detects this situation, it leaves @code{const} alone,
6500 as this generally yields better results in practice.  However, using a
6501 C++ compiler to compile C code is not recommended or supported, and
6502 installers who run into trouble in this area should get a C compiler
6503 like @acronym{GCC} to compile their C code.
6505 This macro is obsolescent, as current C compilers support @code{const}.
6506 New programs need not use this macro.
6507 @end defmac
6509 @defmac AC_C_RESTRICT
6510 @acindex{C_RESTRICT}
6511 @cvindex restrict
6512 If the C compiler recognizes the @code{restrict} keyword, don't do anything.
6513 If it recognizes only a variant spelling (@code{__restrict},
6514 @code{__restrict__}, or @code{_Restrict}), then define
6515 @code{restrict} to that.
6516 Otherwise, define @code{restrict} to be empty.
6517 Thus, programs may simply use @code{restrict} as if every C compiler
6518 supported it; for those that do not, the makefile
6519 or configuration header defines it away.
6521 Although support in C++ for the @code{restrict} keyword is not
6522 required, several C++ compilers do accept the keyword.
6523 This macro works for them, too.
6524 @end defmac
6526 @defmac AC_C_VOLATILE
6527 @acindex{C_VOLATILE}
6528 @cvindex volatile
6529 If the C compiler does not understand the keyword @code{volatile},
6530 define @code{volatile} to be empty.  Programs can simply use
6531 @code{volatile} as if every C compiler supported it; for those that do
6532 not, the makefile or configuration header defines it as
6533 empty.
6535 If the correctness of your program depends on the semantics of
6536 @code{volatile}, simply defining it to be empty does, in a sense, break
6537 your code.  However, given that the compiler does not support
6538 @code{volatile}, you are at its mercy anyway.  At least your
6539 program compiles, when it wouldn't before.
6540 @xref{Volatile Objects}, for more about @code{volatile}.
6542 In general, the @code{volatile} keyword is a standard C feature, so
6543 you might expect that @code{volatile} is available only when
6544 @code{__STDC__} is defined.  However, Ultrix 4.3's native compiler does
6545 support volatile, but does not define @code{__STDC__}.
6547 This macro is obsolescent, as current C compilers support @code{volatile}.
6548 New programs need not use this macro.
6549 @end defmac
6551 @defmac AC_C_INLINE
6552 @acindex{C_INLINE}
6553 @cvindex inline
6554 If the C compiler supports the keyword @code{inline}, do nothing.
6555 Otherwise define @code{inline} to @code{__inline__} or @code{__inline}
6556 if it accepts one of those, otherwise define @code{inline} to be empty.
6557 @end defmac
6559 @defmac AC_C_CHAR_UNSIGNED
6560 @acindex{C_CHAR_UNSIGNED}
6561 @cvindex __CHAR_UNSIGNED__
6562 If the C type @code{char} is unsigned, define @code{__CHAR_UNSIGNED__},
6563 unless the C compiler predefines it.
6564 @end defmac
6566 @defmac AC_C_STRINGIZE
6567 @acindex{C_STRINGIZE}
6568 @cvindex HAVE_STRINGIZE
6569 If the C preprocessor supports the stringizing operator, define
6570 @code{HAVE_STRINGIZE}.  The stringizing operator is @samp{#} and is
6571 found in macros such as this:
6573 @example
6574 #define x(y) #y
6575 @end example
6577 This macro is obsolescent, as current C compilers support the
6578 stringizing operator.  New programs need not use this macro.
6579 @end defmac
6581 @defmac AC_C_FLEXIBLE_ARRAY_MEMBER
6582 @acindex{C_FLEXIBLE_ARRAY_MEMBER}
6583 @cvindex FLEXIBLE_ARRAY_MEMBER
6584 If the C compiler supports flexible array members, define
6585 @code{FLEXIBLE_ARRAY_MEMBER} to nothing; otherwise define it to 1.
6586 That way, a declaration like this:
6588 @example
6589 struct s
6590   @{
6591     size_t n_vals;
6592     double val[FLEXIBLE_ARRAY_MEMBER];
6593   @};
6594 @end example
6596 @noindent
6597 will let applications use the ``struct hack'' even with compilers that
6598 do not support flexible array members.  To allocate and use such an
6599 object, you can use code like this:
6601 @example
6602 size_t i;
6603 size_t n = compute_value_count ();
6604 struct s *p =
6605    malloc (offsetof (struct s, val)
6606            + n * sizeof (double));
6607 p->n_vals = n;
6608 for (i = 0; i < n; i++)
6609   p->val[i] = compute_value (i);
6610 @end example
6611 @end defmac
6613 @defmac AC_C_VARARRAYS
6614 @acindex{C_VARARRAYS}
6615 @cvindex HAVE_C_VARARRAYS
6616 If the C compiler supports variable-length arrays, define
6617 @code{HAVE_C_VARRAYS}.  A variable-length array is an array of automatic
6618 storage duration whose length is determined at run time, when the array
6619 is declared.
6620 @end defmac
6622 @defmac AC_C_TYPEOF
6623 @acindex{C_TYPEOF}
6624 @cvindex HAVE_TYPEOF
6625 @cvindex typeof
6626 If the C compiler supports @acronym{GCC}'s @code{typeof} syntax either
6627 directly or
6628 through a different spelling of the keyword (e.g., @code{__typeof__}),
6629 define @code{HAVE_TYPEOF}.  If the support is available only through a
6630 different spelling, define @code{typeof} to that spelling.
6631 @end defmac
6633 @defmac AC_C_PROTOTYPES
6634 @acindex{C_PROTOTYPES}
6635 @cvindex PROTOTYPES
6636 @cvindex __PROTOTYPES
6637 @cvindex PARAMS
6638 If function prototypes are understood by the compiler (as determined by
6639 @code{AC_PROG_CC}), define @code{PROTOTYPES} and @code{__PROTOTYPES}.
6640 Defining @code{__PROTOTYPES} is for the benefit of
6641 header files that cannot use macros that infringe on user name space.
6643 This macro is obsolescent, as current C compilers support prototypes.
6644 New programs need not use this macro.
6645 @end defmac
6647 @defmac AC_PROG_GCC_TRADITIONAL
6648 @acindex{PROG_GCC_TRADITIONAL}
6649 @ovindex CC
6650 Add @option{-traditional} to output variable @code{CC} if using the
6651 @acronym{GNU} C compiler and @code{ioctl} does not work properly without
6652 @option{-traditional}.  That usually happens when the fixed header files
6653 have not been installed on an old system.
6655 This macro is obsolescent, since current versions of the @acronym{GNU} C
6656 compiler fix the header files automatically when installed.
6657 @end defmac
6660 @node C++ Compiler
6661 @subsection C++ Compiler Characteristics
6664 @defmac AC_PROG_CXX (@ovar{compiler-search-list})
6665 @acindex{PROG_CXX}
6666 @ovindex CXX
6667 @ovindex CXXFLAGS
6668 Determine a C++ compiler to use.  Check whether the environment variable
6669 @code{CXX} or @code{CCC} (in that order) is set; if so, then set output
6670 variable @code{CXX} to its value.
6672 Otherwise, if the macro is invoked without an argument, then search for
6673 a C++ compiler under the likely names (first @code{g++} and @code{c++}
6674 then other names).  If none of those checks succeed, then as a last
6675 resort set @code{CXX} to @code{g++}.
6677 This macro may, however, be invoked with an optional first argument
6678 which, if specified, must be a blank-separated list of C++ compilers to
6679 search for.  This just gives the user an opportunity to specify an
6680 alternative search list for the C++ compiler.  For example, if you
6681 didn't like the default order, then you could invoke @code{AC_PROG_CXX}
6682 like this:
6684 @example
6685 AC_PROG_CXX([gcc cl KCC CC cxx cc++ xlC aCC c++ g++])
6686 @end example
6688 If using the @acronym{GNU} C++ compiler, set shell variable @code{GXX} to
6689 @samp{yes}.  If output variable @code{CXXFLAGS} was not already set, set
6690 it to @option{-g -O2} for the @acronym{GNU} C++ compiler (@option{-O2} on
6691 systems where G++ does not accept @option{-g}), or @option{-g} for other
6692 compilers.
6693 @end defmac
6695 @defmac AC_PROG_CXXCPP
6696 @acindex{PROG_CXXCPP}
6697 @ovindex CXXCPP
6698 Set output variable @code{CXXCPP} to a command that runs the C++
6699 preprocessor.  If @samp{$CXX -E} doesn't work, @file{/lib/cpp} is used.
6700 It is portable to run @code{CXXCPP} only on files with a @file{.c},
6701 @file{.C}, @file{.cc}, or @file{.cpp} extension.
6703 Some preprocessors don't indicate missing include files by the error
6704 status.  For such preprocessors an internal variable is set that causes
6705 other macros to check the standard error from the preprocessor and
6706 consider the test failed if any warnings have been reported.  However,
6707 it is not known whether such broken preprocessors exist for C++.
6708 @end defmac
6710 @defmac AC_PROG_CXX_C_O
6711 @acindex{PROG_CXX_C_O}
6712 @cvindex CXX_NO_MINUS_C_MINUS_O
6713 Test whether the C++ compiler accepts the options @option{-c} and
6714 @option{-o} simultaneously, and define @code{CXX_NO_MINUS_C_MINUS_O},
6715 if it does not.
6716 @end defmac
6719 @node Objective C Compiler
6720 @subsection Objective C Compiler Characteristics
6723 @defmac AC_PROG_OBJC (@ovar{compiler-search-list})
6724 @acindex{PROG_OBJC}
6725 @ovindex OBJC
6726 @ovindex OBJCFLAGS
6727 Determine an Objective C compiler to use.  If @code{OBJC} is not already
6728 set in the environment, check for Objective C compilers.  Set output
6729 variable @code{OBJC} to the name of the compiler found.
6731 This macro may, however, be invoked with an optional first argument
6732 which, if specified, must be a blank-separated list of Objective C compilers to
6733 search for.  This just gives the user an opportunity to specify an
6734 alternative search list for the Objective C compiler.  For example, if you
6735 didn't like the default order, then you could invoke @code{AC_PROG_OBJC}
6736 like this:
6738 @example
6739 AC_PROG_OBJC([gcc objcc objc])
6740 @end example
6742 If using the @acronym{GNU} Objective C compiler, set shell variable
6743 @code{GOBJC} to @samp{yes}.  If output variable @code{OBJCFLAGS} was not
6744 already set, set it to @option{-g -O2} for the @acronym{GNU} Objective C
6745 compiler (@option{-O2} on systems where @command{gcc} does not accept
6746 @option{-g}), or @option{-g} for other compilers.
6747 @end defmac
6749 @defmac AC_PROG_OBJCCPP
6750 @acindex{PROG_OBJCCPP}
6751 @ovindex OBJCCPP
6752 Set output variable @code{OBJCCPP} to a command that runs the Objective C
6753 preprocessor.  If @samp{$OBJC -E} doesn't work, @file{/lib/cpp} is used.
6754 @end defmac
6757 @node Erlang Compiler and Interpreter
6758 @subsection Erlang Compiler and Interpreter Characteristics
6759 @cindex Erlang
6761 Autoconf defines the following macros for determining paths to the essential
6762 Erlang/OTP programs:
6764 @defmac AC_ERLANG_PATH_ERLC (@ovar{value-if-not-found}, @ovar{path})
6765 @acindex{ERLANG_PATH_ERLC}
6766 @ovindex ERLC
6767 @ovindex ERLCFLAGS
6768 Determine an Erlang compiler to use.  If @code{ERLC} is not already set in the
6769 environment, check for @command{erlc}.  Set output variable @code{ERLC} to the
6770 complete path of the compiler command found.  In addition, if @code{ERLCFLAGS}
6771 is not set in the environment, set it to an empty value.
6773 The two optional arguments have the same meaning as the two last arguments of
6774 macro @code{AC_PROG_PATH} for looking for the @command{erlc} program.  For
6775 example, to look for @command{erlc} only in the @file{/usr/lib/erlang/bin}
6776 directory:
6778 @example
6779 AC_ERLANG_PATH_ERLC([not found], [/usr/lib/erlang/bin])
6780 @end example
6781 @end defmac
6783 @defmac AC_ERLANG_NEED_ERLC (@ovar{path})
6784 @acindex{ERLANG_NEED_ERLC}
6785 A simplified variant of the @code{AC_ERLANG_PATH_ERLC} macro, that prints an
6786 error message and exits the @command{configure} script if the @command{erlc}
6787 program is not found.
6788 @end defmac
6790 @defmac AC_ERLANG_PATH_ERL (@ovar{value-if-not-found}, @ovar{path})
6791 @acindex{ERLANG_PATH_ERL}
6792 @ovindex ERL
6793 Determine an Erlang interpreter to use.  If @code{ERL} is not already set in the
6794 environment, check for @command{erl}.  Set output variable @code{ERL} to the
6795 complete path of the interpreter command found.
6797 The two optional arguments have the same meaning as the two last arguments of
6798 macro @code{AC_PROG_PATH} for looking for the @command{erl} program.  For
6799 example, to look for @command{erl} only in the @file{/usr/lib/erlang/bin}
6800 directory:
6802 @example
6803 AC_ERLANG_PATH_ERL([not found], [/usr/lib/erlang/bin])
6804 @end example
6805 @end defmac
6807 @defmac AC_ERLANG_NEED_ERL (@ovar{path})
6808 @acindex{ERLANG_NEED_ERL}
6809 A simplified variant of the @code{AC_ERLANG_PATH_ERL} macro, that prints an
6810 error message and exits the @command{configure} script if the @command{erl}
6811 program is not found.
6812 @end defmac
6815 @node Fortran Compiler
6816 @subsection Fortran Compiler Characteristics
6817 @cindex Fortran
6818 @cindex F77
6820 The Autoconf Fortran support is divided into two categories: legacy
6821 Fortran 77 macros (@code{F77}), and modern Fortran macros (@code{FC}).
6822 The former are intended for traditional Fortran 77 code, and have output
6823 variables like @code{F77}, @code{FFLAGS}, and @code{FLIBS}.  The latter
6824 are for newer programs that can (or must) compile under the newer
6825 Fortran standards, and have output variables like @code{FC},
6826 @code{FCFLAGS}, and @code{FCLIBS}.
6828 Except for two new macros @code{AC_FC_SRCEXT} and
6829 @code{AC_FC_FREEFORM} (see below), the @code{FC} and @code{F77} macros
6830 behave almost identically, and so they are documented together in this
6831 section.
6834 @defmac AC_PROG_F77 (@ovar{compiler-search-list})
6835 @acindex{PROG_F77}
6836 @ovindex F77
6837 @ovindex FFLAGS
6838 Determine a Fortran 77 compiler to use.  If @code{F77} is not already
6839 set in the environment, then check for @code{g77} and @code{f77}, and
6840 then some other names.  Set the output variable @code{F77} to the name
6841 of the compiler found.
6843 This macro may, however, be invoked with an optional first argument
6844 which, if specified, must be a blank-separated list of Fortran 77
6845 compilers to search for.  This just gives the user an opportunity to
6846 specify an alternative search list for the Fortran 77 compiler.  For
6847 example, if you didn't like the default order, then you could invoke
6848 @code{AC_PROG_F77} like this:
6850 @example
6851 AC_PROG_F77([fl32 f77 fort77 xlf g77 f90 xlf90])
6852 @end example
6854 If using @code{g77} (the @acronym{GNU} Fortran 77 compiler), then
6855 set the shell variable @code{G77} to @samp{yes}.
6856 If the output variable @code{FFLAGS} was not already set in the
6857 environment, then set it to @option{-g -02} for @code{g77} (or @option{-O2}
6858 where @code{g77} does not accept @option{-g}).  Otherwise, set
6859 @code{FFLAGS} to @option{-g} for all other Fortran 77 compilers.
6860 @end defmac
6862 @defmac AC_PROG_FC (@ovar{compiler-search-list}, @ovar{dialect})
6863 @acindex{PROG_FC}
6864 @ovindex FC
6865 @ovindex FCFLAGS
6866 Determine a Fortran compiler to use.  If @code{FC} is not already set in
6867 the environment, then @code{dialect} is a hint to indicate what Fortran
6868 dialect to search for; the default is to search for the newest available
6869 dialect.  Set the output variable @code{FC} to the name of the compiler
6870 found.
6872 By default, newer dialects are preferred over older dialects, but if
6873 @code{dialect} is specified then older dialects are preferred starting
6874 with the specified dialect.  @code{dialect} can currently be one of
6875 Fortran 77, Fortran 90, or Fortran 95.  However, this is only a hint of
6876 which compiler @emph{name} to prefer (e.g., @code{f90} or @code{f95}),
6877 and no attempt is made to guarantee that a particular language standard
6878 is actually supported.  Thus, it is preferable that you avoid the
6879 @code{dialect} option, and use AC_PROG_FC only for code compatible with
6880 the latest Fortran standard.
6882 This macro may, alternatively, be invoked with an optional first argument
6883 which, if specified, must be a blank-separated list of Fortran
6884 compilers to search for, just as in @code{AC_PROG_F77}.
6886 If the output variable @code{FCFLAGS} was not already set in the
6887 environment, then set it to @option{-g -02} for @acronym{GNU} @code{g77} (or
6888 @option{-O2} where @code{g77} does not accept @option{-g}).  Otherwise,
6889 set @code{FCFLAGS} to @option{-g} for all other Fortran compilers.
6890 @end defmac
6892 @defmac AC_PROG_F77_C_O
6893 @defmacx AC_PROG_FC_C_O
6894 @acindex{PROG_F77_C_O}
6895 @acindex{PROG_FC_C_O}
6896 @cvindex F77_NO_MINUS_C_MINUS_O
6897 @cvindex FC_NO_MINUS_C_MINUS_O
6898 Test whether the Fortran compiler accepts the options @option{-c} and
6899 @option{-o} simultaneously, and define @code{F77_NO_MINUS_C_MINUS_O} or
6900 @code{FC_NO_MINUS_C_MINUS_O}, respectively, if it does not.
6901 @end defmac
6903 The following macros check for Fortran compiler characteristics.
6904 To check for characteristics not listed here, use
6905 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
6906 @code{AC_RUN_IFELSE} (@pxref{Runtime}), making sure to first set the
6907 current language to Fortran 77 or Fortran via @code{AC_LANG([Fortran 77])}
6908 or @code{AC_LANG(Fortran)} (@pxref{Language Choice}).
6911 @defmac AC_F77_LIBRARY_LDFLAGS
6912 @defmacx AC_FC_LIBRARY_LDFLAGS
6913 @acindex{F77_LIBRARY_LDFLAGS}
6914 @ovindex FLIBS
6915 @acindex{FC_LIBRARY_LDFLAGS}
6916 @ovindex FCLIBS
6917 Determine the linker flags (e.g., @option{-L} and @option{-l}) for the
6918 @dfn{Fortran intrinsic and runtime libraries} that are required to
6919 successfully link a Fortran program or shared library.  The output
6920 variable @code{FLIBS} or @code{FCLIBS} is set to these flags (which
6921 should be included after @code{LIBS} when linking).
6923 This macro is intended to be used in those situations when it is
6924 necessary to mix, e.g., C++ and Fortran source code in a single
6925 program or shared library (@pxref{Mixing Fortran 77 With C and C++, , ,
6926 automake, @acronym{GNU} Automake}).
6928 For example, if object files from a C++ and Fortran compiler must be
6929 linked together, then the C++ compiler/linker must be used for linking
6930 (since special C++-ish things need to happen at link time like calling
6931 global constructors, instantiating templates, enabling exception
6932 support, etc.).
6934 However, the Fortran intrinsic and runtime libraries must be linked in
6935 as well, but the C++ compiler/linker doesn't know by default how to add
6936 these Fortran 77 libraries.  Hence, this macro was created to determine
6937 these Fortran libraries.
6939 The macros @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
6940 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} are probably also necessary to
6941 link C/C++ with Fortran; see below.
6942 @end defmac
6944 @defmac AC_F77_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
6945 @defmacx AC_FC_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
6946 @acindex{F77_DUMMY_MAIN}
6947 @cvindex F77_DUMMY_MAIN
6948 With many compilers, the Fortran libraries detected by
6949 @code{AC_F77_LIBRARY_LDFLAGS} or @code{AC_FC_LIBRARY_LDFLAGS} provide
6950 their own @code{main} entry function that initializes things like
6951 Fortran I/O, and which then calls a user-provided entry function named
6952 (say) @code{MAIN__} to run the user's program.  The
6953 @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
6954 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros figure out how to deal with
6955 this interaction.
6957 When using Fortran for purely numerical functions (no I/O, etc.)@: often
6958 one prefers to provide one's own @code{main} and skip the Fortran
6959 library initializations.  In this case, however, one may still need to
6960 provide a dummy @code{MAIN__} routine in order to prevent linking errors
6961 on some systems.  @code{AC_F77_DUMMY_MAIN} or @code{AC_FC_DUMMY_MAIN}
6962 detects whether any such routine is @emph{required} for linking, and
6963 what its name is; the shell variable @code{F77_DUMMY_MAIN} or
6964 @code{FC_DUMMY_MAIN} holds this name, @code{unknown} when no solution
6965 was found, and @code{none} when no such dummy main is needed.
6967 By default, @var{action-if-found} defines @code{F77_DUMMY_MAIN} or
6968 @code{FC_DUMMY_MAIN} to the name of this routine (e.g., @code{MAIN__})
6969 @emph{if} it is required.  @var{action-if-not-found} defaults to
6970 exiting with an error.
6972 In order to link with Fortran routines, the user's C/C++ program should
6973 then include the following code to define the dummy main if it is
6974 needed:
6976 @example
6977 #ifdef F77_DUMMY_MAIN
6978 #  ifdef __cplusplus
6979      extern "C"
6980 #  endif
6981    int F77_DUMMY_MAIN() @{ return 1; @}
6982 #endif
6983 @end example
6985 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
6987 Note that this macro is called automatically from @code{AC_F77_WRAPPERS}
6988 or @code{AC_FC_WRAPPERS}; there is generally no need to call it
6989 explicitly unless one wants to change the default actions.
6990 @end defmac
6992 @defmac AC_F77_MAIN
6993 @defmacx AC_FC_MAIN
6994 @acindex{F77_MAIN}
6995 @cvindex F77_MAIN
6996 @acindex{FC_MAIN}
6997 @cvindex FC_MAIN
6998 As discussed above, many Fortran libraries allow you to provide an entry
6999 point called (say) @code{MAIN__} instead of the usual @code{main}, which
7000 is then called by a @code{main} function in the Fortran libraries that
7001 initializes things like Fortran I/O@.  The
7002 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros detect whether it is
7003 @emph{possible} to utilize such an alternate main function, and defines
7004 @code{F77_MAIN} and @code{FC_MAIN} to the name of the function.  (If no
7005 alternate main function name is found, @code{F77_MAIN} and @code{FC_MAIN} are
7006 simply defined to @code{main}.)
7008 Thus, when calling Fortran routines from C that perform things like I/O,
7009 one should use this macro and name the "main" function
7010 @code{F77_MAIN} or @code{FC_MAIN} instead of @code{main}.
7011 @end defmac
7013 @defmac AC_F77_WRAPPERS
7014 @defmacx AC_FC_WRAPPERS
7015 @acindex{F77_WRAPPERS}
7016 @cvindex F77_FUNC
7017 @cvindex F77_FUNC_
7018 @acindex{FC_WRAPPERS}
7019 @cvindex FC_FUNC
7020 @cvindex FC_FUNC_
7021 Defines C macros @code{F77_FUNC (name, NAME)}, @code{FC_FUNC (name, NAME)},
7022 @code{F77_FUNC_(name, NAME)}, and @code{FC_FUNC_(name, NAME)} to properly
7023 mangle the names of C/C++ identifiers, and identifiers with underscores,
7024 respectively, so that they match the name-mangling scheme used by the
7025 Fortran compiler.
7027 Fortran is case-insensitive, and in order to achieve this the Fortran
7028 compiler converts all identifiers into a canonical case and format.  To
7029 call a Fortran subroutine from C or to write a C function that is
7030 callable from Fortran, the C program must explicitly use identifiers in
7031 the format expected by the Fortran compiler.  In order to do this, one
7032 simply wraps all C identifiers in one of the macros provided by
7033 @code{AC_F77_WRAPPERS} or @code{AC_FC_WRAPPERS}.  For example, suppose
7034 you have the following Fortran 77 subroutine:
7036 @example
7037       subroutine foobar (x, y)
7038       double precision x, y
7039       y = 3.14159 * x
7040       return
7041       end
7042 @end example
7044 You would then declare its prototype in C or C++ as:
7046 @example
7047 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
7048 #ifdef __cplusplus
7049 extern "C"  /* prevent C++ name mangling */
7050 #endif
7051 void FOOBAR_F77(double *x, double *y);
7052 @end example
7054 Note that we pass both the lowercase and uppercase versions of the
7055 function name to @code{F77_FUNC} so that it can select the right one.
7056 Note also that all parameters to Fortran 77 routines are passed as
7057 pointers (@pxref{Mixing Fortran 77 With C and C++, , , automake, @acronym{GNU}
7058 Automake}).
7060 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
7062 Although Autoconf tries to be intelligent about detecting the
7063 name-mangling scheme of the Fortran compiler, there may be Fortran
7064 compilers that it doesn't support yet.  In this case, the above code
7065 generates a compile-time error, but some other behavior
7066 (e.g., disabling Fortran-related features) can be induced by checking
7067 whether @code{F77_FUNC} or @code{FC_FUNC} is defined.
7069 Now, to call that routine from a C program, we would do something like:
7071 @example
7073     double x = 2.7183, y;
7074     FOOBAR_F77 (&x, &y);
7076 @end example
7078 If the Fortran identifier contains an underscore (e.g., @code{foo_bar}),
7079 you should use @code{F77_FUNC_} or @code{FC_FUNC_} instead of
7080 @code{F77_FUNC} or @code{FC_FUNC} (with the same arguments).  This is
7081 because some Fortran compilers mangle names differently if they contain
7082 an underscore.
7083 @end defmac
7085 @defmac AC_F77_FUNC (@var{name}, @ovar{shellvar})
7086 @defmacx AC_FC_FUNC (@var{name}, @ovar{shellvar})
7087 @acindex{F77_FUNC}
7088 @acindex{FC_FUNC}
7089 Given an identifier @var{name}, set the shell variable @var{shellvar} to
7090 hold the mangled version @var{name} according to the rules of the
7091 Fortran linker (see also @code{AC_F77_WRAPPERS} or
7092 @code{AC_FC_WRAPPERS}).  @var{shellvar} is optional; if it is not
7093 supplied, the shell variable is simply @var{name}.  The purpose of
7094 this macro is to give the caller a way to access the name-mangling
7095 information other than through the C preprocessor as above, for example,
7096 to call Fortran routines from some language other than C/C++.
7097 @end defmac
7099 @defmac AC_FC_SRCEXT (@var{ext}, @ovar{action-if-success}, @ovar{action-if-failure})
7100 @acindex{FC_SRCEXT}
7101 By default, the @code{FC} macros perform their tests using a @file{.f}
7102 extension for source-code files.  Some compilers, however, only enable
7103 newer language features for appropriately named files, e.g., Fortran 90
7104 features only for @file{.f90} files.  On the other hand, some other
7105 compilers expect all source files to end in @file{.f} and require
7106 special flags to support other file name extensions.  The
7107 @code{AC_FC_SRCEXT} macro deals with both of these issues.
7109 The @code{AC_FC_SRCEXT} tries to get the @code{FC} compiler to accept files
7110 ending with the extension .@var{ext} (i.e., @var{ext} does @emph{not}
7111 contain the dot).  If any special compiler flags are needed for this, it
7112 stores them in the output variable @code{FCFLAGS_}@var{ext}.  This
7113 extension and these flags are then used for all subsequent @code{FC} tests
7114 (until @code{AC_FC_SRCEXT} is called again).
7116 For example, you would use @code{AC_FC_SRCEXT(f90)} to employ the
7117 @file{.f90} extension in future tests, and it would set a
7118 @code{FCFLAGS_f90} output variable with any extra flags that are needed
7119 to compile such files.
7121 The @code{FCFLAGS_}@var{ext} can @emph{not} be simply absorbed into
7122 @code{FCFLAGS}, for two reasons based on the limitations of some
7123 compilers.  First, only one @code{FCFLAGS_}@var{ext} can be used at a
7124 time, so files with different extensions must be compiled separately.
7125 Second, @code{FCFLAGS_}@var{ext} must appear @emph{immediately} before
7126 the source-code file name when compiling.  So, continuing the example
7127 above, you might compile a @file{foo.f90} file in your makefile with the
7128 command:
7130 @example
7131 foo.o: foo.f90
7132      $(FC) -c $(FCFLAGS) $(FCFLAGS_f90) '$(srcdir)/foo.f90'
7133 @end example
7135 If @code{AC_FC_SRCEXT} succeeds in compiling files with the @var{ext}
7136 extension, it calls @var{action-if-success} (defaults to nothing).  If
7137 it fails, and cannot find a way to make the @code{FC} compiler accept such
7138 files, it calls @var{action-if-failure} (defaults to exiting with an
7139 error message).
7141 @end defmac
7143 @defmac AC_FC_FREEFORM (@ovar{action-if-success}, @ovar{action-if-failure})
7144 @acindex{FC_FREEFORM}
7146 The @code{AC_FC_FREEFORM} tries to ensure that the Fortran compiler
7147 (@code{$FC}) allows free-format source code (as opposed to the older
7148 fixed-format style from Fortran 77).  If necessary, it may add some
7149 additional flags to @code{FCFLAGS}.
7151 This macro is most important if you are using the default @file{.f}
7152 extension, since many compilers interpret this extension as indicating
7153 fixed-format source unless an additional flag is supplied.  If you
7154 specify a different extension with @code{AC_FC_SRCEXT}, such as
7155 @file{.f90} or @file{.f95}, then @code{AC_FC_FREEFORM} ordinarily
7156 succeeds without modifying @code{FCFLAGS}.
7158 If @code{AC_FC_FREEFORM} succeeds in compiling free-form source, it
7159 calls @var{action-if-success} (defaults to nothing).  If it fails, it
7160 calls @var{action-if-failure} (defaults to exiting with an error
7161 message).
7162 @end defmac
7164 @node System Services
7165 @section System Services
7167 The following macros check for operating system services or capabilities.
7169 @defmac AC_PATH_X
7170 @acindex{PATH_X}
7171 @evindex XMKMF
7172 @cindex X Window System
7173 Try to locate the X Window System include files and libraries.  If the
7174 user gave the command line options @option{--x-includes=@var{dir}} and
7175 @option{--x-libraries=@var{dir}}, use those directories.
7177 If either or both were not given, get the missing values by running
7178 @code{xmkmf} (or an executable pointed to by the @code{XMKMF}
7179 environment variable) on a trivial @file{Imakefile} and examining the
7180 makefile that it produces.  Setting @code{XMKMF} to @samp{false}
7181 disables this method.
7183 If this method fails to find the X Window System, @command{configure}
7184 looks for the files in several directories where they often reside.
7185 If either method is successful, set the shell variables
7186 @code{x_includes} and @code{x_libraries} to their locations, unless they
7187 are in directories the compiler searches by default.
7189 If both methods fail, or the user gave the command line option
7190 @option{--without-x}, set the shell variable @code{no_x} to @samp{yes};
7191 otherwise set it to the empty string.
7192 @end defmac
7194 @defmac AC_PATH_XTRA
7195 @acindex{PATH_XTRA}
7196 @ovindex X_CFLAGS
7197 @ovindex X_LIBS
7198 @ovindex X_EXTRA_LIBS
7199 @ovindex X_PRE_LIBS
7200 @cvindex X_DISPLAY_MISSING
7201 An enhanced version of @code{AC_PATH_X}.  It adds the C compiler flags
7202 that X needs to output variable @code{X_CFLAGS}, and the X linker flags
7203 to @code{X_LIBS}.  Define @code{X_DISPLAY_MISSING} if X is not
7204 available.
7206 This macro also checks for special libraries that some systems need in
7207 order to compile X programs.  It adds any that the system needs to
7208 output variable @code{X_EXTRA_LIBS}.  And it checks for special X11R6
7209 libraries that need to be linked with before @option{-lX11}, and adds
7210 any found to the output variable @code{X_PRE_LIBS}.
7212 @c This is an incomplete kludge.  Make a real way to do it.
7213 @c If you need to check for other X functions or libraries yourself, then
7214 @c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
7215 @c @code{LIBS} temporarily, like this: (FIXME - add example)
7216 @end defmac
7218 @defmac AC_SYS_INTERPRETER
7219 @acindex{SYS_INTERPRETER}
7220 Check whether the system supports starting scripts with a line of the
7221 form @samp{#!/bin/sh} to select the interpreter to use for the script.
7222 After running this macro, shell code in @file{configure.ac} can check
7223 the shell variable @code{interpval}; it is set to @samp{yes}
7224 if the system supports @samp{#!}, @samp{no} if not.
7225 @end defmac
7227 @defmac AC_SYS_LARGEFILE
7228 @acindex{SYS_LARGEFILE}
7229 @cvindex _FILE_OFFSET_BITS
7230 @cvindex _LARGE_FILES
7231 @ovindex CC
7232 @cindex Large file support
7233 @cindex LFS
7234 Arrange for
7235 @uref{http://www.unix-systems.org/@/version2/@/whatsnew/@/lfs20mar.html,
7236 large-file support}.  On some hosts, one must use special compiler
7237 options to build programs that can access large files.  Append any such
7238 options to the output variable @code{CC}.  Define
7239 @code{_FILE_OFFSET_BITS} and @code{_LARGE_FILES} if necessary.
7241 Large-file support can be disabled by configuring with the
7242 @option{--disable-largefile} option.
7244 If you use this macro, check that your program works even when
7245 @code{off_t} is wider than @code{long int}, since this is common when
7246 large-file support is enabled.  For example, it is not correct to print
7247 an arbitrary @code{off_t} value @code{X} with @code{printf ("%ld",
7248 (long int) X)}.
7250 The LFS introduced the @code{fseeko} and @code{ftello} functions to
7251 replace their C counterparts @code{fseek} and @code{ftell} that do not
7252 use @code{off_t}.  Take care to use @code{AC_FUNC_FSEEKO} to make their
7253 prototypes available when using them and large-file support is
7254 enabled.
7255 @end defmac
7257 @defmac AC_SYS_LONG_FILE_NAMES
7258 @acindex{SYS_LONG_FILE_NAMES}
7259 @cvindex HAVE_LONG_FILE_NAMES
7260 If the system supports file names longer than 14 characters, define
7261 @code{HAVE_LONG_FILE_NAMES}.
7262 @end defmac
7264 @defmac AC_SYS_POSIX_TERMIOS
7265 @acindex{SYS_POSIX_TERMIOS}
7266 @cindex Posix termios headers
7267 @cindex termios Posix headers
7268 Check to see if the Posix termios headers and functions are available on the
7269 system.  If so, set the shell variable @code{ac_cv_sys_posix_termios} to
7270 @samp{yes}.  If not, set the variable to @samp{no}.
7271 @end defmac
7273 @node Posix Variants
7274 @section Posix Variants
7276 The following macros check for certain operating systems that need
7277 special treatment for some programs, due to exceptional oddities in
7278 their header files or libraries.  These macros are warts; they will be
7279 replaced by a more systematic approach, based on the functions they make
7280 available or the environments they provide.
7282 @defmac AC_AIX
7283 @acindex{AIX}
7284 @cvindex _ALL_SOURCE
7285 If on @acronym{AIX}, define @code{_ALL_SOURCE}.
7286 Allows the use of some @acronym{BSD}
7287 functions.  Should be called before any macros that run the C compiler.
7288 @end defmac
7290 @defmac AC_GNU_SOURCE
7291 @acindex{GNU_SOURCE}
7292 @cvindex _GNU_SOURCE
7293 If using the @acronym{GNU} C library, define @code{_GNU_SOURCE}.
7294 Allows the use of some @acronym{GNU} functions.  Should be called
7295 before any macros that run the C compiler.
7296 @end defmac
7298 @defmac AC_ISC_POSIX
7299 @acindex{ISC_POSIX}
7300 @ovindex LIBS
7301 For @sc{interactive} Systems Corporation Unix, add @option{-lcposix} to output
7302 variable @code{LIBS} if necessary for Posix facilities.  Call this
7303 after @code{AC_PROG_CC} and before any other macros that use Posix
7304 interfaces.
7306 This macro is obsolescent, as @sc{interactive} Unix is obsolete, and Sun
7307 dropped support for it on 2006-07-23.  New programs need not use this
7308 macro.
7309 @end defmac
7311 @defmac AC_MINIX
7312 @acindex{MINIX}
7313 @cvindex _MINIX
7314 @cvindex _POSIX_SOURCE
7315 @cvindex _POSIX_1_SOURCE
7316 If on Minix, define @code{_MINIX} and @code{_POSIX_SOURCE} and define
7317 @code{_POSIX_1_SOURCE} to be 2.  This allows the use of Posix
7318 facilities.  Should be called before any macros that run the C compiler.
7319 @end defmac
7321 @defmac AC_USE_SYSTEM_EXTENSIONS
7322 @acindex{USE_SYSTEM_EXTENSIONS}
7323 @cvindex _ALL_SOURCE
7324 @cvindex _GNU_SOURCE
7325 @cvindex _MINIX
7326 @cvindex _POSIX_1_SOURCE
7327 @cvindex _POSIX_PTHREAD_SEMANTICS
7328 @cvindex _POSIX_SOURCE
7329 @cvindex _TANDEM_SOURCE
7330 @cvindex __EXTENSIONS__
7331 If possible, enable extensions to Posix on hosts that normally disable
7332 the extensions, typically due to standards-conformance namespace issues.
7333 This may involve defining @code{__EXTENSIONS__} and
7334 @code{_POSIX_PTHREAD_SEMANTICS}, which are macros used by Solaris.
7335 It also defines @code{_TANDEM_SOURCE} for the @acronym{HP} NonStop platform.
7336 This macro also has the combined effects of @code{AC_GNU_SOURCE},
7337 @code{AC_AIX}, and @code{AC_MINIX}.
7338 @end defmac
7341 @node Erlang Libraries
7342 @section Erlang Libraries
7343 @cindex Erlang, Library, checking
7345 The following macros check for an installation of Erlang/OTP, and for the
7346 presence of certain Erlang libraries.  All those macros require the
7347 configuration of an Erlang interpreter and an Erlang compiler
7348 (@pxref{Erlang Compiler and Interpreter}).
7350 @defmac AC_ERLANG_SUBST_ROOT_DIR
7351 @acindex{ERLANG_SUBST_ROOT_DIR}
7352 @ovindex ERLANG_ROOT_DIR
7354 Set the output variable @code{ERLANG_ROOT_DIR} to the path to the base directory
7355 in which Erlang/OTP is installed (as returned by Erlang's @code{code:root_dir/0}
7356 function).  The result of this test is cached if caching is enabled when running
7357 @command{configure}.
7358 @end defmac
7360 @defmac AC_ERLANG_SUBST_LIB_DIR
7361 @acindex{ERLANG_SUBST_LIB_DIR}
7362 @ovindex ERLANG_LIB_DIR
7364 Set the output variable @code{ERLANG_LIB_DIR} to the path of the library
7365 directory of Erlang/OTP (as returned by Erlang's
7366 @code{code:lib_dir/0} function), which subdirectories each contain an installed
7367 Erlang/OTP library.  The result of this test is cached if caching is enabled
7368 when running @command{configure}.
7369 @end defmac
7371 @defmac AC_ERLANG_CHECK_LIB (@var{library}, @ovar{action-if-found}, @ovar{action-if-not-found})
7372 @acindex{ERLANG_CHECK_LIB}
7373 @ovindex ERLANG_LIB_DIR_@var{library}
7374 @ovindex ERLANG_LIB_VER_@var{library}
7376 Test whether the Erlang/OTP library @var{library} is installed by
7377 calling Erlang's @code{code:lib_dir/1} function.  The result of this
7378 test is cached if caching is enabled when running @command{configure}.
7379 @var{action-if-found} is a list of shell commands to run if the library
7380 is installed; @var{action-if-not-found} is a list of shell commands to
7381 run if it is not.  Additionally, if the library is installed, the output
7382 variable @samp{ERLANG_LIB_DIR_@var{library}} is set to the path to the
7383 library installation directory, and the output variable
7384 @samp{ERLANG_LIB_VER_@var{library}} is set to the version number that is
7385 part of the subdirectory name, if it is in the standard form
7386 (@code{@var{library}-@var{version}}).  If the directory name does not
7387 have a version part, @samp{ERLANG_LIB_VER_@var{library}} is set to the
7388 empty string.  If the library is not installed,
7389 @samp{ERLANG_LIB_DIR_@var{library}} and
7390 @samp{ERLANG_LIB_VER_@var{library}} are set to @code{"not found"}.  For
7391 example, to check if library @code{stdlib} is installed:
7393 @example
7394 AC_ERLANG_CHECK_LIB([stdlib],
7395   [echo "stdlib version \"$ERLANG_LIB_VER_stdlib\""
7396    echo "is installed in \"$ERLANG_LIB_DIR_stdlib\""],
7397   [AC_MSG_ERROR([stdlib was not found!])])
7398 @end example
7399 @end defmac
7401 In addition to the above macros, which test installed Erlang libraries, the
7402 following macros determine the paths to the directories into which newly built
7403 Erlang libraries are to be installed:
7405 @defmac AC_ERLANG_SUBST_INSTALL_LIB_DIR
7406 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
7407 @ovindex ERLANG_INSTALL_LIB_DIR
7409 Set the @code{ERLANG_INSTALL_LIB_DIR} output variable to the directory into
7410 which every built Erlang library should be installed in a separate subdirectory.
7411 If this variable is not set in the environment when @command{configure} runs,
7412 its default value is @code{$ERLANG_LIB_DIR}, which value is set by the
7413 @code{AC_ERLANG_SUBST_LIB_DIR} macro.
7414 @end defmac
7416 @defmac AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR (@var{library}, @var{version})
7417 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
7418 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
7420 Set the @samp{ERLANG_INSTALL_LIB_DIR_@var{library}} output variable to the
7421 directory into which the built Erlang library @var{library} version
7422 @var{version} should be installed.  If this variable is not set in the
7423 environment when @command{configure} runs, its default value is
7424 @samp{$ERLANG_INSTALL_LIB_DIR/@var{library}-@var{version}}, the value of the
7425 @code{ERLANG_INSTALL_LIB_DIR} variable being set by the
7426 @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR} macro.
7427 @end defmac
7433 @c ========================================================= Writing Tests
7435 @node Writing Tests
7436 @chapter Writing Tests
7438 If the existing feature tests don't do something you need, you have to
7439 write new ones.  These macros are the building blocks.  They provide
7440 ways for other macros to check whether various kinds of features are
7441 available and report the results.
7443 This chapter contains some suggestions and some of the reasons why the
7444 existing tests are written the way they are.  You can also learn a lot
7445 about how to write Autoconf tests by looking at the existing ones.  If
7446 something goes wrong in one or more of the Autoconf tests, this
7447 information can help you understand the assumptions behind them, which
7448 might help you figure out how to best solve the problem.
7450 These macros check the output of the compiler system of the current
7451 language (@pxref{Language Choice}).  They do not cache the results of
7452 their tests for future use (@pxref{Caching Results}), because they don't
7453 know enough about the information they are checking for to generate a
7454 cache variable name.  They also do not print any messages, for the same
7455 reason.  The checks for particular kinds of features call these macros
7456 and do cache their results and print messages about what they're
7457 checking for.
7459 When you write a feature test that could be applicable to more than one
7460 software package, the best thing to do is encapsulate it in a new macro.
7461 @xref{Writing Autoconf Macros}, for how to do that.
7463 @menu
7464 * Language Choice::             Selecting which language to use for testing
7465 * Writing Test Programs::       Forging source files for compilers
7466 * Running the Preprocessor::    Detecting preprocessor symbols
7467 * Running the Compiler::        Detecting language or header features
7468 * Running the Linker::          Detecting library features
7469 * Runtime::                     Testing for runtime features
7470 * Systemology::                 A zoology of operating systems
7471 * Multiple Cases::              Tests for several possible values
7472 @end menu
7474 @node Language Choice
7475 @section Language Choice
7476 @cindex Language
7478 Autoconf-generated @command{configure} scripts check for the C compiler and
7479 its features by default.  Packages that use other programming languages
7480 (maybe more than one, e.g., C and C++) need to test features of the
7481 compilers for the respective languages.  The following macros determine
7482 which programming language is used in the subsequent tests in
7483 @file{configure.ac}.
7485 @defmac AC_LANG (@var{language})
7486 Do compilation tests using the compiler, preprocessor, and file
7487 extensions for the specified @var{language}.
7489 Supported languages are:
7491 @table @samp
7492 @item C
7493 Do compilation tests using @code{CC} and @code{CPP} and use extension
7494 @file{.c} for test programs.  Use compilation flags: @code{CPPFLAGS} with
7495 @code{CPP}, and both @code{CPPFLAGS} and @code{CFLAGS} with @code{CC}.
7497 @item C++
7498 Do compilation tests using @code{CXX} and @code{CXXCPP} and use
7499 extension @file{.C} for test programs.  Use compilation flags:
7500 @code{CPPFLAGS} with @code{CXXPP}, and both @code{CPPFLAGS} and
7501 @code{CXXFLAGS} with @code{CXX}.
7503 @item Fortran 77
7504 Do compilation tests using @code{F77} and use extension @file{.f} for
7505 test programs.  Use compilation flags: @code{FFLAGS}.
7507 @item Fortran
7508 Do compilation tests using @code{FC} and use extension @file{.f} (or
7509 whatever has been set by @code{AC_FC_SRCEXT}) for test programs.  Use
7510 compilation flags: @code{FCFLAGS}.
7512 @item Erlang
7513 @ovindex ERLC
7514 @ovindex ERL
7515 @ovindex ERLCFLAGS
7516 Compile and execute tests using @code{ERLC} and @code{ERL} and use extension
7517 @file{.erl} for test Erlang modules.  Use compilation flags: @code{ERLCFLAGS}.
7519 @item Objective C
7520 Do compilation tests using @code{OBJC} and @code{OBJCCPP} and use
7521 extension @file{.m} for test programs.  Use compilation flags:
7522 @code{CPPFLAGS} with @code{OBJCPP}, and both @code{CPPFLAGS} and
7523 @code{OBJCFLAGS} with @code{OBJC}.
7524 @end table
7525 @end defmac
7527 @defmac AC_LANG_PUSH (@var{language})
7528 @acindex{LANG_PUSH}
7529 Remember the current language (as set by @code{AC_LANG}) on a stack, and
7530 then select the @var{language}.  Use this macro and @code{AC_LANG_POP}
7531 in macros that need to temporarily switch to a particular language.
7532 @end defmac
7534 @defmac AC_LANG_POP (@ovar{language})
7535 @acindex{LANG_POP}
7536 Select the language that is saved on the top of the stack, as set by
7537 @code{AC_LANG_PUSH}, and remove it from the stack.
7539 If given, @var{language} specifies the language we just @emph{quit}.  It
7540 is a good idea to specify it when it's known (which should be the
7541 case@dots{}), since Autoconf detects inconsistencies.
7543 @example
7544 AC_LANG_PUSH([Fortran 77])
7545 # Perform some tests on Fortran 77.
7546 # @dots{}
7547 AC_LANG_POP([Fortran 77])
7548 @end example
7549 @end defmac
7551 @defmac AC_LANG_ASSERT (@var{language})
7552 @acindex{LANG_ASSERT} Check statically that the current language is
7553 @var{language}.  You should use this in your language specific macros
7554 to avoid that they be called with an inappropriate language.
7556 This macro runs only at @command{autoconf} time, and incurs no cost at
7557 @command{configure} time.  Sadly enough and because Autoconf is a two
7558 layer language @footnote{Because M4 is not aware of Sh code,
7559 especially conditionals, some optimizations that look nice statically
7560 may produce incorrect results at runtime.}, the macros
7561 @code{AC_LANG_PUSH} and @code{AC_LANG_POP} cannot be ``optimizing'',
7562 therefore as much as possible you ought to avoid using them to wrap
7563 your code, rather, require from the user to run the macro with a
7564 correct current language, and check it with @code{AC_LANG_ASSERT}.
7565 And anyway, that may help the user understand she is running a Fortran
7566 macro while expecting a result about her Fortran 77 compiler@dots{}
7567 @end defmac
7570 @defmac AC_REQUIRE_CPP
7571 @acindex{REQUIRE_CPP}
7572 Ensure that whichever preprocessor would currently be used for tests has
7573 been found.  Calls @code{AC_REQUIRE} (@pxref{Prerequisite Macros}) with an
7574 argument of either @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP},
7575 depending on which language is current.
7576 @end defmac
7579 @node Writing Test Programs
7580 @section Writing Test Programs
7582 Autoconf tests follow a common scheme: feed some program with some
7583 input, and most of the time, feed a compiler with some source file.
7584 This section is dedicated to these source samples.
7586 @menu
7587 * Guidelines::                  General rules for writing test programs
7588 * Test Functions::              Avoiding pitfalls in test programs
7589 * Generating Sources::          Source program boilerplate
7590 @end menu
7592 @node Guidelines
7593 @subsection Guidelines for Test Programs
7595 The most important rule to follow when writing testing samples is:
7597 @center @emph{Look for realism.}
7599 This motto means that testing samples must be written with the same
7600 strictness as real programs are written.  In particular, you should
7601 avoid ``shortcuts'' and simplifications.
7603 Don't just play with the preprocessor if you want to prepare a
7604 compilation.  For instance, using @command{cpp} to check whether a header is
7605 functional might let your @command{configure} accept a header which
7606 causes some @emph{compiler} error.  Do not hesitate to check a header with
7607 other headers included before, especially required headers.
7609 Make sure the symbols you use are properly defined, i.e., refrain for
7610 simply declaring a function yourself instead of including the proper
7611 header.
7613 Test programs should not write to standard output.  They
7614 should exit with status 0 if the test succeeds, and with status 1
7615 otherwise, so that success
7616 can be distinguished easily from a core dump or other failure;
7617 segmentation violations and other failures produce a nonzero exit
7618 status.  Unless you arrange for @code{exit} to be declared, test
7619 programs should @code{return}, not @code{exit}, from @code{main},
7620 because on many systems @code{exit} is not declared by default.
7622 Test programs can use @code{#if} or @code{#ifdef} to check the values of
7623 preprocessor macros defined by tests that have already run.  For
7624 example, if you call @code{AC_HEADER_STDBOOL}, then later on in
7625 @file{configure.ac} you can have a test program that includes
7626 @file{stdbool.h} conditionally:
7628 @example
7629 @group
7630 #ifdef HAVE_STDBOOL_H
7631 # include <stdbool.h>
7632 #endif
7633 @end group
7634 @end example
7636 Both @code{#if HAVE_STDBOOL_H} and @code{#ifdef HAVE_STDBOOL_H} will
7637 work with any standard C compiler.  Some developers prefer @code{#if}
7638 because it is easier to read, while others prefer @code{#ifdef} because
7639 it avoids diagnostics with picky compilers like @acronym{GCC} with the
7640 @option{-Wundef} option.
7642 If a test program needs to use or create a data file, give it a name
7643 that starts with @file{conftest}, such as @file{conftest.data}.  The
7644 @command{configure} script cleans up by running @samp{rm -f -r conftest*}
7645 after running test programs and if the script is interrupted.
7647 @node Test Functions
7648 @subsection Test Functions
7650 These days it's safe to assume support for function prototypes
7651 (introduced in C89).
7653 Functions that test programs declare should also be conditionalized for
7654 C++, which requires @samp{extern "C"} prototypes.  Make sure to not
7655 include any header files containing clashing prototypes.
7657 @example
7658 #ifdef __cplusplus
7659 extern "C"
7660 #endif
7661 void *valloc (size_t);
7662 @end example
7664 If a test program calls a function with invalid parameters (just to see
7665 whether it exists), organize the program to ensure that it never invokes
7666 that function.  You can do this by calling it in another function that is
7667 never invoked.  You can't do it by putting it after a call to
7668 @code{exit}, because @acronym{GCC} version 2 knows that @code{exit}
7669 never returns
7670 and optimizes out any code that follows it in the same block.
7672 If you include any header files, be sure to call the functions
7673 relevant to them with the correct number of arguments, even if they are
7674 just 0, to avoid compilation errors due to prototypes.  @acronym{GCC}
7675 version 2
7676 has internal prototypes for several functions that it automatically
7677 inlines; for example, @code{memcpy}.  To avoid errors when checking for
7678 them, either pass them the correct number of arguments or redeclare them
7679 with a different return type (such as @code{char}).
7682 @node Generating Sources
7683 @subsection Generating Sources
7685 Autoconf provides a set of macros that can be used to generate test
7686 source files.  They are written to be language generic, i.e., they
7687 actually depend on the current language (@pxref{Language Choice}) to
7688 ``format'' the output properly.
7691 @defmac AC_LANG_CONFTEST (@var{source})
7692 @acindex{LANG_CONFTEST}
7693 Save the @var{source} text in the current test source file:
7694 @file{conftest.@var{extension}} where the @var{extension} depends on the
7695 current language.
7697 Note that the @var{source} is evaluated exactly once, like regular
7698 Autoconf macro arguments, and therefore (i) you may pass a macro
7699 invocation, (ii) if not, be sure to double quote if needed.
7700 @end defmac
7702 @defmac AC_LANG_SOURCE (@var{source})
7703 @acindex{LANG_SOURCE}
7704 Expands into the @var{source}, with the definition of
7705 all the @code{AC_DEFINE} performed so far.
7706 @end defmac
7708 For instance executing (observe the double quotation!):
7710 @example
7711 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7712 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7713   [Greetings string.])
7714 AC_LANG(C)
7715 AC_LANG_CONFTEST(
7716    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])])
7717 gcc -E -dD -o - conftest.c
7718 @end example
7720 @noindent
7721 results in:
7723 @example
7724 @dots{}
7725 # 1 "conftest.c"
7727 #define PACKAGE_NAME "Hello"
7728 #define PACKAGE_TARNAME "hello"
7729 #define PACKAGE_VERSION "1.0"
7730 #define PACKAGE_STRING "Hello 1.0"
7731 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
7732 #define HELLO_WORLD "Hello, World\n"
7734 const char hw[] = "Hello, World\n";
7735 @end example
7737 When the test language is Fortran or Erlang, the @code{AC_DEFINE} definitions
7738 are not automatically translated into constants in the source code by this
7739 macro.
7741 @defmac AC_LANG_PROGRAM (@var{prologue}, @var{body})
7742 @acindex{LANG_PROGRAM}
7743 Expands into a source file which consists of the @var{prologue}, and
7744 then @var{body} as body of the main function (e.g., @code{main} in
7745 C).  Since it uses @code{AC_LANG_SOURCE}, the features of the latter are
7746 available.
7747 @end defmac
7749 For instance:
7751 @example
7752 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7753 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7754   [Greetings string.])
7755 AC_LANG_CONFTEST(
7756 [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
7757                  [[fputs (hw, stdout);]])])
7758 gcc -E -dD -o - conftest.c
7759 @end example
7761 @noindent
7762 results in:
7764 @example
7765 @dots{}
7766 # 1 "conftest.c"
7768 #define PACKAGE_NAME "Hello"
7769 #define PACKAGE_TARNAME "hello"
7770 #define PACKAGE_VERSION "1.0"
7771 #define PACKAGE_STRING "Hello 1.0"
7772 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
7773 #define HELLO_WORLD "Hello, World\n"
7775 const char hw[] = "Hello, World\n";
7777 main ()
7779 fputs (hw, stdout);
7780   ;
7781   return 0;
7783 @end example
7785 In Erlang tests, the created source file is that of an Erlang module called
7786 @code{conftest} (@file{conftest.erl}).  This module defines and exports at least
7787 one @code{start/0} function, which is called to perform the test.  The
7788 @var{prologue} is optional code that is inserted between the module header and
7789 the @code{start/0} function definition.  @var{body} is the body of the
7790 @code{start/0} function without the final period (@pxref{Runtime}, about
7791 constraints on this function's behavior).
7793 For instance:
7795 @example
7796 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7797 AC_LANG(Erlang)
7798 AC_LANG_CONFTEST(
7799 [AC_LANG_PROGRAM([[-define(HELLO_WORLD, "Hello, world!").]],
7800                  [[io:format("~s~n", [?HELLO_WORLD])]])])
7801 cat conftest.erl
7802 @end example
7804 @noindent
7805 results in:
7807 @example
7808 -module(conftest).
7809 -export([start/0]).
7810 -define(HELLO_WORLD, "Hello, world!").
7811 start() ->
7812 io:format("~s~n", [?HELLO_WORLD])
7814 @end example
7816 @defmac AC_LANG_CALL (@var{prologue}, @var{function})
7817 @acindex{LANG_CALL}
7818 Expands into a source file which consists of the @var{prologue}, and
7819 then a call to the @var{function} as body of the main function (e.g.,
7820 @code{main} in C).  Since it uses @code{AC_LANG_PROGRAM}, the feature
7821 of the latter are available.
7823 This function will probably be replaced in the future by a version
7824 which would enable specifying the arguments.  The use of this macro is
7825 not encouraged, as it violates strongly the typing system.
7827 This macro cannot be used for Erlang tests.
7828 @end defmac
7830 @defmac AC_LANG_FUNC_LINK_TRY (@var{function})
7831 @acindex{LANG_FUNC_LINK_TRY}
7832 Expands into a source file which uses the @var{function} in the body of
7833 the main function (e.g., @code{main} in C).  Since it uses
7834 @code{AC_LANG_PROGRAM}, the features of the latter are available.
7836 As @code{AC_LANG_CALL}, this macro is documented only for completeness.
7837 It is considered to be severely broken, and in the future will be
7838 removed in favor of actual function calls (with properly typed
7839 arguments).
7841 This macro cannot be used for Erlang tests.
7842 @end defmac
7844 @node Running the Preprocessor
7845 @section Running the Preprocessor
7847 Sometimes one might need to run the preprocessor on some source file.
7848 @emph{Usually it is a bad idea}, as you typically need to @emph{compile}
7849 your project, not merely run the preprocessor on it; therefore you
7850 certainly want to run the compiler, not the preprocessor.  Resist the
7851 temptation of following the easiest path.
7853 Nevertheless, if you need to run the preprocessor, then use
7854 @code{AC_PREPROC_IFELSE}.
7856 The macros described in this section cannot be used for tests in Erlang or
7857 Fortran, since those languages require no preprocessor.
7859 @defmac AC_PREPROC_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7860 @acindex{PREPROC_IFELSE}
7861 Run the preprocessor of the current language (@pxref{Language Choice})
7862 on the @var{input}, run the shell commands @var{action-if-true} on
7863 success, @var{action-if-false} otherwise.  The @var{input} can be made
7864 by @code{AC_LANG_PROGRAM} and friends.
7866 This macro uses @code{CPPFLAGS}, but not @code{CFLAGS}, because
7867 @option{-g}, @option{-O}, etc.@: are not valid options to many C
7868 preprocessors.
7870 It is customary to report unexpected failures with
7871 @code{AC_MSG_FAILURE}.
7872 @end defmac
7874 For instance:
7876 @example
7877 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7878 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7879   [Greetings string.])
7880 AC_PREPROC_IFELSE(
7881    [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
7882                     [[fputs (hw, stdout);]])],
7883    [AC_MSG_RESULT([OK])],
7884    [AC_MSG_FAILURE([unexpected preprocessor failure])])
7885 @end example
7887 @noindent
7888 results in:
7890 @example
7891 checking for gcc... gcc
7892 checking for C compiler default output file name... a.out
7893 checking whether the C compiler works... yes
7894 checking whether we are cross compiling... no
7895 checking for suffix of executables...
7896 checking for suffix of object files... o
7897 checking whether we are using the GNU C compiler... yes
7898 checking whether gcc accepts -g... yes
7899 checking for gcc option to accept ISO C89... none needed
7900 checking how to run the C preprocessor... gcc -E
7902 @end example
7904 @sp 1
7906 The macro @code{AC_TRY_CPP} (@pxref{Obsolete Macros}) used to play the
7907 role of @code{AC_PREPROC_IFELSE}, but double quotes its argument, making
7908 it impossible to use it to elaborate sources.  You are encouraged to
7909 get rid of your old use of the macro @code{AC_TRY_CPP} in favor of
7910 @code{AC_PREPROC_IFELSE}, but, in the first place, are you sure you need
7911 to run the @emph{preprocessor} and not the compiler?
7913 @defmac AC_EGREP_HEADER (@var{pattern}, @var{header-file}, @var{action-if-found}, @ovar{action-if-not-found})
7914 @acindex{EGREP_HEADER}
7915 If the output of running the preprocessor on the system header file
7916 @var{header-file} matches the extended regular expression
7917 @var{pattern}, execute shell commands @var{action-if-found}, otherwise
7918 execute @var{action-if-not-found}.
7919 @end defmac
7921 @defmac AC_EGREP_CPP (@var{pattern}, @var{program}, @ovar{action-if-found}, @ovar{action-if-not-found})
7922 @acindex{EGREP_CPP}
7923 @var{program} is the text of a C or C++ program, on which shell
7924 variable, back quote, and backslash substitutions are performed.  If the
7925 output of running the preprocessor on @var{program} matches the
7926 extended regular expression @var{pattern}, execute shell commands
7927 @var{action-if-found}, otherwise execute @var{action-if-not-found}.
7928 @end defmac
7932 @node Running the Compiler
7933 @section Running the Compiler
7935 To check for a syntax feature of the current language's (@pxref{Language
7936 Choice}) compiler, such as whether it recognizes a certain keyword, or
7937 simply to try some library feature, use @code{AC_COMPILE_IFELSE} to try
7938 to compile a small program that uses that feature.
7940 @defmac AC_COMPILE_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7941 @acindex{COMPILE_IFELSE}
7942 Run the compiler and compilation flags of the current language
7943 (@pxref{Language Choice}) on the @var{input}, run the shell commands
7944 @var{action-if-true} on success, @var{action-if-false} otherwise.  The
7945 @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
7947 It is customary to report unexpected failures with
7948 @code{AC_MSG_FAILURE}.  This macro does not try to link; use
7949 @code{AC_LINK_IFELSE} if you need to do that (@pxref{Running the
7950 Linker}).
7951 @end defmac
7953 @ovindex ERL
7954 For tests in Erlang, the @var{input} must be the source code of a module named
7955 @code{conftest}.  @code{AC_COMPILE_IFELSE} generates a @file{conftest.beam}
7956 file that can be interpreted by the Erlang virtual machine (@code{ERL}).  It is
7957 recommended to use @code{AC_LANG_PROGRAM} to specify the test program, to ensure
7958 that the Erlang module has the right name.
7960 @node Running the Linker
7961 @section Running the Linker
7963 To check for a library, a function, or a global variable, Autoconf
7964 @command{configure} scripts try to compile and link a small program that
7965 uses it.  This is unlike Metaconfig, which by default uses @code{nm} or
7966 @code{ar} on the C library to try to figure out which functions are
7967 available.  Trying to link with the function is usually a more reliable
7968 approach because it avoids dealing with the variations in the options
7969 and output formats of @code{nm} and @code{ar} and in the location of the
7970 standard libraries.  It also allows configuring for cross-compilation or
7971 checking a function's runtime behavior if needed.  On the other hand,
7972 it can be slower than scanning the libraries once, but accuracy is more
7973 important than speed.
7975 @code{AC_LINK_IFELSE} is used to compile test programs to test for
7976 functions and global variables.  It is also used by @code{AC_CHECK_LIB}
7977 to check for libraries (@pxref{Libraries}), by adding the library being
7978 checked for to @code{LIBS} temporarily and trying to link a small
7979 program.
7982 @defmac AC_LINK_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7983 @acindex{LINK_IFELSE}
7984 Run the compiler (and compilation flags) and the linker of the current
7985 language (@pxref{Language Choice}) on the @var{input}, run the shell
7986 commands @var{action-if-true} on success, @var{action-if-false}
7987 otherwise.  The @var{input} can be made by @code{AC_LANG_PROGRAM} and
7988 friends.
7990 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
7991 current compilation flags.
7993 It is customary to report unexpected failures with
7994 @code{AC_MSG_FAILURE}.  This macro does not try to execute the program;
7995 use @code{AC_RUN_IFELSE} if you need to do that (@pxref{Runtime}).
7996 @end defmac
7998 The @code{AC_LINK_IFELSE} macro cannot be used for Erlang tests, since Erlang
7999 programs are interpreted and do not require linking.
8003 @node Runtime
8004 @section Checking Runtime Behavior
8006 Sometimes you need to find out how a system performs at runtime, such
8007 as whether a given function has a certain capability or bug.  If you
8008 can, make such checks when your program runs instead of when it is
8009 configured.  You can check for things like the machine's endianness when
8010 your program initializes itself.
8012 If you really need to test for a runtime behavior while configuring,
8013 you can write a test program to determine the result, and compile and
8014 run it using @code{AC_RUN_IFELSE}.  Avoid running test programs if
8015 possible, because this prevents people from configuring your package for
8016 cross-compiling.
8018 @defmac AC_RUN_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-cross-compiling})
8019 @acindex{RUN_IFELSE}
8020 If @var{program} compiles and links successfully and returns an exit
8021 status of 0 when executed, run shell commands @var{action-if-true}.
8022 Otherwise, run shell commands @var{action-if-false}.
8024 The @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
8025 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
8026 compilation flags of the current language (@pxref{Language Choice}).
8028 If the compiler being used does not produce executables that run on the
8029 system where @command{configure} is being run, then the test program is
8030 not run.  If the optional shell commands @var{action-if-cross-compiling}
8031 are given, they are run instead.  Otherwise, @command{configure} prints
8032 an error message and exits.
8034 In the @var{action-if-false} section, the failing exit status is
8035 available in the shell variable @samp{$?}.  This exit status might be
8036 that of a failed compilation, or it might be that of a failed program
8037 execution.
8039 It is customary to report unexpected failures with
8040 @code{AC_MSG_FAILURE}.
8041 @end defmac
8043 Try to provide a pessimistic default value to use when cross-compiling
8044 makes runtime tests impossible.  You do this by passing the optional
8045 last argument to @code{AC_RUN_IFELSE}.  @command{autoconf} prints a
8046 warning message when creating @command{configure} each time it
8047 encounters a call to @code{AC_RUN_IFELSE} with no
8048 @var{action-if-cross-compiling} argument given.  You may ignore the
8049 warning, though users cannot configure your package for
8050 cross-compiling.  A few of the macros distributed with Autoconf produce
8051 this warning message.
8053 To configure for cross-compiling you can also choose a value for those
8054 parameters based on the canonical system name (@pxref{Manual
8055 Configuration}).  Alternatively, set up a test results cache file with
8056 the correct values for the host system (@pxref{Caching Results}).
8058 @ovindex cross_compiling
8059 To provide a default for calls of @code{AC_RUN_IFELSE} that are embedded
8060 in other macros, including a few of the ones that come with Autoconf,
8061 you can test whether the shell variable @code{cross_compiling} is set to
8062 @samp{yes}, and then use an alternate method to get the results instead
8063 of calling the macros.
8065 A C or C++ runtime test should be portable.
8066 @xref{Portable C and C++}.
8068 Erlang tests must exit themselves the Erlang VM by calling the @code{halt/1}
8069 function: the given status code is used to determine the success of the test
8070 (status is @code{0}) or its failure (status is different than @code{0}), as
8071 explained above.  It must be noted that data output through the standard output
8072 (e.g., using @code{io:format/2}) may be truncated when halting the VM.
8073 Therefore, if a test must output configuration information, it is recommended
8074 to create and to output data into the temporary file named @file{conftest.out},
8075 using the functions of module @code{file}.  The @code{conftest.out} file is
8076 automatically deleted by the @code{AC_RUN_IFELSE} macro.  For instance, a
8077 simplified implementation of Autoconf's @code{AC_ERLANG_SUBST_LIB_DIR} macro is:
8079 @example
8080 AC_INIT([LibdirTest], [1.0], [bug-libdirtest@@example.org])
8081 AC_ERLANG_NEED_ERL
8082 AC_LANG(Erlang)
8083 AC_RUN_IFELSE(
8084   [AC_LANG_PROGRAM([], [dnl
8085     file:write_file("conftest.out", code:lib_dir()),
8086     halt(0)])],
8087   [echo "code:lib_dir() returned: `cat conftest.out`"],
8088   [AC_MSG_FAILURE([test Erlang program execution failed])])
8089 @end example
8092 @node Systemology
8093 @section Systemology
8094 @cindex Systemology
8096 This section aims at presenting some systems and pointers to
8097 documentation.  It may help you addressing particular problems reported
8098 by users.
8100 @uref{http://www.opengroup.org/susv3, Posix-conforming systems} are
8101 derived from the @uref{http://www.bell-labs.com/history/unix/, Unix
8102 operating system}.
8104 The @uref{http://bhami.com/rosetta.html, Rosetta Stone for Unix}
8105 contains a table correlating the features of various Posix-conforming
8106 systems.  @uref{http://www.levenez.com/unix/, Unix History} is a
8107 simplified diagram of how many Unix systems were derived from each
8108 other.
8110 @uref{http://heirloom.sourceforge.net/, The Heirloom Project}
8111 provides some variants of traditional implementations of Unix utilities.
8113 @table @asis
8114 @item Darwin
8115 @cindex Darwin
8116 Darwin is also known as Mac OS X@.  Beware that the file system @emph{can} be
8117 case-preserving, but case insensitive.  This can cause nasty problems,
8118 since for instance the installation attempt for a package having an
8119 @file{INSTALL} file can result in @samp{make install} report that
8120 nothing was to be done!
8122 That's all dependent on whether the file system is a UFS (case
8123 sensitive) or HFS+ (case preserving).  By default Apple wants you to
8124 install the OS on HFS+.  Unfortunately, there are some pieces of
8125 software which really need to be built on UFS@.  We may want to rebuild
8126 Darwin to have both UFS and HFS+ available (and put the /local/build
8127 tree on the UFS).
8129 @item @acronym{QNX} 4.25
8130 @cindex @acronym{QNX} 4.25
8131 @c FIXME: Please, if you feel like writing something more precise,
8132 @c it'd be great.  In particular, I can't understand the difference with
8133 @c QNX Neutrino.
8134 @acronym{QNX} is a realtime operating system running on Intel architecture
8135 meant to be scalable from the small embedded systems to the hundred
8136 processor super-computer.  It claims to be Posix certified.  More
8137 information is available on the
8138 @uref{http://www.qnx.com/, @acronym{QNX} home page}.
8140 @item Tru64
8141 @cindex Tru64
8142 @uref{http://h30097.www3.hp.com/@/docs/,
8143 Documentation of several versions of Tru64} is available in different
8144 formats.
8146 @item Unix version 7
8147 @cindex Unix version 7
8148 @cindex V7
8149 Officially this was called the ``Seventh Edition'' of ``the @sc{unix}
8150 time-sharing system'' but we use the more-common name ``Unix version 7''.
8151 Documentation is available in the
8152 @uref{http://plan9.bell-labs.com/@/7thEdMan/, Unix Seventh Edition Manual}.
8153 Previous versions of Unix are called ``Unix version 6'', etc., but
8154 they were not as widely used.
8155 @end table
8158 @node Multiple Cases
8159 @section Multiple Cases
8161 Some operations are accomplished in several possible ways, depending on
8162 the OS variant.  Checking for them essentially requires a ``case
8163 statement''.  Autoconf does not directly provide one; however, it is
8164 easy to simulate by using a shell variable to keep track of whether a
8165 way to perform the operation has been found yet.
8167 Here is an example that uses the shell variable @code{fstype} to keep
8168 track of whether the remaining cases need to be checked.
8170 @example
8171 @group
8172 AC_MSG_CHECKING([how to get file system type])
8173 fstype=no
8174 # The order of these tests is important.
8175 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statvfs.h>
8176 #include <sys/fstyp.h>]])],
8177                   [AC_DEFINE([FSTYPE_STATVFS], [1],
8178                      [Define if statvfs exists.])
8179                    fstype=SVR4])
8180 if test $fstype = no; then
8181   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
8182 #include <sys/fstyp.h>]])],
8183                   [AC_DEFINE([FSTYPE_USG_STATFS], [1],
8184                      [Define if USG statfs.])
8185                    fstype=SVR3])
8187 if test $fstype = no; then
8188   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
8189 #include <sys/vmount.h>]])]),
8190                   [AC_DEFINE([FSTYPE_AIX_STATFS], [1],
8191                      [Define if AIX statfs.])
8192                    fstype=AIX])
8194 # (more cases omitted here)
8195 AC_MSG_RESULT([$fstype])
8196 @end group
8197 @end example
8199 @c ====================================================== Results of Tests.
8201 @node Results
8202 @chapter Results of Tests
8204 Once @command{configure} has determined whether a feature exists, what can
8205 it do to record that information?  There are four sorts of things it can
8206 do: define a C preprocessor symbol, set a variable in the output files,
8207 save the result in a cache file for future @command{configure} runs, and
8208 print a message letting the user know the result of the test.
8210 @menu
8211 * Defining Symbols::            Defining C preprocessor symbols
8212 * Setting Output Variables::    Replacing variables in output files
8213 * Special Chars in Variables::  Characters to beware of in variables
8214 * Caching Results::             Speeding up subsequent @command{configure} runs
8215 * Printing Messages::           Notifying @command{configure} users
8216 @end menu
8218 @node Defining Symbols
8219 @section Defining C Preprocessor Symbols
8221 A common action to take in response to a feature test is to define a C
8222 preprocessor symbol indicating the results of the test.  That is done by
8223 calling @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}.
8225 By default, @code{AC_OUTPUT} places the symbols defined by these macros
8226 into the output variable @code{DEFS}, which contains an option
8227 @option{-D@var{symbol}=@var{value}} for each symbol defined.  Unlike in
8228 Autoconf version 1, there is no variable @code{DEFS} defined while
8229 @command{configure} is running.  To check whether Autoconf macros have
8230 already defined a certain C preprocessor symbol, test the value of the
8231 appropriate cache variable, as in this example:
8233 @example
8234 AC_CHECK_FUNC([vprintf], [AC_DEFINE([HAVE_VPRINTF], [1],
8235                           [Define if vprintf exists.])])
8236 if test "$ac_cv_func_vprintf" != yes; then
8237   AC_CHECK_FUNC([_doprnt], [AC_DEFINE([HAVE_DOPRNT], [1],
8238                             [Define if _doprnt exists.])])
8240 @end example
8242 If @code{AC_CONFIG_HEADERS} has been called, then instead of creating
8243 @code{DEFS}, @code{AC_OUTPUT} creates a header file by substituting the
8244 correct values into @code{#define} statements in a template file.
8245 @xref{Configuration Headers}, for more information about this kind of
8246 output.
8248 @defmac AC_DEFINE (@var{variable}, @var{value}, @ovar{description})
8249 @defmacx AC_DEFINE (@var{variable})
8250 @acindex{DEFINE}
8251 Define the C preprocessor variable @var{variable} to @var{value} (verbatim).
8252 @var{value} should not contain literal newlines, and if you are not
8253 using @code{AC_CONFIG_HEADERS} it should not contain any @samp{#}
8254 characters, as @command{make} tends to eat them.  To use a shell variable,
8255 use @code{AC_DEFINE_UNQUOTED} instead.
8256 @var{description} is only useful if you are using
8257 @code{AC_CONFIG_HEADERS}.  In this case, @var{description} is put into
8258 the generated @file{config.h.in} as the comment before the macro define.
8259 The following example defines the C preprocessor variable
8260 @code{EQUATION} to be the string constant @samp{"$a > $b"}:
8262 @example
8263 AC_DEFINE([EQUATION], ["$a > $b"],
8264   [Equation string.])
8265 @end example
8267 If neither @var{value} nor @var{description} are given, then
8268 @var{value} defaults to 1 instead of to the empty string.  This is for
8269 backwards compatibility with older versions of Autoconf, but this usage
8270 is obsolescent and may be withdrawn in future versions of Autoconf.
8272 If the @var{variable} is a literal string, it is passed to
8273 @code{m4_pattern_allow} (@pxref{Forbidden Patterns}).
8274 @end defmac
8276 @defmac AC_DEFINE_UNQUOTED (@var{variable}, @var{value}, @ovar{description})
8277 @defmacx AC_DEFINE_UNQUOTED (@var{variable})
8278 @acindex{DEFINE_UNQUOTED}
8279 Like @code{AC_DEFINE}, but three shell expansions are
8280 performed---once---on @var{variable} and @var{value}: variable expansion
8281 (@samp{$}), command substitution (@samp{`}), and backslash escaping
8282 (@samp{\}).  Single and double quote characters in the value have no
8283 special meaning.  Use this macro instead of @code{AC_DEFINE} when
8284 @var{variable} or @var{value} is a shell variable.  Examples:
8286 @example
8287 AC_DEFINE_UNQUOTED([config_machfile], ["$machfile"],
8288   [Configuration machine file.])
8289 AC_DEFINE_UNQUOTED([GETGROUPS_T], [$ac_cv_type_getgroups],
8290   [getgroups return type.])
8291 AC_DEFINE_UNQUOTED([$ac_tr_hdr], [1],
8292   [Translated header name.])
8293 @end example
8294 @end defmac
8296 Due to a syntactical bizarreness of the Bourne shell, do not use
8297 semicolons to separate @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}
8298 calls from other macro calls or shell code; that can cause syntax errors
8299 in the resulting @command{configure} script.  Use either blanks or
8300 newlines.  That is, do this:
8302 @example
8303 AC_CHECK_HEADER([elf.h],
8304   [AC_DEFINE([SVR4], [1], [System V Release 4]) LIBS="-lelf $LIBS"])
8305 @end example
8307 @noindent
8308 or this:
8310 @example
8311 AC_CHECK_HEADER([elf.h],
8312   [AC_DEFINE([SVR4], [1], [System V Release 4])
8313    LIBS="-lelf $LIBS"])
8314 @end example
8316 @noindent
8317 instead of this:
8319 @example
8320 AC_CHECK_HEADER([elf.h],
8321   [AC_DEFINE([SVR4], [1], [System V Release 4]); LIBS="-lelf $LIBS"])
8322 @end example
8324 @node Setting Output Variables
8325 @section Setting Output Variables
8326 @cindex Output variables
8328 Another way to record the results of tests is to set @dfn{output
8329 variables}, which are shell variables whose values are substituted into
8330 files that @command{configure} outputs.  The two macros below create new
8331 output variables.  @xref{Preset Output Variables}, for a list of output
8332 variables that are always available.
8334 @defmac AC_SUBST (@var{variable}, @ovar{value})
8335 @acindex{SUBST}
8336 Create an output variable from a shell variable.  Make @code{AC_OUTPUT}
8337 substitute the variable @var{variable} into output files (typically one
8338 or more makefiles).  This means that @code{AC_OUTPUT}
8339 replaces instances of @samp{@@@var{variable}@@} in input files with the
8340 value that the shell variable @var{variable} has when @code{AC_OUTPUT}
8341 is called.  The value can contain newlines.
8342 Variable occurrences should not overlap: e.g., an input file should
8343 not contain @samp{@@@var{var1}@@@var{var2}@@} if @var{var1} and @var{var2}
8344 are variable names.
8345 The substituted value is not rescanned for more output variables;
8346 occurrences of @samp{@@@var{variable}@@} in the value are inserted
8347 literally into the output file.  (The algorithm uses the special marker
8348 @code{|#_!!_#|} internally, so neither the substituted value nor the
8349 output file may contain @code{|#_!!_#|}.)
8351 If @var{value} is given, in addition assign it to @var{variable}.
8353 The string @var{variable} is passed to @code{m4_pattern_allow}
8354 (@pxref{Forbidden Patterns}).
8355 @end defmac
8357 @defmac AC_SUBST_FILE (@var{variable})
8358 @acindex{SUBST_FILE}
8359 Another way to create an output variable from a shell variable.  Make
8360 @code{AC_OUTPUT} insert (without substitutions) the contents of the file
8361 named by shell variable @var{variable} into output files.  This means
8362 that @code{AC_OUTPUT} replaces instances of
8363 @samp{@@@var{variable}@@} in output files (such as @file{Makefile.in})
8364 with the contents of the file that the shell variable @var{variable}
8365 names when @code{AC_OUTPUT} is called.  Set the variable to
8366 @file{/dev/null} for cases that do not have a file to insert.
8367 This substitution occurs only when the @samp{@@@var{variable}@@} is on a
8368 line by itself, optionally surrounded by spaces and tabs.  The
8369 substitution replaces the whole line, including the spaces, tabs, and
8370 the terminating newline.
8372 This macro is useful for inserting makefile fragments containing
8373 special dependencies or other @code{make} directives for particular host
8374 or target types into makefiles.  For example, @file{configure.ac}
8375 could contain:
8377 @example
8378 AC_SUBST_FILE([host_frag])
8379 host_frag=$srcdir/conf/sun4.mh
8380 @end example
8382 @noindent
8383 and then a @file{Makefile.in} could contain:
8385 @example
8386 @@host_frag@@
8387 @end example
8389 The string @var{variable} is passed to @code{m4_pattern_allow}
8390 (@pxref{Forbidden Patterns}).
8391 @end defmac
8393 @cindex Precious Variable
8394 @cindex Variable, Precious
8395 Running @command{configure} in varying environments can be extremely
8396 dangerous.  If for instance the user runs @samp{CC=bizarre-cc
8397 ./configure}, then the cache, @file{config.h}, and many other output
8398 files depend upon @command{bizarre-cc} being the C compiler.  If
8399 for some reason the user runs @command{./configure} again, or if it is
8400 run via @samp{./config.status --recheck}, (@xref{Automatic Remaking},
8401 and @pxref{config.status Invocation}), then the configuration can be
8402 inconsistent, composed of results depending upon two different
8403 compilers.
8405 Environment variables that affect this situation, such as @samp{CC}
8406 above, are called @dfn{precious variables}, and can be declared as such
8407 by @code{AC_ARG_VAR}.
8409 @defmac AC_ARG_VAR (@var{variable}, @var{description})
8410 @acindex{ARG_VAR}
8411 Declare @var{variable} is a precious variable, and include its
8412 @var{description} in the variable section of @samp{./configure --help}.
8414 Being precious means that
8415 @itemize @minus
8416 @item
8417 @var{variable} is substituted via @code{AC_SUBST}.
8419 @item
8420 The value of @var{variable} when @command{configure} was launched is
8421 saved in the cache, including if it was not specified on the command
8422 line but via the environment.  Indeed, while @command{configure} can
8423 notice the definition of @code{CC} in @samp{./configure CC=bizarre-cc},
8424 it is impossible to notice it in @samp{CC=bizarre-cc ./configure},
8425 which, unfortunately, is what most users do.
8427 We emphasize that it is the @emph{initial} value of @var{variable} which
8428 is saved, not that found during the execution of @command{configure}.
8429 Indeed, specifying @samp{./configure FOO=foo} and letting
8430 @samp{./configure} guess that @code{FOO} is @code{foo} can be two
8431 different things.
8433 @item
8434 @var{variable} is checked for consistency between two
8435 @command{configure} runs.  For instance:
8437 @example
8438 $ @kbd{./configure --silent --config-cache}
8439 $ @kbd{CC=cc ./configure --silent --config-cache}
8440 configure: error: `CC' was not set in the previous run
8441 configure: error: changes in the environment can compromise \
8442 the build
8443 configure: error: run `make distclean' and/or \
8444 `rm config.cache' and start over
8445 @end example
8447 @noindent
8448 and similarly if the variable is unset, or if its content is changed.
8451 @item
8452 @var{variable} is kept during automatic reconfiguration
8453 (@pxref{config.status Invocation}) as if it had been passed as a command
8454 line argument, including when no cache is used:
8456 @example
8457 $ @kbd{CC=/usr/bin/cc ./configure undeclared_var=raboof --silent}
8458 $ @kbd{./config.status --recheck}
8459 running CONFIG_SHELL=/bin/sh /bin/sh ./configure undeclared_var=raboof \
8460   CC=/usr/bin/cc  --no-create --no-recursion
8461 @end example
8462 @end itemize
8463 @end defmac
8465 @node Special Chars in Variables
8466 @section Special Characters in Output Variables
8467 @cindex Output variables, special characters in
8469 Many output variables are intended to be evaluated both by
8470 @command{make} and by the shell.  Some characters are expanded
8471 differently in these two contexts, so to avoid confusion these
8472 variables' values should not contain any of the following characters:
8474 @example
8475 " # $ & ' ( ) * ; < > ? [ \ ^ ` |
8476 @end example
8478 Also, these variables' values should neither contain newlines, nor start
8479 with @samp{~}, nor contain white space or @samp{:} immediately followed
8480 by @samp{~}.  The values can contain nonempty sequences of white space
8481 characters like tabs and spaces, but each such sequence might
8482 arbitrarily be replaced by a single space during substitution.
8484 These restrictions apply both to the values that @command{configure}
8485 computes, and to the values set directly by the user.  For example, the
8486 following invocations of @command{configure} are problematic, since they
8487 attempt to use special characters within @code{CPPFLAGS} and white space
8488 within @code{$(srcdir)}:
8490 @example
8491 CPPFLAGS='-DOUCH="&\"#$*?"' '../My Source/ouch-1.0/configure'
8493 '../My Source/ouch-1.0/configure' CPPFLAGS='-DOUCH="&\"#$*?"'
8494 @end example
8496 @node Caching Results
8497 @section Caching Results
8498 @cindex Cache
8500 To avoid checking for the same features repeatedly in various
8501 @command{configure} scripts (or in repeated runs of one script),
8502 @command{configure} can optionally save the results of many checks in a
8503 @dfn{cache file} (@pxref{Cache Files}).  If a @command{configure} script
8504 runs with caching enabled and finds a cache file, it reads the results
8505 of previous runs from the cache and avoids rerunning those checks.  As a
8506 result, @command{configure} can then run much faster than if it had to
8507 perform all of the checks every time.
8509 @defmac AC_CACHE_VAL (@var{cache-id}, @var{commands-to-set-it})
8510 @acindex{CACHE_VAL}
8511 Ensure that the results of the check identified by @var{cache-id} are
8512 available.  If the results of the check were in the cache file that was
8513 read, and @command{configure} was not given the @option{--quiet} or
8514 @option{--silent} option, print a message saying that the result was
8515 cached; otherwise, run the shell commands @var{commands-to-set-it}.  If
8516 the shell commands are run to determine the value, the value is
8517 saved in the cache file just before @command{configure} creates its output
8518 files.  @xref{Cache Variable Names}, for how to choose the name of the
8519 @var{cache-id} variable.
8521 The @var{commands-to-set-it} @emph{must have no side effects} except for
8522 setting the variable @var{cache-id}, see below.
8523 @end defmac
8525 @defmac AC_CACHE_CHECK (@var{message}, @var{cache-id}, @var{commands-to-set-it})
8526 @acindex{CACHE_CHECK}
8527 A wrapper for @code{AC_CACHE_VAL} that takes care of printing the
8528 messages.  This macro provides a convenient shorthand for the most
8529 common way to use these macros.  It calls @code{AC_MSG_CHECKING} for
8530 @var{message}, then @code{AC_CACHE_VAL} with the @var{cache-id} and
8531 @var{commands} arguments, and @code{AC_MSG_RESULT} with @var{cache-id}.
8533 The @var{commands-to-set-it} @emph{must have no side effects} except for
8534 setting the variable @var{cache-id}, see below.
8535 @end defmac
8537 It is common to find buggy macros using @code{AC_CACHE_VAL} or
8538 @code{AC_CACHE_CHECK}, because people are tempted to call
8539 @code{AC_DEFINE} in the @var{commands-to-set-it}.  Instead, the code that
8540 @emph{follows} the call to @code{AC_CACHE_VAL} should call
8541 @code{AC_DEFINE}, by examining the value of the cache variable.  For
8542 instance, the following macro is broken:
8544 @example
8545 @group
8546 AC_DEFUN([AC_SHELL_TRUE],
8547 [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
8548                 [ac_cv_shell_true_works=no
8549                  (true) 2>/dev/null && ac_cv_shell_true_works=yes
8550                  if test "$ac_cv_shell_true_works" = yes; then
8551                    AC_DEFINE([TRUE_WORKS], [1],
8552                              [Define if `true(1)' works properly.])
8553                  fi])
8555 @end group
8556 @end example
8558 @noindent
8559 This fails if the cache is enabled: the second time this macro is run,
8560 @code{TRUE_WORKS} @emph{will not be defined}.  The proper implementation
8563 @example
8564 @group
8565 AC_DEFUN([AC_SHELL_TRUE],
8566 [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
8567                 [ac_cv_shell_true_works=no
8568                  (true) 2>/dev/null && ac_cv_shell_true_works=yes])
8569  if test "$ac_cv_shell_true_works" = yes; then
8570    AC_DEFINE([TRUE_WORKS], [1],
8571              [Define if `true(1)' works properly.])
8572  fi
8574 @end group
8575 @end example
8577 Also, @var{commands-to-set-it} should not print any messages, for
8578 example with @code{AC_MSG_CHECKING}; do that before calling
8579 @code{AC_CACHE_VAL}, so the messages are printed regardless of whether
8580 the results of the check are retrieved from the cache or determined by
8581 running the shell commands.
8583 @menu
8584 * Cache Variable Names::        Shell variables used in caches
8585 * Cache Files::                 Files @command{configure} uses for caching
8586 * Cache Checkpointing::         Loading and saving the cache file
8587 @end menu
8589 @node Cache Variable Names
8590 @subsection Cache Variable Names
8591 @cindex Cache variable
8593 The names of cache variables should have the following format:
8595 @example
8596 @var{package-prefix}_cv_@var{value-type}_@var{specific-value}_@ovar{additional-options}
8597 @end example
8599 @noindent
8600 for example, @samp{ac_cv_header_stat_broken} or
8601 @samp{ac_cv_prog_gcc_traditional}.  The parts of the variable name are:
8603 @table @asis
8604 @item @var{package-prefix}
8605 An abbreviation for your package or organization; the same prefix you
8606 begin local Autoconf macros with, except lowercase by convention.
8607 For cache values used by the distributed Autoconf macros, this value is
8608 @samp{ac}.
8610 @item @code{_cv_}
8611 Indicates that this shell variable is a cache value.  This string
8612 @emph{must} be present in the variable name, including the leading
8613 underscore.
8615 @item @var{value-type}
8616 A convention for classifying cache values, to produce a rational naming
8617 system.  The values used in Autoconf are listed in @ref{Macro Names}.
8619 @item @var{specific-value}
8620 Which member of the class of cache values this test applies to.
8621 For example, which function (@samp{alloca}), program (@samp{gcc}), or
8622 output variable (@samp{INSTALL}).
8624 @item @var{additional-options}
8625 Any particular behavior of the specific member that this test applies to.
8626 For example, @samp{broken} or @samp{set}.  This part of the name may
8627 be omitted if it does not apply.
8628 @end table
8630 The values assigned to cache variables may not contain newlines.
8631 Usually, their values are Boolean (@samp{yes} or @samp{no}) or the
8632 names of files or functions; so this is not an important restriction.
8634 @node Cache Files
8635 @subsection Cache Files
8637 A cache file is a shell script that caches the results of configure
8638 tests run on one system so they can be shared between configure scripts
8639 and configure runs.  It is not useful on other systems.  If its contents
8640 are invalid for some reason, the user may delete or edit it.
8642 By default, @command{configure} uses no cache file,
8643 to avoid problems caused by accidental
8644 use of stale cache files.
8646 To enable caching, @command{configure} accepts @option{--config-cache} (or
8647 @option{-C}) to cache results in the file @file{config.cache}.
8648 Alternatively, @option{--cache-file=@var{file}} specifies that
8649 @var{file} be the cache file.  The cache file is created if it does not
8650 exist already.  When @command{configure} calls @command{configure} scripts in
8651 subdirectories, it uses the @option{--cache-file} argument so that they
8652 share the same cache.  @xref{Subdirectories}, for information on
8653 configuring subdirectories with the @code{AC_CONFIG_SUBDIRS} macro.
8655 @file{config.status} only pays attention to the cache file if it is
8656 given the @option{--recheck} option, which makes it rerun
8657 @command{configure}.
8659 It is wrong to try to distribute cache files for particular system types.
8660 There is too much room for error in doing that, and too much
8661 administrative overhead in maintaining them.  For any features that
8662 can't be guessed automatically, use the standard method of the canonical
8663 system type and linking files (@pxref{Manual Configuration}).
8665 The site initialization script can specify a site-wide cache file to
8666 use, instead of the usual per-program cache.  In this case, the cache
8667 file gradually accumulates information whenever someone runs a new
8668 @command{configure} script.  (Running @command{configure} merges the new cache
8669 results with the existing cache file.)  This may cause problems,
8670 however, if the system configuration (e.g., the installed libraries or
8671 compilers) changes and the stale cache file is not deleted.
8673 @node Cache Checkpointing
8674 @subsection Cache Checkpointing
8676 If your configure script, or a macro called from @file{configure.ac}, happens
8677 to abort the configure process, it may be useful to checkpoint the cache
8678 a few times at key points using @code{AC_CACHE_SAVE}.  Doing so
8679 reduces the amount of time it takes to rerun the configure script with
8680 (hopefully) the error that caused the previous abort corrected.
8682 @c FIXME: Do we really want to document this guy?
8683 @defmac AC_CACHE_LOAD
8684 @acindex{CACHE_LOAD}
8685 Loads values from existing cache file, or creates a new cache file if a
8686 cache file is not found.  Called automatically from @code{AC_INIT}.
8687 @end defmac
8689 @defmac AC_CACHE_SAVE
8690 @acindex{CACHE_SAVE}
8691 Flushes all cached values to the cache file.  Called automatically from
8692 @code{AC_OUTPUT}, but it can be quite useful to call
8693 @code{AC_CACHE_SAVE} at key points in @file{configure.ac}.
8694 @end defmac
8696 For instance:
8698 @example
8699 @r{ @dots{} AC_INIT, etc. @dots{}}
8700 @group
8701 # Checks for programs.
8702 AC_PROG_CC
8703 AC_PROG_AWK
8704 @r{ @dots{} more program checks @dots{}}
8705 AC_CACHE_SAVE
8706 @end group
8708 @group
8709 # Checks for libraries.
8710 AC_CHECK_LIB([nsl], [gethostbyname])
8711 AC_CHECK_LIB([socket], [connect])
8712 @r{ @dots{} more lib checks @dots{}}
8713 AC_CACHE_SAVE
8714 @end group
8716 @group
8717 # Might abort@dots{}
8718 AM_PATH_GTK([1.0.2], [], [AC_MSG_ERROR([GTK not in path])])
8719 AM_PATH_GTKMM([0.9.5], [], [AC_MSG_ERROR([GTK not in path])])
8720 @end group
8721 @r{ @dots{} AC_OUTPUT, etc. @dots{}}
8722 @end example
8724 @node Printing Messages
8725 @section Printing Messages
8726 @cindex Messages, from @command{configure}
8728 @command{configure} scripts need to give users running them several kinds
8729 of information.  The following macros print messages in ways appropriate
8730 for each kind.  The arguments to all of them get enclosed in shell
8731 double quotes, so the shell performs variable and back-quote
8732 substitution on them.
8734 These macros are all wrappers around the @command{echo} shell command.
8735 They direct output to the appropriate file descriptor (@pxref{File
8736 Descriptor Macros}).
8737 @command{configure} scripts should rarely need to run @command{echo} directly
8738 to print messages for the user.  Using these macros makes it easy to
8739 change how and when each kind of message is printed; such changes need
8740 only be made to the macro definitions and all the callers change
8741 automatically.
8743 To diagnose static issues, i.e., when @command{autoconf} is run, see
8744 @ref{Reporting Messages}.
8746 @defmac AC_MSG_CHECKING (@var{feature-description})
8747 @acindex{MSG_CHECKING}
8748 Notify the user that @command{configure} is checking for a particular
8749 feature.  This macro prints a message that starts with @samp{checking }
8750 and ends with @samp{...} and no newline.  It must be followed by a call
8751 to @code{AC_MSG_RESULT} to print the result of the check and the
8752 newline.  The @var{feature-description} should be something like
8753 @samp{whether the Fortran compiler accepts C++ comments} or @samp{for
8754 c89}.
8756 This macro prints nothing if @command{configure} is run with the
8757 @option{--quiet} or @option{--silent} option.
8758 @end defmac
8760 @defmac AC_MSG_RESULT (@var{result-description})
8761 @acindex{MSG_RESULT}
8762 Notify the user of the results of a check.  @var{result-description} is
8763 almost always the value of the cache variable for the check, typically
8764 @samp{yes}, @samp{no}, or a file name.  This macro should follow a call
8765 to @code{AC_MSG_CHECKING}, and the @var{result-description} should be
8766 the completion of the message printed by the call to
8767 @code{AC_MSG_CHECKING}.
8769 This macro prints nothing if @command{configure} is run with the
8770 @option{--quiet} or @option{--silent} option.
8771 @end defmac
8773 @defmac AC_MSG_NOTICE (@var{message})
8774 @acindex{MSG_NOTICE}
8775 Deliver the @var{message} to the user.  It is useful mainly to print a
8776 general description of the overall purpose of a group of feature checks,
8777 e.g.,
8779 @example
8780 AC_MSG_NOTICE([checking if stack overflow is detectable])
8781 @end example
8783 This macro prints nothing if @command{configure} is run with the
8784 @option{--quiet} or @option{--silent} option.
8785 @end defmac
8787 @defmac AC_MSG_ERROR (@var{error-description}, @ovar{exit-status})
8788 @acindex{MSG_ERROR}
8789 Notify the user of an error that prevents @command{configure} from
8790 completing.  This macro prints an error message to the standard error
8791 output and exits @command{configure} with @var{exit-status} (1 by default).
8792 @var{error-description} should be something like @samp{invalid value
8793 $HOME for \$HOME}.
8795 The @var{error-description} should start with a lower-case letter, and
8796 ``cannot'' is preferred to ``can't''.
8797 @end defmac
8799 @defmac AC_MSG_FAILURE (@var{error-description}, @ovar{exit-status})
8800 @acindex{MSG_FAILURE}
8801 This @code{AC_MSG_ERROR} wrapper notifies the user of an error that
8802 prevents @command{configure} from completing @emph{and} that additional
8803 details are provided in @file{config.log}.  This is typically used when
8804 abnormal results are found during a compilation.
8805 @end defmac
8807 @defmac AC_MSG_WARN (@var{problem-description})
8808 @acindex{MSG_WARN}
8809 Notify the @command{configure} user of a possible problem.  This macro
8810 prints the message to the standard error output; @command{configure}
8811 continues running afterward, so macros that call @code{AC_MSG_WARN} should
8812 provide a default (back-up) behavior for the situations they warn about.
8813 @var{problem-description} should be something like @samp{ln -s seems to
8814 make hard links}.
8815 @end defmac
8819 @c ====================================================== Programming in M4.
8821 @node Programming in M4
8822 @chapter Programming in M4
8823 @cindex M4
8825 Autoconf is written on top of two layers: @dfn{M4sugar}, which provides
8826 convenient macros for pure M4 programming, and @dfn{M4sh}, which
8827 provides macros dedicated to shell script generation.
8829 As of this version of Autoconf, these two layers are still experimental,
8830 and their interface might change in the future.  As a matter of fact,
8831 @emph{anything that is not documented must not be used}.
8833 @menu
8834 * M4 Quotation::                Protecting macros from unwanted expansion
8835 * Using autom4te::              The Autoconf executables backbone
8836 * Programming in M4sugar::      Convenient pure M4 macros
8837 * Programming in M4sh::         Common shell Constructs
8838 * File Descriptor Macros::      File descriptor macros for input and output
8839 @end menu
8841 @node M4 Quotation
8842 @section M4 Quotation
8843 @cindex M4 quotation
8844 @cindex quotation
8846 @c FIXME: Grmph, yet another quoting myth: quotation has *never*
8847 @c prevented `expansion' of $1.  Unless it refers to the expansion
8848 @c of the value of $1?  Anyway, we need a rewrite here@enddots{}
8850 The most common problem with existing macros is an improper quotation.
8851 This section, which users of Autoconf can skip, but which macro writers
8852 @emph{must} read, first justifies the quotation scheme that was chosen
8853 for Autoconf and then ends with a rule of thumb.  Understanding the
8854 former helps one to follow the latter.
8856 @menu
8857 * Active Characters::           Characters that change the behavior of M4
8858 * One Macro Call::              Quotation and one macro call
8859 * Quotation and Nested Macros::  Macros calling macros
8860 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
8861 * Quadrigraphs::                Another way to escape special characters
8862 * Quotation Rule Of Thumb::     One parenthesis, one quote
8863 @end menu
8865 @node Active Characters
8866 @subsection Active Characters
8868 To fully understand where proper quotation is important, you first need
8869 to know what the special characters are in Autoconf: @samp{#} introduces
8870 a comment inside which no macro expansion is performed, @samp{,}
8871 separates arguments, @samp{[} and @samp{]} are the quotes themselves,
8872 and finally @samp{(} and @samp{)} (which M4 tries to match by
8873 pairs).
8875 In order to understand the delicate case of macro calls, we first have
8876 to present some obvious failures.  Below they are ``obvious-ified'',
8877 but when you find them in real life, they are usually in disguise.
8879 Comments, introduced by a hash and running up to the newline, are opaque
8880 tokens to the top level: active characters are turned off, and there is
8881 no macro expansion:
8883 @example
8884 # define([def], ine)
8885 @result{}# define([def], ine)
8886 @end example
8888 Each time there can be a macro expansion, there is a quotation
8889 expansion, i.e., one level of quotes is stripped:
8891 @example
8892 int tab[10];
8893 @result{}int tab10;
8894 [int tab[10];]
8895 @result{}int tab[10];
8896 @end example
8898 Without this in mind, the reader might try hopelessly to use her macro
8899 @code{array}:
8901 @example
8902 define([array], [int tab[10];])
8903 array
8904 @result{}int tab10;
8905 [array]
8906 @result{}array
8907 @end example
8909 @noindent
8910 How can you correctly output the intended results@footnote{Using
8911 @code{defn}.}?
8914 @node One Macro Call
8915 @subsection One Macro Call
8917 Let's proceed on the interaction between active characters and macros
8918 with this small macro, which just returns its first argument:
8920 @example
8921 define([car], [$1])
8922 @end example
8924 @noindent
8925 The two pairs of quotes above are not part of the arguments of
8926 @code{define}; rather, they are understood by the top level when it
8927 tries to find the arguments of @code{define}.  Therefore, assuming
8928 @code{car} is not already defined, it is equivalent to write:
8930 @example
8931 define(car, $1)
8932 @end example
8934 @noindent
8935 But, while it is acceptable for a @file{configure.ac} to avoid unnecessary
8936 quotes, it is bad practice for Autoconf macros which must both be more
8937 robust and also advocate perfect style.
8939 At the top level, there are only two possibilities: either you
8940 quote or you don't:
8942 @example
8943 car(foo, bar, baz)
8944 @result{}foo
8945 [car(foo, bar, baz)]
8946 @result{}car(foo, bar, baz)
8947 @end example
8949 Let's pay attention to the special characters:
8951 @example
8952 car(#)
8953 @error{}EOF in argument list
8954 @end example
8956 The closing parenthesis is hidden in the comment; with a hypothetical
8957 quoting, the top level understood it this way:
8959 @example
8960 car([#)]
8961 @end example
8963 @noindent
8964 Proper quotation, of course, fixes the problem:
8966 @example
8967 car([#])
8968 @result{}#
8969 @end example
8971 Here are more examples:
8973 @example
8974 car(foo, bar)
8975 @result{}foo
8976 car([foo, bar])
8977 @result{}foo, bar
8978 car((foo, bar))
8979 @result{}(foo, bar)
8980 car([(foo], [bar)])
8981 @result{}(foo
8982 define([a], [b])
8983 @result{}
8984 car(a)
8985 @result{}b
8986 car([a])
8987 @result{}b
8988 car([[a]])
8989 @result{}a
8990 car([[[a]]])
8991 @result{}[a]
8992 @end example
8994 With this in mind, we can explore the cases where macros invoke
8995 macros@enddots{}
8998 @node Quotation and Nested Macros
8999 @subsection Quotation and Nested Macros
9001 The examples below use the following macros:
9003 @example
9004 define([car], [$1])
9005 define([active], [ACT, IVE])
9006 define([array], [int tab[10]])
9007 @end example
9009 Each additional embedded macro call introduces other possible
9010 interesting quotations:
9012 @example
9013 car(active)
9014 @result{}ACT
9015 car([active])
9016 @result{}ACT, IVE
9017 car([[active]])
9018 @result{}active
9019 @end example
9021 In the first case, the top level looks for the arguments of @code{car},
9022 and finds @samp{active}.  Because M4 evaluates its arguments
9023 before applying the macro, @samp{active} is expanded, which results in:
9025 @example
9026 car(ACT, IVE)
9027 @result{}ACT
9028 @end example
9030 @noindent
9031 In the second case, the top level gives @samp{active} as first and only
9032 argument of @code{car}, which results in:
9034 @example
9035 active
9036 @result{}ACT, IVE
9037 @end example
9039 @noindent
9040 i.e., the argument is evaluated @emph{after} the macro that invokes it.
9041 In the third case, @code{car} receives @samp{[active]}, which results in:
9043 @example
9044 [active]
9045 @result{}active
9046 @end example
9048 @noindent
9049 exactly as we already saw above.
9051 The example above, applied to a more realistic example, gives:
9053 @example
9054 car(int tab[10];)
9055 @result{}int tab10;
9056 car([int tab[10];])
9057 @result{}int tab10;
9058 car([[int tab[10];]])
9059 @result{}int tab[10];
9060 @end example
9062 @noindent
9063 Huh?  The first case is easily understood, but why is the second wrong,
9064 and the third right?  To understand that, you must know that after
9065 M4 expands a macro, the resulting text is immediately subjected
9066 to macro expansion and quote removal.  This means that the quote removal
9067 occurs twice---first before the argument is passed to the @code{car}
9068 macro, and second after the @code{car} macro expands to the first
9069 argument.
9071 As the author of the Autoconf macro @code{car}, you then consider it to
9072 be incorrect that your users have to double-quote the arguments of
9073 @code{car}, so you ``fix'' your macro.  Let's call it @code{qar} for
9074 quoted car:
9076 @example
9077 define([qar], [[$1]])
9078 @end example
9080 @noindent
9081 and check that @code{qar} is properly fixed:
9083 @example
9084 qar([int tab[10];])
9085 @result{}int tab[10];
9086 @end example
9088 @noindent
9089 Ahhh!  That's much better.
9091 But note what you've done: now that the arguments are literal strings,
9092 if the user wants to use the results of expansions as arguments, she has
9093 to use an @emph{unquoted} macro call:
9095 @example
9096 qar(active)
9097 @result{}ACT
9098 @end example
9100 @noindent
9101 where she wanted to reproduce what she used to do with @code{car}:
9103 @example
9104 car([active])
9105 @result{}ACT, IVE
9106 @end example
9108 @noindent
9109 Worse yet: she wants to use a macro that produces a set of @code{cpp}
9110 macros:
9112 @example
9113 define([my_includes], [#include <stdio.h>])
9114 car([my_includes])
9115 @result{}#include <stdio.h>
9116 qar(my_includes)
9117 @error{}EOF in argument list
9118 @end example
9120 This macro, @code{qar}, because it double quotes its arguments, forces
9121 its users to leave their macro calls unquoted, which is dangerous.
9122 Commas and other active symbols are interpreted by M4 before
9123 they are given to the macro, often not in the way the users expect.
9124 Also, because @code{qar} behaves differently from the other macros,
9125 it's an exception that should be avoided in Autoconf.
9127 @node Changequote is Evil
9128 @subsection @code{changequote} is Evil
9129 @cindex @code{changequote}
9131 The temptation is often high to bypass proper quotation, in particular
9132 when it's late at night.  Then, many experienced Autoconf hackers
9133 finally surrender to the dark side of the force and use the ultimate
9134 weapon: @code{changequote}.
9136 The M4 builtin @code{changequote} belongs to a set of primitives that
9137 allow one to adjust the syntax of the language to adjust it to one's
9138 needs.  For instance, by default M4 uses @samp{`} and @samp{'} as
9139 quotes, but in the context of shell programming (and actually of most
9140 programming languages), that's about the worst choice one can make:
9141 because of strings and back-quoted expressions in shell code (such as
9142 @samp{'this'} and @samp{`that`}), because of literal characters in usual
9143 programming languages (as in @samp{'0'}), there are many unbalanced
9144 @samp{`} and @samp{'}.  Proper M4 quotation then becomes a nightmare, if
9145 not impossible.  In order to make M4 useful in such a context, its
9146 designers have equipped it with @code{changequote}, which makes it
9147 possible to choose another pair of quotes.  M4sugar, M4sh, Autoconf, and
9148 Autotest all have chosen to use @samp{[} and @samp{]}.  Not especially
9149 because they are unlikely characters, but @emph{because they are
9150 characters unlikely to be unbalanced}.
9152 There are other magic primitives, such as @code{changecom} to specify
9153 what syntactic forms are comments (it is common to see
9154 @samp{changecom(<!--, -->)} when M4 is used to produce HTML pages),
9155 @code{changeword} and @code{changesyntax} to change other syntactic
9156 details (such as the character to denote the @var{n}th argument, @samp{$} by
9157 default, the parenthesis around arguments, etc.).
9159 These primitives are really meant to make M4 more useful for specific
9160 domains: they should be considered like command line options:
9161 @option{--quotes}, @option{--comments}, @option{--words}, and
9162 @option{--syntax}.  Nevertheless, they are implemented as M4 builtins, as
9163 it makes M4 libraries self contained (no need for additional options).
9165 There lies the problem@enddots{}
9167 @sp 1
9169 The problem is that it is then tempting to use them in the middle of an
9170 M4 script, as opposed to its initialization.  This, if not carefully
9171 thought out, can lead to disastrous effects: @emph{you are changing the
9172 language in the middle of the execution}.  Changing and restoring the
9173 syntax is often not enough: if you happened to invoke macros in between,
9174 these macros are lost, as the current syntax is probably not
9175 the one they were implemented with.
9177 @c FIXME: I've been looking for a short, real case example, but I
9178 @c lost them all :(
9181 @node Quadrigraphs
9182 @subsection Quadrigraphs
9183 @cindex quadrigraphs
9184 @cindex @samp{@@S|@@}
9185 @cindex @samp{@@&t@@}
9186 @c Info cannot handle `:' in index entries.
9187 @c @cindex @samp{@@<:@@}
9188 @c @cindex @samp{@@:>@@}
9189 @c @cindex @samp{@@%:@@}
9191 When writing an Autoconf macro you may occasionally need to generate
9192 special characters that are difficult to express with the standard
9193 Autoconf quoting rules.  For example, you may need to output the regular
9194 expression @samp{[^[]}, which matches any character other than @samp{[}.
9195 This expression contains unbalanced brackets so it cannot be put easily
9196 into an M4 macro.
9198 You can work around this problem by using one of the following
9199 @dfn{quadrigraphs}:
9201 @table @samp
9202 @item @@<:@@
9203 @samp{[}
9204 @item @@:>@@
9205 @samp{]}
9206 @item @@S|@@
9207 @samp{$}
9208 @item @@%:@@
9209 @samp{#}
9210 @item @@&t@@
9211 Expands to nothing.
9212 @end table
9214 Quadrigraphs are replaced at a late stage of the translation process,
9215 after @command{m4} is run, so they do not get in the way of M4 quoting.
9216 For example, the string @samp{^@@<:@@}, independently of its quotation,
9217 appears as @samp{^[} in the output.
9219 The empty quadrigraph can be used:
9221 @itemize @minus
9222 @item to mark trailing spaces explicitly
9224 Trailing spaces are smashed by @command{autom4te}.  This is a feature.
9226 @item to produce other quadrigraphs
9228 For instance @samp{@@<@@&t@@:@@} produces @samp{@@<:@@}.
9230 @item to escape @emph{occurrences} of forbidden patterns
9232 For instance you might want to mention @code{AC_FOO} in a comment, while
9233 still being sure that @command{autom4te} still catches unexpanded
9234 @samp{AC_*}.  Then write @samp{AC@@&t@@_FOO}.
9235 @end itemize
9237 The name @samp{@@&t@@} was suggested by Paul Eggert:
9239 @quotation
9240 I should give some credit to the @samp{@@&t@@} pun.  The @samp{&} is my
9241 own invention, but the @samp{t} came from the source code of the
9242 @sc{algol68c} compiler, written by Steve Bourne (of Bourne shell fame),
9243 and which used @samp{mt} to denote the empty string.  In C, it would
9244 have looked like something like:
9246 @example
9247 char const mt[] = "";
9248 @end example
9250 @noindent
9251 but of course the source code was written in Algol 68.
9253 I don't know where he got @samp{mt} from: it could have been his own
9254 invention, and I suppose it could have been a common pun around the
9255 Cambridge University computer lab at the time.
9256 @end quotation
9258 @node Quotation Rule Of Thumb
9259 @subsection Quotation Rule Of Thumb
9261 To conclude, the quotation rule of thumb is:
9263 @center @emph{One pair of quotes per pair of parentheses.}
9265 Never over-quote, never under-quote, in particular in the definition of
9266 macros.  In the few places where the macros need to use brackets
9267 (usually in C program text or regular expressions), properly quote
9268 @emph{the arguments}!
9270 It is common to read Autoconf programs with snippets like:
9272 @example
9273 AC_TRY_LINK(
9274 changequote(<<, >>)dnl
9275 <<#include <time.h>
9276 #ifndef tzname /* For SGI.  */
9277 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
9278 #endif>>,
9279 changequote([, ])dnl
9280 [atoi (*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)
9281 @end example
9283 @noindent
9284 which is incredibly useless since @code{AC_TRY_LINK} is @emph{already}
9285 double quoting, so you just need:
9287 @example
9288 AC_TRY_LINK(
9289 [#include <time.h>
9290 #ifndef tzname /* For SGI.  */
9291 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
9292 #endif],
9293             [atoi (*tzname);],
9294             [ac_cv_var_tzname=yes],
9295             [ac_cv_var_tzname=no])
9296 @end example
9298 @noindent
9299 The M4-fluent reader might note that these two examples are rigorously
9300 equivalent, since M4 swallows both the @samp{changequote(<<, >>)}
9301 and @samp{<<} @samp{>>} when it @dfn{collects} the arguments: these
9302 quotes are not part of the arguments!
9304 Simplified, the example above is just doing this:
9306 @example
9307 changequote(<<, >>)dnl
9308 <<[]>>
9309 changequote([, ])dnl
9310 @end example
9312 @noindent
9313 instead of simply:
9315 @example
9316 [[]]
9317 @end example
9319 With macros that do not double quote their arguments (which is the
9320 rule), double-quote the (risky) literals:
9322 @example
9323 AC_LINK_IFELSE([AC_LANG_PROGRAM(
9324 [[#include <time.h>
9325 #ifndef tzname /* For SGI.  */
9326 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
9327 #endif]],
9328                                 [atoi (*tzname);])],
9329                [ac_cv_var_tzname=yes],
9330                [ac_cv_var_tzname=no])
9331 @end example
9333 Please note that the macro @code{AC_TRY_LINK} is obsolete, so you really
9334 should be using @code{AC_LINK_IFELSE} instead.
9336 @xref{Quadrigraphs}, for what to do if you run into a hopeless case
9337 where quoting does not suffice.
9339 When you create a @command{configure} script using newly written macros,
9340 examine it carefully to check whether you need to add more quotes in
9341 your macros.  If one or more words have disappeared in the M4
9342 output, you need more quotes.  When in doubt, quote.
9344 However, it's also possible to put on too many layers of quotes.  If
9345 this happens, the resulting @command{configure} script may contain
9346 unexpanded macros.  The @command{autoconf} program checks for this problem
9347 by looking for the string @samp{AC_} in @file{configure}.  However, this
9348 heuristic does not work in general: for example, it does not catch
9349 overquoting in @code{AC_DEFINE} descriptions.
9352 @c ---------------------------------------- Using autom4te
9354 @node Using autom4te
9355 @section Using @command{autom4te}
9357 The Autoconf suite, including M4sugar, M4sh, and Autotest, in addition
9358 to Autoconf per se, heavily rely on M4.  All these different uses
9359 revealed common needs factored into a layer over M4:
9360 @command{autom4te}@footnote{
9362 Yet another great name from Lars J. Aas.
9366 @command{autom4te} is a preprocessor that is like @command{m4}.
9367 It supports M4 extensions designed for use in tools like Autoconf.
9369 @menu
9370 * autom4te Invocation::         A @acronym{GNU} M4 wrapper
9371 * Customizing autom4te::        Customizing the Autoconf package
9372 @end menu
9374 @node autom4te Invocation
9375 @subsection Invoking @command{autom4te}
9377 The command line arguments are modeled after M4's:
9379 @example
9380 autom4te @var{options} @var{files}
9381 @end example
9383 @noindent
9384 @evindex M4
9385 where the @var{files} are directly passed to @command{m4}.  By default,
9386 @acronym{GNU} M4 is found during configuration, but the environment
9387 variable
9388 @env{M4} can be set to tell @command{autom4te} where to look.  In addition
9389 to the regular expansion, it handles the replacement of the quadrigraphs
9390 (@pxref{Quadrigraphs}), and of @samp{__oline__}, the current line in the
9391 output.  It supports an extended syntax for the @var{files}:
9393 @table @file
9394 @item @var{file}.m4f
9395 This file is an M4 frozen file.  Note that @emph{all the previous files
9396 are ignored}.  See the option @option{--melt} for the rationale.
9398 @item @var{file}?
9399 If found in the library path, the @var{file} is included for expansion,
9400 otherwise it is ignored instead of triggering a failure.
9401 @end table
9403 @sp 1
9405 Of course, it supports the Autoconf common subset of options:
9407 @table @option
9408 @item --help
9409 @itemx -h
9410 Print a summary of the command line options and exit.
9412 @item --version
9413 @itemx -V
9414 Print the version number of Autoconf and exit.
9416 @item --verbose
9417 @itemx -v
9418 Report processing steps.
9420 @item --debug
9421 @itemx -d
9422 Don't remove the temporary files and be even more verbose.
9424 @item --include=@var{dir}
9425 @itemx -I @var{dir}
9426 Also look for input files in @var{dir}.  Multiple invocations
9427 accumulate.
9429 @item --output=@var{file}
9430 @itemx -o @var{file}
9431 Save output (script or trace) to @var{file}.  The file @option{-} stands
9432 for the standard output.
9433 @end table
9435 @sp 1
9437 As an extension of @command{m4}, it includes the following options:
9439 @table @option
9440 @item --warnings=@var{category}
9441 @itemx -W @var{category}
9442 @evindex WARNINGS
9443 @c FIXME: Point to the M4sugar macros, not Autoconf's.
9444 Report the warnings related to @var{category} (which can actually be a
9445 comma separated list).  @xref{Reporting Messages}, macro
9446 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
9447 values include:
9449 @table @samp
9450 @item all
9451 report all the warnings
9453 @item none
9454 report none
9456 @item error
9457 treats warnings as errors
9459 @item no-@var{category}
9460 disable warnings falling into @var{category}
9461 @end table
9463 Warnings about @samp{syntax} are enabled by default, and the environment
9464 variable @env{WARNINGS}, a comma separated list of categories, is
9465 honored.  @samp{autom4te -W @var{category}} actually
9466 behaves as if you had run:
9468 @example
9469 autom4te --warnings=syntax,$WARNINGS,@var{category}
9470 @end example
9472 @noindent
9473 For example, if you want to disable defaults and @env{WARNINGS}
9474 of @command{autom4te}, but enable the warnings about obsolete
9475 constructs, you would use @option{-W none,obsolete}.
9477 @cindex Back trace
9478 @cindex Macro invocation stack
9479 @command{autom4te} displays a back trace for errors, but not for
9480 warnings; if you want them, just pass @option{-W error}.
9482 @item --melt
9483 @itemx -M
9484 Do not use frozen files.  Any argument @code{@var{file}.m4f} is
9485 replaced by @code{@var{file}.m4}.  This helps tracing the macros which
9486 are executed only when the files are frozen, typically
9487 @code{m4_define}.  For instance, running:
9489 @example
9490 autom4te --melt 1.m4 2.m4f 3.m4 4.m4f input.m4
9491 @end example
9493 @noindent
9494 is roughly equivalent to running:
9496 @example
9497 m4 1.m4 2.m4 3.m4 4.m4 input.m4
9498 @end example
9500 @noindent
9501 while
9503 @example
9504 autom4te 1.m4 2.m4f 3.m4 4.m4f input.m4
9505 @end example
9507 @noindent
9508 is equivalent to:
9510 @example
9511 m4 --reload-state=4.m4f input.m4
9512 @end example
9514 @item --freeze
9515 @itemx -f
9516 Produce a frozen state file.  @command{autom4te} freezing is stricter
9517 than M4's: it must produce no warnings, and no output other than empty
9518 lines (a line with white space is @emph{not} empty) and comments
9519 (starting with @samp{#}).  Unlike @command{m4}'s similarly-named option,
9520 this option takes no argument:
9522 @example
9523 autom4te 1.m4 2.m4 3.m4 --freeze --output=3.m4f
9524 @end example
9526 @noindent
9527 corresponds to
9529 @example
9530 m4 1.m4 2.m4 3.m4 --freeze-state=3.m4f
9531 @end example
9533 @item --mode=@var{octal-mode}
9534 @itemx -m @var{octal-mode}
9535 Set the mode of the non-traces output to @var{octal-mode}; by default
9536 @samp{0666}.
9537 @end table
9539 @sp 1
9541 @cindex @file{autom4te.cache}
9542 As another additional feature over @command{m4}, @command{autom4te}
9543 caches its results.  @acronym{GNU} M4 is able to produce a regular
9544 output and traces at the same time.  Traces are heavily used in the
9545 @acronym{GNU} Build System: @command{autoheader} uses them to build
9546 @file{config.h.in}, @command{autoreconf} to determine what
9547 @acronym{GNU} Build System components are used, @command{automake} to
9548 ``parse'' @file{configure.ac} etc.  To avoid recomputation,
9549 traces are cached while performing regular expansion,
9550 and conversely.  This cache is (actually, the caches are) stored in
9551 the directory @file{autom4te.cache}.  @emph{It can safely be removed}
9552 at any moment (especially if for some reason @command{autom4te}
9553 considers it is trashed).
9555 @table @option
9556 @item --cache=@var{directory}
9557 @itemx -C @var{directory}
9558 Specify the name of the directory where the result should be cached.
9559 Passing an empty value disables caching.  Be sure to pass a relative
9560 file name, as for the time being, global caches are not supported.
9562 @item --no-cache
9563 Don't cache the results.
9565 @item --force
9566 @itemx -f
9567 If a cache is used, consider it obsolete (but update it anyway).
9568 @end table
9570 @sp 1
9572 Because traces are so important to the @acronym{GNU} Build System,
9573 @command{autom4te} provides high level tracing features as compared to
9574 M4, and helps exploiting the cache:
9576 @table @option
9577 @item --trace=@var{macro}[:@var{format}]
9578 @itemx -t @var{macro}[:@var{format}]
9579 Trace the invocations of @var{macro} according to the @var{format}.
9580 Multiple @option{--trace} arguments can be used to list several macros.
9581 Multiple @option{--trace} arguments for a single macro are not
9582 cumulative; instead, you should just make @var{format} as long as
9583 needed.
9585 The @var{format} is a regular string, with newlines if desired, and
9586 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}.  It can
9587 use the following special escapes:
9589 @table @samp
9590 @item $$
9591 The character @samp{$}.
9593 @item $f
9594 The file name from which @var{macro} is called.
9596 @item $l
9597 The line number from which @var{macro} is called.
9599 @item $d
9600 The depth of the @var{macro} call.  This is an M4 technical detail that
9601 you probably don't want to know about.
9603 @item $n
9604 The name of the @var{macro}.
9606 @item $@var{num}
9607 The @var{num}th argument of the call to @var{macro}.
9609 @item $@@
9610 @itemx $@var{sep}@@
9611 @itemx $@{@var{separator}@}@@
9612 All the arguments passed to @var{macro}, separated by the character
9613 @var{sep} or the string @var{separator} (@samp{,} by default).  Each
9614 argument is quoted, i.e., enclosed in a pair of square brackets.
9616 @item $*
9617 @itemx $@var{sep}*
9618 @itemx $@{@var{separator}@}*
9619 As above, but the arguments are not quoted.
9621 @item $%
9622 @itemx $@var{sep}%
9623 @itemx $@{@var{separator}@}%
9624 As above, but the arguments are not quoted, all new line characters in
9625 the arguments are smashed, and the default separator is @samp{:}.
9627 The escape @samp{$%} produces single-line trace outputs (unless you put
9628 newlines in the @samp{separator}), while @samp{$@@} and @samp{$*} do
9629 not.
9630 @end table
9632 @xref{autoconf Invocation}, for examples of trace uses.
9634 @item --preselect=@var{macro}
9635 @itemx -p @var{macro}
9636 Cache the traces of @var{macro}, but do not enable traces.  This is
9637 especially important to save CPU cycles in the future.  For instance,
9638 when invoked, @command{autoconf} preselects all the macros that
9639 @command{autoheader}, @command{automake}, @command{autoreconf}, etc.,
9640 trace, so that running @command{m4} is not needed to trace them: the
9641 cache suffices.  This results in a huge speed-up.
9642 @end table
9644 @sp 1
9646 @cindex Autom4te Library
9647 Finally, @command{autom4te} introduces the concept of @dfn{Autom4te
9648 libraries}.  They consists in a powerful yet extremely simple feature:
9649 sets of combined command line arguments:
9651 @table @option
9652 @item --language=@var{language}
9653 @itemx -l @var{language}
9654 Use the @var{language} Autom4te library.  Current languages include:
9656 @table @code
9657 @item M4sugar
9658 create M4sugar output.
9660 @item M4sh
9661 create M4sh executable shell scripts.
9663 @item Autotest
9664 create Autotest executable test suites.
9666 @item Autoconf-without-aclocal-m4
9667 create Autoconf executable configure scripts without
9668 reading @file{aclocal.m4}.
9670 @item Autoconf
9671 create Autoconf executable configure scripts.  This language inherits
9672 all the characteristics of @code{Autoconf-without-aclocal-m4} and
9673 additionally reads @file{aclocal.m4}.
9674 @end table
9676 @item --prepend-include=@var{dir}
9677 @item -B @var{dir}
9678 Prepend directory @var{dir} to the search path.  This is used to include
9679 the language-specific files before any third-party macros.
9681 @end table
9683 @cindex @file{autom4te.cfg}
9684 As an example, if Autoconf is installed in its default location,
9685 @file{/usr/local}, the command @samp{autom4te -l m4sugar foo.m4} is
9686 strictly equivalent to the command:
9688 @example
9689 autom4te --prepend-include /usr/local/share/autoconf \
9690   m4sugar/m4sugar.m4f --warnings syntax foo.m4
9691 @end example
9693 @noindent
9694 Recursive expansion applies here: the command @samp{autom4te -l m4sh foo.m4}
9695 is the same as @samp{autom4te --language M4sugar m4sugar/m4sh.m4f
9696 foo.m4}, i.e.:
9698 @example
9699 autom4te --prepend-include /usr/local/share/autoconf \
9700   m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4
9701 @end example
9703 @noindent
9704 The definition of the languages is stored in @file{autom4te.cfg}.
9706 @node Customizing autom4te
9707 @subsection Customizing @command{autom4te}
9709 One can customize @command{autom4te} via @file{~/.autom4te.cfg} (i.e.,
9710 as found in the user home directory), and @file{./.autom4te.cfg} (i.e.,
9711 as found in the directory from which @command{autom4te} is run).  The
9712 order is first reading @file{autom4te.cfg}, then @file{~/.autom4te.cfg},
9713 then @file{./.autom4te.cfg}, and finally the command line arguments.
9715 In these text files, comments are introduced with @code{#}, and empty
9716 lines are ignored.  Customization is performed on a per-language basis,
9717 wrapped in between a @samp{begin-language: "@var{language}"},
9718 @samp{end-language: "@var{language}"} pair.
9720 Customizing a language stands for appending options (@pxref{autom4te
9721 Invocation}) to the current definition of the language.  Options, and
9722 more generally arguments, are introduced by @samp{args:
9723 @var{arguments}}.  You may use the traditional shell syntax to quote the
9724 @var{arguments}.
9726 As an example, to disable Autoconf caches (@file{autom4te.cache})
9727 globally, include the following lines in @file{~/.autom4te.cfg}:
9729 @verbatim
9730 ## ------------------ ##
9731 ## User Preferences.  ##
9732 ## ------------------ ##
9734 begin-language: "Autoconf-without-aclocal-m4"
9735 args: --no-cache
9736 end-language: "Autoconf-without-aclocal-m4"
9737 @end verbatim
9740 @node Programming in M4sugar
9741 @section Programming in M4sugar
9743 @cindex M4sugar
9744 M4 by itself provides only a small, but sufficient, set of all-purpose
9745 macros.  M4sugar introduces additional generic macros.  Its name was
9746 coined by Lars J. Aas: ``Readability And Greater Understanding Stands 4
9747 M4sugar''.
9749 @menu
9750 * Redefined M4 Macros::         M4 builtins changed in M4sugar
9751 * Looping constructs::          Iteration in M4
9752 * Evaluation Macros::           More quotation and evaluation control
9753 * Text processing Macros::      String manipulation in M4
9754 * Forbidden Patterns::          Catching unexpanded macros
9755 @end menu
9757 @node Redefined M4 Macros
9758 @subsection Redefined M4 Macros
9760 @msindex{builtin}
9761 @msindex{decr}
9762 @msindex{define}
9763 @msindex{dumpdef}
9764 @msindex{errprint}
9765 @msindex{esyscmd}
9766 @msindex{eval}
9767 @msindex{format}
9768 @msindex{ifdef}
9769 @msindex{incr}
9770 @msindex{index}
9771 @msindex{indir}
9772 @msindex{len}
9773 @msindex{pushdef}
9774 @msindex{shift}
9775 @msindex{substr}
9776 @msindex{syscmd}
9777 @msindex{sysval}
9778 @msindex{translit}
9779 @msindex{undefine}
9780 With a few exceptions, all the M4 native macros are moved in the
9781 @samp{m4_} pseudo-namespace, e.g., M4sugar renames @code{define} as
9782 @code{m4_define} etc.
9784 Some M4 macros are redefined, and are slightly incompatible with their
9785 native equivalent.
9787 @defmac dnl
9788 @msindex{dnl}
9789 This macro kept its original name: no @code{m4_dnl} is defined.
9790 @end defmac
9792 @defmac m4_defn (@var{macro})
9793 @msindex{defn}
9794 Unlike the M4 builtin, this macro fails if @var{macro} is not
9795 defined.  See @code{m4_undefine}.
9796 @end defmac
9798 @defmac m4_exit (@var{exit-status})
9799 @msindex{exit}
9800 This macro corresponds to @code{m4exit}.
9801 @end defmac
9803 @defmac m4_if (@var{comment})
9804 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @ovar{not-equal})
9805 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @dots{})
9806 @msindex{if}
9807 This macro corresponds to @code{ifelse}.
9808 @end defmac
9810 @defmac m4_include (@var{file})
9811 @defmacx m4_sinclude (@var{file})
9812 @msindex{include}
9813 @msindex{sinclude}
9814 Like the M4 builtins, but warn against multiple inclusions of @var{file}.
9815 @end defmac
9817 @defmac m4_bpatsubst (@var{string}, @var{regexp}, @ovar{replacement})
9818 @msindex{bpatsubst}
9819 This macro corresponds to @code{patsubst}.  The name @code{m4_patsubst}
9820 is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
9821 provide extended regular expression syntax via @code{epatsubst}.
9822 @end defmac
9824 @defmac m4_popdef (@var{macro})
9825 @msindex{popdef}
9826 Unlike the M4 builtin, this macro fails if @var{macro} is not
9827 defined.  See @code{m4_undefine}.
9828 @end defmac
9830 @defmac m4_bregexp (@var{string}, @var{regexp}, @ovar{replacement})
9831 @msindex{bregexp}
9832 This macro corresponds to @code{regexp}.  The name @code{m4_regexp}
9833 is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
9834 provide extended regular expression syntax via @code{eregexp}.
9835 @end defmac
9837 @defmac m4_wrap (@var{text})
9838 @msindex{wrap}
9839 This macro corresponds to @code{m4wrap}.
9841 Posix requires arguments of multiple @code{m4wrap} calls to be
9842 reprocessed at @acronym{EOF} in the same order as the original calls.
9843 @acronym{GNU} M4 versions through 1.4.x, however, reprocess them in
9844 reverse order.  Your code should not depend on the order.
9846 Also, Posix requires @code{m4wrap} to ignore its second and succeeding
9847 arguments, but @acronym{GNU} M4 versions through 1.4.x concatenate the
9848 arguments with intervening spaces.  Your code should not pass more than
9849 one argument.
9851 You are encouraged to end @var{text} with @samp{[]}, to avoid unexpected
9852 token pasting between consecutive invocations of @code{m4_wrap}, as in:
9854 @example
9855 m4_define([foo], [bar])
9856 m4_define([foofoo], [OUCH])
9857 m4_wrap([foo])
9858 m4_wrap([foo])
9859 @result{}OUCH
9860 @end example
9861 @end defmac
9863 @defmac m4_undefine (@var{macro})
9864 @msindex{undefine}
9865 Unlike the M4 builtin, this macro fails if @var{macro} is not
9866 defined.  Use
9868 @example
9869 m4_ifdef([@var{macro}], [m4_undefine([@var{macro}])])
9870 @end example
9872 @noindent
9873 to recover the behavior of the builtin.
9874 @end defmac
9876 @defmac m4_maketemp (@var{template})
9877 @defmacx m4_mkstemp (@var{template})
9878 @msindex{maketemp}
9879 @msindex{mkstemp}
9880 Posix requires @code{maketemp} to replace the trailing @samp{X}
9881 characters in @var{template} with the process id, without regards to the
9882 existence of a file by that name, but this a security hole.  When this
9883 was pointed out to the Posix folks, they agreed to invent a new macro
9884 @code{mkstemp} that always creates a uniquely named file, but not all
9885 versions of @acronym{GNU} M4 support the new macro.  In M4sugar,
9886 @code{m4_maketemp} and @code{m4_mkstemp} are synonyms for each other,
9887 and both have the secure semantics regardless of which macro the
9888 underlying M4 provides.
9889 @end defmac
9892 @node Looping constructs
9893 @subsection Looping constructs
9895 The following macros implement loops in M4.
9897 @defmac m4_for (@var{var}, @var{first}, @var{last}, @ovar{step}, @var{expression})
9898 @msindex{for}
9899 Loop over the numeric values between @var{first} and @var{last}
9900 including bounds by increments of @var{step}.  For each iteration,
9901 expand @var{expression} with the numeric value assigned to @var{var}.
9902 If @var{step} is omitted, it defaults to @samp{1} or @samp{-1} depending
9903 on the order of the limits.  If given, @var{step} has to match this
9904 order.
9905 @end defmac
9907 @defmac m4_foreach (@var{var}, @var{list}, @var{expression})
9908 @msindex{foreach}
9909 Loop over the comma-separated M4 list @var{list}, assigning each value
9910 to @var{var}, and expand @var{expression}.  The following example
9911 outputs two lines:
9913 @example
9914 m4_foreach([myvar], [[foo], [bar, baz]],
9915            [echo myvar
9918 @end example
9919 @end defmac
9921 @defmac m4_foreach_w (@var{var}, @var{list}, @var{expression})
9922 @msindex{foreach_w}
9923 Loop over the white-space-separated list @var{list}, assigning each value
9924 to @var{var}, and expand @var{expression}.
9926 The deprecated macro @code{AC_FOREACH} is an alias of
9927 @code{m4_foreach_w}.
9928 @end defmac
9932 @node Evaluation Macros
9933 @subsection Evaluation Macros
9935 The following macros give some control over the order of the evaluation
9936 by adding or removing levels of quotes.  They are meant for hard-core M4
9937 programmers.
9939 @defmac m4_dquote (@var{arg1}, @dots{})
9940 @msindex{dquote}
9941 Return the arguments as a quoted list of quoted arguments.
9942 @end defmac
9944 @defmac m4_quote (@var{arg1}, @dots{})
9945 @msindex{quote}
9946 Return the arguments as a single entity, i.e., wrap them into a pair of
9947 quotes.
9948 @end defmac
9950 The following example aims at emphasizing the difference between (i), not
9951 using these macros, (ii), using @code{m4_quote}, and (iii), using
9952 @code{m4_dquote}.
9954 @example
9955 $ @kbd{cat example.m4}
9956 # Overquote, so that quotes are visible.
9957 m4_define([show], [$[]1 = [$1], $[]@@ = [$@@]])
9958 m4_define([mkargs], [1, 2, 3])
9959 m4_define([arg1], [[$1]])
9960 m4_divert(0)dnl
9961 show(a, b)
9962 show(m4_quote(a, b))
9963 show(m4_dquote(a, b))
9964 arg1(mkargs)
9965 arg1([mkargs])
9966 arg1(m4_defn([mkargs]))
9967 arg1(m4_quote(mkargs))
9968 arg1(m4_dquote(mkargs))
9969 $ @kbd{autom4te -l m4sugar example.m4}
9970 $1 = a, $@@ = [a],[b]
9971 $1 = a,b, $@@ = [a,b]
9972 $1 = [a],[b], $@@ = [[a],[b]]
9974 mkargs
9975 1, 2, 3
9976 1,2,3
9977 [1],[2],[3]
9978 @end example
9982 @node Text processing Macros
9983 @subsection Text processing Macros
9985 The following macros may be used to manipulate strings in M4.
9986 They are not intended for casual use.
9988 @defmac m4_re_escape (@var{string})
9989 @msindex{re_escape}
9990 Backslash-escape all characters in @var{string} that are active in
9991 regexps.
9992 @end defmac
9994 @defmac m4_tolower (@var{string})
9995 @defmacx m4_toupper (@var{string})
9996 @msindex{tolower}
9997 @msindex{toupper}
9998 Return @var{string} with letters converted to upper or lower case,
9999 respectively.
10000 @end defmac
10002 @defmac m4_split (@var{string}, @ovar{regexp})
10003 @msindex{split}
10004 Split @var{string} into an M4 list of elements quoted by @samp{[} and
10005 @samp{]}, while keeping white space at the beginning and at the end.
10006 If @var{regexp} is given, use it instead of @samp{[\t ]+} for splitting.
10007 If @var{string} is empty, the result is an empty list.
10008 @end defmac
10010 @defmac m4_normalize (@var{string})
10011 @msindex{normalize}
10012 Remove leading and trailing spaces and tabs, sequences of
10013 backslash-then-newline, and replace multiple spaces and tabs with a
10014 single space.
10015 @end defmac
10017 @defmac m4_append (@var{macro-name}, @var{string}, @ovar{separator})
10018 @defmacx m4_append_uniq (@var{macro-name}, @var{string}, @ovar{separator})
10019 @msindex{append}
10020 @msindex{append_uniq}
10021 Redefine @var{macro-name} to its former contents with @var{separator}
10022 and @var{string} added at the end.  If @var{macro-name} was undefined
10023 before (but not if it was defined but empty), then no @var{separator} is
10024 added.  @code{m4_append} can be used to grow strings, and
10025 @code{m4_append_uniq} to grow strings without duplicating substrings.
10026 @end defmac
10030 @node Forbidden Patterns
10031 @subsection Forbidden Patterns
10032 @cindex Forbidden patterns
10033 @cindex Patterns, forbidden
10035 M4sugar provides a means to define suspicious patterns, patterns
10036 describing tokens which should not be found in the output.  For
10037 instance, if an Autoconf @file{configure} script includes tokens such as
10038 @samp{AC_DEFINE}, or @samp{dnl}, then most probably something went
10039 wrong (typically a macro was not evaluated because of overquotation).
10041 M4sugar forbids all the tokens matching @samp{^m4_} and @samp{^dnl$}.
10043 @defmac m4_pattern_forbid (@var{pattern})
10044 @msindex{pattern_forbid}
10045 Declare that no token matching @var{pattern} must be found in the output.
10046 Comments are not checked; this can be a problem if, for instance, you
10047 have some macro left unexpanded after an @samp{#include}.  No consensus
10048 is currently found in the Autoconf community, as some people consider it
10049 should be valid to name macros in comments (which doesn't make sense to
10050 the author of this documentation, as @samp{#}-comments should document
10051 the output, not the input, documented by @samp{dnl} comments).
10052 @end defmac
10054 Of course, you might encounter exceptions to these generic rules, for
10055 instance you might have to refer to @samp{$m4_flags}.
10057 @defmac m4_pattern_allow (@var{pattern})
10058 @msindex{pattern_allow}
10059 Any token matching @var{pattern} is allowed, including if it matches an
10060 @code{m4_pattern_forbid} pattern.
10061 @end defmac
10063 @node Programming in M4sh
10064 @section Programming in M4sh
10066 @c FIXME: Eventually will become a chapter, as it is not related to
10067 @c programming in M4 per se.
10069 M4sh, pronounced ``mash'', is aiming at producing portable Bourne shell
10070 scripts.  This name was coined by Lars J. Aas, who notes that,
10071 according to the Webster's Revised Unabridged Dictionary (1913):
10073 @quotation
10074 Mash \Mash\, n.  [Akin to G. meisch, maisch, meische, maische, mash,
10075 wash, and prob.@: to AS. miscian to mix.  See ``Mix''.]
10077 @enumerate 1
10078 @item
10079 A mass of mixed ingredients reduced to a soft pulpy state by beating or
10080 pressure@enddots{}
10082 @item
10083 A mixture of meal or bran and water fed to animals.
10085 @item
10086 A mess; trouble.  [Obs.] --Beau.@: & Fl.
10087 @end enumerate
10088 @end quotation
10091 For the time being, it is not mature enough to be widely used.
10093 M4sh provides portable alternatives for some common shell constructs
10094 that unfortunately are not portable in practice.
10096 @c Deprecated, to be replaced by a better API
10097 @ignore
10098 @defmac AS_BASENAME (@var{file-name})
10099 @asindex{BASENAME}
10100 Output the non-directory portion of @var{file-name}.  For example,
10101 if @code{$file} is @samp{/one/two/three}, the command
10102 @code{base=`AS_BASENAME(["$file"])`} sets @code{base} to @samp{three}.
10103 @end defmac
10104 @end ignore
10106 @defmac AS_BOURNE_COMPATIBLE
10107 @asindex{BOURNE_COMPATIBLE}
10108 Set up the shell to be more compatible with the Bourne shell as
10109 standardized by Posix, if possible.  This may involve setting
10110 environment variables, or setting options, or similar
10111 implementation-specific actions.
10112 @end defmac
10114 @defmac AS_CASE (@var{word}, @ovar{pattern1}, @ovar{if-matched1}, @dots{}, @ovar{default})
10115 @asindex{CASE}
10116 Expand into a shell @samp{case} statement, where @var{word} is matched
10117 against one or more patterns.  @var{if-matched} is run if the
10118 corresponding pattern matched @var{word}, else @var{default} is run.
10119 @end defmac
10121 @defmac AS_DIRNAME (@var{file-name})
10122 @asindex{DIRNAME}
10123 Output the directory portion of @var{file-name}.  For example,
10124 if @code{$file} is @samp{/one/two/three}, the command
10125 @code{dir=`AS_DIRNAME(["$file"])`} sets @code{dir} to @samp{/one/two}.
10126 @end defmac
10128 @defmac AS_IF (@var{test1}, @ovar{run-if-true1}, @dots{}, @ovar{run-if-false})
10129 @asindex{IF}
10130 Run shell code @var{test1}.  If @var{test1} exits with a zero status then
10131 run shell code @var{run-if-true1}, else examine further tests.  If no test
10132 exits with a zero status, run shell code @var{run-if-false}, with
10133 simplifications if either @var{run-if-true1} or @var{run-if-false1}
10134 is empty.  For example,
10136 @example
10137 AS_IF([test "$foo" = yes], [HANDLE_FOO([yes])],
10138       [test "$foo" != no], [HANDLE_FOO([maybe])],
10139       [echo foo not specified])
10140 @end example
10142 @noindent
10143 ensures any required macros of @code{HANDLE_FOO}
10144 are expanded before the first test.
10145 @end defmac
10147 @defmac AS_MKDIR_P (@var{file-name})
10148 @asindex{MKDIR_P}
10149 Make the directory @var{file-name}, including intervening directories
10150 as necessary.  This is equivalent to @samp{mkdir -p @var{file-name}},
10151 except that it is portable to older versions of @command{mkdir} that
10152 lack support for the @option{-p} option.  Also, @code{AS_MKDIR_P}
10153 succeeds if @var{file-name} is a symbolic link to an existing directory,
10154 even though Posix is unclear whether @samp{mkdir -p} should
10155 succeed in that case.  If creation of @var{file-name} fails, exit the
10156 script.
10158 Also see the @code{AC_PROG_MKDIR_P} macro (@pxref{Particular Programs}).
10159 @end defmac
10161 @defmac AS_SHELL_SANITIZE
10162 @asindex{SHELL_SANITIZE}
10163 Initialize the shell suitably for @code{configure} scripts.  This has
10164 the effect of @code{AS_BOURNE_COMPATIBLE}, and sets some other
10165 environment variables for predictable results from configuration tests.
10166 For example, it sets @env{LC_ALL} to change to the default C locale.
10167 @xref{Special Shell Variables}.
10168 @end defmac
10170 @defmac AS_TR_CPP (@var{expression})
10171 @asindex{TR_CPP}
10172 Transform @var{expression} into a valid right-hand side for a C @code{#define}.
10173 For example:
10175 @example
10176 # This outputs "#define HAVE_CHAR_P 1".
10177 type="char *"
10178 echo "#define AS_TR_CPP([HAVE_$type]) 1"
10179 @end example
10180 @end defmac
10182 @defmac AS_TR_SH (@var{expression})
10183 @asindex{TR_SH}
10184 Transform @var{expression} into a valid shell variable name.  For example:
10186 @example
10187 # This outputs "Have it!".
10188 header="sys/some file.h"
10189 AS_TR_SH([HAVE_$header])=yes
10190 if test "$HAVE_sys_some_file_h" = yes; then echo "Have it!"; fi
10191 @end example
10192 @end defmac
10194 @defmac AS_SET_CATFILE (@var{var}, @var{dir}, @var{file})
10195 @asindex{SET_CATFILE}
10196 Set the shell variable @var{var} to @var{dir}/@var{file}, but
10197 optimizing the common cases (@var{dir} or @var{file} is @samp{.},
10198 @var{file} is absolute, etc.).
10199 @end defmac
10202 @node File Descriptor Macros
10203 @section File Descriptor Macros
10204 @cindex input
10205 @cindex standard input
10206 @cindex file descriptors
10207 @cindex descriptors
10208 @cindex low-level output
10209 @cindex output, low-level
10211 The following macros define file descriptors used to output messages
10212 (or input values) from @file{configure} scripts.
10213 For example:
10215 @example
10216 echo "$wombats found" >&AS_MESSAGE_LOG_FD
10217 echo 'Enter desired kangaroo count:' >&AS_MESSAGE_FD
10218 read kangaroos <&AS_ORIGINAL_STDIN_FD`
10219 @end example
10221 @noindent
10222 However doing so is seldom needed, because Autoconf provides higher
10223 level macros as described below.
10225 @defmac AS_MESSAGE_FD
10226 @asindex{MESSAGE_FD}
10227 The file descriptor for @samp{checking for...}  messages and results.
10228 Normally this directs messages to the standard output, however when
10229 @command{configure} is run with the @option{-q} option, messages sent to
10230 @code{AS_MESSAGE_FD} are discarded.
10232 If you want to display some messages, consider using one of the printing
10233 macros (@pxref{Printing Messages}) instead.  Copies of messages output
10234 via these macros are also recorded in @file{config.log}.
10235 @end defmac
10237 @defmac AS_MESSAGE_LOG_FD
10238 @asindex{MESSAGE_LOG_FD}
10240 The file descriptor for messages logged to @file{config.log}.  Macros
10241 that run tools, like @code{AC_COMPILE_IFELSE} (@pxref{Running the
10242 Compiler}), redirect all output to this descriptor.  You may want to do
10243 so if you develop such a low-level macro.
10244 @end defmac
10246 @defmac AS_ORIGINAL_STDIN_FD
10247 @asindex{ORIGINAL_STDIN_FD}
10248 The file descriptor for the original standard input.
10250 When @command{configure} runs, it may accidentally execute an
10251 interactive command that has the same name as the non-interactive meant
10252 to be used or checked.  If the standard input was the terminal, such
10253 interactive programs would cause @command{configure} to stop, pending
10254 some user input.  Therefore @command{configure} redirects its standard
10255 input from @file{/dev/null} during its initialization.  This is not
10256 normally a problem, since @command{configure} normally does not need
10257 user input.
10259 In the extreme case where your @file{configure} script really needs to
10260 obtain some values from the original standard input, you can read them
10261 explicitly from @code{AS_ORIGINAL_STDIN_FD}.
10262 @end defmac
10265 @c =================================================== Writing Autoconf Macros.
10267 @node Writing Autoconf Macros
10268 @chapter Writing Autoconf Macros
10270 When you write a feature test that could be applicable to more than one
10271 software package, the best thing to do is encapsulate it in a new macro.
10272 Here are some instructions and guidelines for writing Autoconf macros.
10274 @menu
10275 * Macro Definitions::           Basic format of an Autoconf macro
10276 * Macro Names::                 What to call your new macros
10277 * Reporting Messages::          Notifying @command{autoconf} users
10278 * Dependencies Between Macros::  What to do when macros depend on other macros
10279 * Obsoleting Macros::           Warning about old ways of doing things
10280 * Coding Style::                Writing Autoconf macros @`a la Autoconf
10281 @end menu
10283 @node Macro Definitions
10284 @section Macro Definitions
10286 @acindex{DEFUN}
10287 Autoconf macros are defined using the @code{AC_DEFUN} macro, which is
10288 similar to the M4 builtin @code{m4_define} macro.  In addition to
10289 defining a macro, @code{AC_DEFUN} adds to it some code that is used to
10290 constrain the order in which macros are called (@pxref{Prerequisite
10291 Macros}).
10293 An Autoconf macro definition looks like this:
10295 @example
10296 AC_DEFUN(@var{macro-name}, @var{macro-body})
10297 @end example
10299 You can refer to any arguments passed to the macro as @samp{$1},
10300 @samp{$2}, etc.  @xref{Definitions, , How to define new macros, m4.info,
10301 @acronym{GNU} M4}, for more complete information on writing M4 macros.
10303 Be sure to properly quote both the @var{macro-body} @emph{and} the
10304 @var{macro-name} to avoid any problems if the macro happens to have
10305 been previously defined.
10307 Each macro should have a header comment that gives its prototype, and a
10308 brief description.  When arguments have default values, display them in
10309 the prototype.  For example:
10311 @example
10312 # AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
10313 # --------------------------------------
10314 m4_define([AC_MSG_ERROR],
10315   [@{ AS_MESSAGE([error: $1], [2])
10316      exit m4_default([$2], [1]); @}])
10317 @end example
10319 Comments about the macro should be left in the header comment.  Most
10320 other comments make their way into @file{configure}, so just keep
10321 using @samp{#} to introduce comments.
10323 @cindex @code{dnl}
10324 If you have some special comments about pure M4 code, comments
10325 that make no sense in @file{configure} and in the header comment, then
10326 use the builtin @code{dnl}: it causes M4 to discard the text
10327 through the next newline.
10329 Keep in mind that @code{dnl} is rarely needed to introduce comments;
10330 @code{dnl} is more useful to get rid of the newlines following macros
10331 that produce no output, such as @code{AC_REQUIRE}.
10334 @node Macro Names
10335 @section Macro Names
10337 All of the Autoconf macros have all-uppercase names starting with
10338 @samp{AC_} to prevent them from accidentally conflicting with other
10339 text.  All shell variables that they use for internal purposes have
10340 mostly-lowercase names starting with @samp{ac_}.  To ensure that your
10341 macros don't conflict with present or future Autoconf macros, you should
10342 prefix your own macro names and any shell variables they use with some
10343 other sequence.  Possibilities include your initials, or an abbreviation
10344 for the name of your organization or software package.
10346 Most of the Autoconf macros' names follow a structured naming convention
10347 that indicates the kind of feature check by the name.  The macro names
10348 consist of several words, separated by underscores, going from most
10349 general to most specific.  The names of their cache variables use the
10350 same convention (@pxref{Cache Variable Names}, for more information on
10351 them).
10353 The first word of the name after @samp{AC_} usually tells the category
10354 of the feature being tested.  Here are the categories used in Autoconf for
10355 specific test macros, the kind of macro that you are more likely to
10356 write.  They are also used for cache variables, in all-lowercase.  Use
10357 them where applicable; where they're not, invent your own categories.
10359 @table @code
10360 @item C
10361 C language builtin features.
10362 @item DECL
10363 Declarations of C variables in header files.
10364 @item FUNC
10365 Functions in libraries.
10366 @item GROUP
10367 Posix group owners of files.
10368 @item HEADER
10369 Header files.
10370 @item LIB
10371 C libraries.
10372 @item PATH
10373 Absolute names of files, including programs.
10374 @item PROG
10375 The base names of programs.
10376 @item MEMBER
10377 Members of aggregates.
10378 @item SYS
10379 Operating system features.
10380 @item TYPE
10381 C builtin or declared types.
10382 @item VAR
10383 C variables in libraries.
10384 @end table
10386 After the category comes the name of the particular feature being
10387 tested.  Any further words in the macro name indicate particular aspects
10388 of the feature.  For example, @code{AC_PROG_CC_STDC} checks whether the
10389 C compiler supports @acronym{ISO} Standard C.
10391 An internal macro should have a name that starts with an underscore;
10392 Autoconf internals should therefore start with @samp{_AC_}.
10393 Additionally, a macro that is an internal subroutine of another macro
10394 should have a name that starts with an underscore and the name of that
10395 other macro, followed by one or more words saying what the internal
10396 macro does.  For example, @code{AC_PATH_X} has internal macros
10397 @code{_AC_PATH_X_XMKMF} and @code{_AC_PATH_X_DIRECT}.
10399 @node Reporting Messages
10400 @section Reporting Messages
10401 @cindex Messages, from @command{autoconf}
10403 When macros statically diagnose abnormal situations, benign or fatal,
10404 they should report them using these macros.  For dynamic issues, i.e.,
10405 when @command{configure} is run, see @ref{Printing Messages}.
10407 @defmac AC_DIAGNOSE (@var{category}, @var{message})
10408 @acindex{DIAGNOSE}
10409 Report @var{message} as a warning (or as an error if requested by the
10410 user) if warnings of the @var{category} are turned on.  You are
10411 encouraged to use standard categories, which currently include:
10413 @table @samp
10414 @item all
10415 messages that don't fall into one of the following categories.  Use of an
10416 empty @var{category} is equivalent.
10418 @item cross
10419 related to cross compilation issues.
10421 @item obsolete
10422 use of an obsolete construct.
10424 @item syntax
10425 dubious syntactic constructs, incorrectly ordered macro calls.
10426 @end table
10427 @end defmac
10429 @defmac AC_WARNING (@var{message})
10430 @acindex{WARNING}
10431 Equivalent to @samp{AC_DIAGNOSE([syntax], @var{message})}, but you are
10432 strongly encouraged to use a finer grained category.
10433 @end defmac
10435 @defmac AC_FATAL (@var{message})
10436 @acindex{FATAL}
10437 Report a severe error @var{message}, and have @command{autoconf} die.
10438 @end defmac
10440 When the user runs @samp{autoconf -W error}, warnings from
10441 @code{AC_DIAGNOSE} and @code{AC_WARNING} are reported as error, see
10442 @ref{autoconf Invocation}.
10444 @node Dependencies Between Macros
10445 @section Dependencies Between Macros
10446 @cindex Dependencies between macros
10448 Some Autoconf macros depend on other macros having been called first in
10449 order to work correctly.  Autoconf provides a way to ensure that certain
10450 macros are called if needed and a way to warn the user if macros are
10451 called in an order that might cause incorrect operation.
10453 @menu
10454 * Prerequisite Macros::         Ensuring required information
10455 * Suggested Ordering::          Warning about possible ordering problems
10456 * One-Shot Macros::             Ensuring a macro is called only once
10457 @end menu
10459 @node Prerequisite Macros
10460 @subsection Prerequisite Macros
10461 @cindex Prerequisite macros
10462 @cindex Macros, prerequisites
10464 A macro that you write might need to use values that have previously
10465 been computed by other macros.  For example, @code{AC_DECL_YYTEXT}
10466 examines the output of @code{flex} or @code{lex}, so it depends on
10467 @code{AC_PROG_LEX} having been called first to set the shell variable
10468 @code{LEX}.
10470 Rather than forcing the user of the macros to keep track of the
10471 dependencies between them, you can use the @code{AC_REQUIRE} macro to do
10472 it automatically.  @code{AC_REQUIRE} can ensure that a macro is only
10473 called if it is needed, and only called once.
10475 @defmac AC_REQUIRE (@var{macro-name})
10476 @acindex{REQUIRE}
10477 If the M4 macro @var{macro-name} has not already been called, call it
10478 (without any arguments).  Make sure to quote @var{macro-name} with
10479 square brackets.  @var{macro-name} must have been defined using
10480 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
10481 that it has been called.
10483 @code{AC_REQUIRE} must be used inside a macro defined by @code{AC_DEFUN}; it
10484 must not be called from the top level.
10485 @end defmac
10487 @code{AC_REQUIRE} is often misunderstood.  It really implements
10488 dependencies between macros in the sense that if one macro depends upon
10489 another, the latter is expanded @emph{before} the body of the
10490 former.  To be more precise, the required macro is expanded before
10491 the outermost defined macro in the current expansion stack.
10492 In particular, @samp{AC_REQUIRE([FOO])} is not replaced with the body of
10493 @code{FOO}.  For instance, this definition of macros:
10495 @example
10496 @group
10497 AC_DEFUN([TRAVOLTA],
10498 [test "$body_temperature_in_celsius" -gt "38" &&
10499   dance_floor=occupied])
10500 AC_DEFUN([NEWTON_JOHN],
10501 [test "$hair_style" = "curly" &&
10502   dance_floor=occupied])
10503 @end group
10505 @group
10506 AC_DEFUN([RESERVE_DANCE_FLOOR],
10507 [if date | grep '^Sat.*pm' >/dev/null 2>&1; then
10508   AC_REQUIRE([TRAVOLTA])
10509   AC_REQUIRE([NEWTON_JOHN])
10510 fi])
10511 @end group
10512 @end example
10514 @noindent
10515 with this @file{configure.ac}
10517 @example
10518 AC_INIT([Dance Manager], [1.0], [bug-dance@@example.org])
10519 RESERVE_DANCE_FLOOR
10520 if test "$dance_floor" = occupied; then
10521   AC_MSG_ERROR([cannot pick up here, let's move])
10523 @end example
10525 @noindent
10526 does not leave you with a better chance to meet a kindred soul at
10527 other times than Saturday night since it expands into:
10529 @example
10530 @group
10531 test "$body_temperature_in_Celsius" -gt "38" &&
10532   dance_floor=occupied
10533 test "$hair_style" = "curly" &&
10534   dance_floor=occupied
10536 if date | grep '^Sat.*pm' >/dev/null 2>&1; then
10540 @end group
10541 @end example
10543 This behavior was chosen on purpose: (i) it prevents messages in
10544 required macros from interrupting the messages in the requiring macros;
10545 (ii) it avoids bad surprises when shell conditionals are used, as in:
10547 @example
10548 @group
10549 if @dots{}; then
10550   AC_REQUIRE([SOME_CHECK])
10552 @dots{}
10553 SOME_CHECK
10554 @end group
10555 @end example
10557 The helper macros @code{AS_IF} and @code{AS_CASE} may be used to
10558 enforce expansion of required macros outside of shell conditional
10559 constructs.  You are furthermore encouraged to put all @code{AC_REQUIRE} calls
10560 at the beginning of a macro.  You can use @code{dnl} to avoid the empty
10561 lines they leave.
10563 @node Suggested Ordering
10564 @subsection Suggested Ordering
10565 @cindex Macros, ordering
10566 @cindex Ordering macros
10568 Some macros should be run before another macro if both are called, but
10569 neither @emph{requires} that the other be called.  For example, a macro
10570 that changes the behavior of the C compiler should be called before any
10571 macros that run the C compiler.  Many of these dependencies are noted in
10572 the documentation.
10574 Autoconf provides the @code{AC_BEFORE} macro to warn users when macros
10575 with this kind of dependency appear out of order in a
10576 @file{configure.ac} file.  The warning occurs when creating
10577 @command{configure} from @file{configure.ac}, not when running
10578 @command{configure}.
10580 For example, @code{AC_PROG_CPP} checks whether the C compiler
10581 can run the C preprocessor when given the @option{-E} option.  It should
10582 therefore be called after any macros that change which C compiler is
10583 being used, such as @code{AC_PROG_CC}.  So @code{AC_PROG_CC} contains:
10585 @example
10586 AC_BEFORE([$0], [AC_PROG_CPP])dnl
10587 @end example
10589 @noindent
10590 This warns the user if a call to @code{AC_PROG_CPP} has already occurred
10591 when @code{AC_PROG_CC} is called.
10593 @defmac AC_BEFORE (@var{this-macro-name}, @var{called-macro-name})
10594 @acindex{BEFORE}
10595 Make M4 print a warning message to the standard error output if
10596 @var{called-macro-name} has already been called.  @var{this-macro-name}
10597 should be the name of the macro that is calling @code{AC_BEFORE}.  The
10598 macro @var{called-macro-name} must have been defined using
10599 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
10600 that it has been called.
10601 @end defmac
10603 @node One-Shot Macros
10604 @subsection One-Shot Macros
10605 @cindex One-shot macros
10606 @cindex Macros, called once
10608 Some macros should be called only once, either because calling them
10609 multiple time is unsafe, or because it is bad style.  For instance
10610 Autoconf ensures that @code{AC_CANONICAL_BUILD} and cousins
10611 (@pxref{Canonicalizing}) are evaluated only once, because it makes no
10612 sense to run these expensive checks more than once.  Such one-shot
10613 macros can be defined using @code{AC_DEFUN_ONCE}.
10615 @defmac AC_DEFUN_ONCE (@var{macro-name}, @var{macro-body})
10616 @acindex{DEFUN_ONCE}
10618 Declare macro @var{macro-name} like @code{AC_DEFUN} would (@pxref{Macro
10619 Definitions}), and emit a warning any time the macro is called more than
10620 once.
10621 @end defmac
10623 Obviously it is not sensible to evaluate a macro defined by
10624 @code{AC_DEFUN_ONCE} in a macro defined by @code{AC_DEFUN}.
10625 Most of the time you want to use @code{AC_REQUIRE} (@pxref{Prerequisite
10626 Macros}).
10628 @node Obsoleting Macros
10629 @section Obsoleting Macros
10630 @cindex Obsoleting macros
10631 @cindex Macros, obsoleting
10633 Configuration and portability technology has evolved over the years.
10634 Often better ways of solving a particular problem are developed, or
10635 ad-hoc approaches are systematized.  This process has occurred in many
10636 parts of Autoconf.  One result is that some of the macros are now
10637 considered @dfn{obsolete}; they still work, but are no longer considered
10638 the best thing to do, hence they should be replaced with more modern
10639 macros.  Ideally, @command{autoupdate} should replace the old macro calls
10640 with their modern implementation.
10642 Autoconf provides a simple means to obsolete a macro.
10644 @defmac AU_DEFUN (@var{old-macro}, @var{implementation}, @ovar{message})
10645 @auindex{DEFUN}
10646 Define @var{old-macro} as @var{implementation}.  The only difference
10647 with @code{AC_DEFUN} is that the user is warned that
10648 @var{old-macro} is now obsolete.
10650 If she then uses @command{autoupdate}, the call to @var{old-macro} is
10651 replaced by the modern @var{implementation}.  @var{message} should
10652 include information on what to do after running @command{autoupdate};
10653 @command{autoupdate} prints it as a warning, and includes it
10654 in the updated @file{configure.ac} file.
10656 The details of this macro are hairy: if @command{autoconf} encounters an
10657 @code{AU_DEFUN}ed macro, all macros inside its second argument are expanded
10658 as usual.  However, when @command{autoupdate} is run, only M4 and M4sugar
10659 macros are expanded here, while all other macros are disabled and
10660 appear literally in the updated @file{configure.ac}.
10661 @end defmac
10663 @defmac AU_ALIAS (@var{old-name}, @var{new-name})
10664 @auindex{ALIAS}
10665 Used if the @var{old-name} is to be replaced by a call to @var{new-macro}
10666 with the same parameters.  This happens for example if the macro was renamed.
10667 @end defmac
10669 @node Coding Style
10670 @section Coding Style
10671 @cindex Coding style
10673 The Autoconf macros follow a strict coding style.  You are encouraged to
10674 follow this style, especially if you intend to distribute your macro,
10675 either by contributing it to Autoconf itself, or via other means.
10677 The first requirement is to pay great attention to the quotation.  For
10678 more details, see @ref{Autoconf Language}, and @ref{M4 Quotation}.
10680 Do not try to invent new interfaces.  It is likely that there is a macro
10681 in Autoconf that resembles the macro you are defining: try to stick to
10682 this existing interface (order of arguments, default values, etc.).  We
10683 @emph{are} conscious that some of these interfaces are not perfect;
10684 nevertheless, when harmless, homogeneity should be preferred over
10685 creativity.
10687 Be careful about clashes both between M4 symbols and between shell
10688 variables.
10690 If you stick to the suggested M4 naming scheme (@pxref{Macro Names}),
10691 you are unlikely to generate conflicts.  Nevertheless, when you need to
10692 set a special value, @emph{avoid using a regular macro name}; rather,
10693 use an ``impossible'' name.  For instance, up to version 2.13, the macro
10694 @code{AC_SUBST} used to remember what @var{symbol} macros were already defined
10695 by setting @code{AC_SUBST_@var{symbol}}, which is a regular macro name.
10696 But since there is a macro named @code{AC_SUBST_FILE}, it was just
10697 impossible to @samp{AC_SUBST(FILE)}!  In this case,
10698 @code{AC_SUBST(@var{symbol})} or @code{_AC_SUBST(@var{symbol})} should
10699 have been used (yes, with the parentheses).
10700 @c or better yet, high-level macros such as @code{m4_expand_once}
10702 No Autoconf macro should ever enter the user-variable name space; i.e.,
10703 except for the variables that are the actual result of running the
10704 macro, all shell variables should start with @code{ac_}.  In
10705 addition, small macros or any macro that is likely to be embedded in
10706 other macros should be careful not to use obvious names.
10708 @cindex @code{dnl}
10709 Do not use @code{dnl} to introduce comments: most of the comments you
10710 are likely to write are either header comments which are not output
10711 anyway, or comments that should make their way into @file{configure}.
10712 There are exceptional cases where you do want to comment special M4
10713 constructs, in which case @code{dnl} is right, but keep in mind that it
10714 is unlikely.
10716 M4 ignores the leading blanks and newlines before each argument.
10717 Use this feature to
10718 indent in such a way that arguments are (more or less) aligned with the
10719 opening parenthesis of the macro being called.  For instance, instead of
10721 @example
10722 AC_CACHE_CHECK(for EMX OS/2 environment,
10723 ac_cv_emxos2,
10724 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __EMX__;])],
10725 [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
10726 @end example
10728 @noindent
10729 write
10731 @example
10732 AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10733 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10734                    [ac_cv_emxos2=yes],
10735                    [ac_cv_emxos2=no])])
10736 @end example
10738 @noindent
10739 or even
10741 @example
10742 AC_CACHE_CHECK([for EMX OS/2 environment],
10743                [ac_cv_emxos2],
10744                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
10745                                                    [return __EMX__;])],
10746                                   [ac_cv_emxos2=yes],
10747                                   [ac_cv_emxos2=no])])
10748 @end example
10750 When using @code{AC_RUN_IFELSE} or any macro that cannot work when
10751 cross-compiling, provide a pessimistic value (typically @samp{no}).
10753 Feel free to use various tricks to prevent auxiliary tools, such as
10754 syntax-highlighting editors, from behaving improperly.  For instance,
10755 instead of:
10757 @example
10758 m4_bpatsubst([$1], [$"])
10759 @end example
10761 @noindent
10764 @example
10765 m4_bpatsubst([$1], [$""])
10766 @end example
10768 @noindent
10769 so that Emacsen do not open an endless ``string'' at the first quote.
10770 For the same reasons, avoid:
10772 @example
10773 test $[#] != 0
10774 @end example
10776 @noindent
10777 and use:
10779 @example
10780 test $[@@%:@@] != 0
10781 @end example
10783 @noindent
10784 Otherwise, the closing bracket would be hidden inside a @samp{#}-comment,
10785 breaking the bracket-matching highlighting from Emacsen.  Note the
10786 preferred style to escape from M4: @samp{$[1]}, @samp{$[@@]}, etc.  Do
10787 not escape when it is unnecessary.  Common examples of useless quotation
10788 are @samp{[$]$1} (write @samp{$$1}), @samp{[$]var} (use @samp{$var}),
10789 etc.  If you add portability issues to the picture, you'll prefer
10790 @samp{$@{1+"$[@@]"@}} to @samp{"[$]@@"}, and you'll prefer do something
10791 better than hacking Autoconf @code{:-)}.
10793 When using @command{sed}, don't use @option{-e} except for indenting
10794 purposes.  With the @code{s} and @code{y} commands, the preferred
10795 separator is @samp{/} unless @samp{/} itself might appear in the pattern
10796 or replacement, in which case you should use @samp{|}, or optionally
10797 @samp{,} if you know the pattern and replacement cannot contain a file
10798 name.  If none of these characters will do, choose a printable character
10799 that cannot appear in the pattern or replacement.  Characters from the
10800 set @samp{"#$&'()*;<=>?`|~} are good choices if the pattern or
10801 replacement might contain a file name, since they have special meaning
10802 to the shell and are less likely to occur in file names.
10804 @xref{Macro Definitions}, for details on how to define a macro.  If a
10805 macro doesn't use @code{AC_REQUIRE}, is expected to never be the object
10806 of an @code{AC_REQUIRE} directive, and macros required by other macros
10807 inside arguments do not need to be expanded before this macro, then
10808 use @code{m4_define}.  In case of doubt, use @code{AC_DEFUN}.
10809 All the @code{AC_REQUIRE} statements should be at the beginning of the
10810 macro, and each statement should be followed by @code{dnl}.
10812 You should not rely on the number of arguments: instead of checking
10813 whether an argument is missing, test that it is not empty.  It provides
10814 both a simpler and a more predictable interface to the user, and saves
10815 room for further arguments.
10817 Unless the macro is short, try to leave the closing @samp{])} at the
10818 beginning of a line, followed by a comment that repeats the name of the
10819 macro being defined.  This introduces an additional newline in
10820 @command{configure}; normally, that is not a problem, but if you want to
10821 remove it you can use @samp{[]dnl} on the last line.  You can similarly
10822 use @samp{[]dnl} after a macro call to remove its newline.  @samp{[]dnl}
10823 is recommended instead of @samp{dnl} to ensure that M4 does not
10824 interpret the @samp{dnl} as being attached to the preceding text or
10825 macro output.  For example, instead of:
10827 @example
10828 AC_DEFUN([AC_PATH_X],
10829 [AC_MSG_CHECKING([for X])
10830 AC_REQUIRE_CPP()
10831 @r{# @dots{}omitted@dots{}}
10832   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10833 fi])
10834 @end example
10836 @noindent
10837 you would write:
10839 @example
10840 AC_DEFUN([AC_PATH_X],
10841 [AC_REQUIRE_CPP()[]dnl
10842 AC_MSG_CHECKING([for X])
10843 @r{# @dots{}omitted@dots{}}
10844   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10845 fi[]dnl
10846 ])# AC_PATH_X
10847 @end example
10849 If the macro is long, try to split it into logical chunks.  Typically,
10850 macros that check for a bug in a function and prepare its
10851 @code{AC_LIBOBJ} replacement should have an auxiliary macro to perform
10852 this setup.  Do not hesitate to introduce auxiliary macros to factor
10853 your code.
10855 In order to highlight the recommended coding style, here is a macro
10856 written the old way:
10858 @example
10859 dnl Check for EMX on OS/2.
10860 dnl _AC_EMXOS2
10861 AC_DEFUN(_AC_EMXOS2,
10862 [AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2,
10863 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, return __EMX__;)],
10864 ac_cv_emxos2=yes, ac_cv_emxos2=no)])
10865 test "$ac_cv_emxos2" = yes && EMXOS2=yes])
10866 @end example
10868 @noindent
10869 and the new way:
10871 @example
10872 # _AC_EMXOS2
10873 # ----------
10874 # Check for EMX on OS/2.
10875 m4_define([_AC_EMXOS2],
10876 [AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10877 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10878                    [ac_cv_emxos2=yes],
10879                    [ac_cv_emxos2=no])])
10880 test "$ac_cv_emxos2" = yes && EMXOS2=yes[]dnl
10881 ])# _AC_EMXOS2
10882 @end example
10887 @c ============================================= Portable Shell Programming
10889 @node Portable Shell
10890 @chapter Portable Shell Programming
10891 @cindex Portable shell programming
10893 When writing your own checks, there are some shell-script programming
10894 techniques you should avoid in order to make your code portable.  The
10895 Bourne shell and upward-compatible shells like the Korn shell and Bash
10896 have evolved over the years, but to prevent trouble, do not take
10897 advantage of features that were added after Unix version 7, circa
10898 1977 (@pxref{Systemology}).
10900 You should not use shell functions, aliases, negated character
10901 classes, or other features that are not found in all Bourne-compatible
10902 shells; restrict yourself to the lowest common denominator.  Even
10903 @code{unset} is not supported by all shells!
10905 Some ancient systems have quite
10906 small limits on the length of the @samp{#!} line; for instance, 32
10907 bytes (not including the newline) on SunOS 4.
10908 A few ancient 4.2@acronym{BSD} based systems (such as Dynix circa 1984)
10909 required a single space between the @samp{#!} and the @samp{/}.
10910 However, these ancient systems are no longer of practical concern.
10912 The set of external programs you should run in a @command{configure} script
10913 is fairly small.  @xref{Utilities in Makefiles, , Utilities in
10914 Makefiles, standards, @acronym{GNU} Coding Standards}, for the list.  This
10915 restriction allows users to start out with a fairly small set of
10916 programs and build the rest, avoiding too many interdependencies between
10917 packages.
10919 Some of these external utilities have a portable subset of features; see
10920 @ref{Limitations of Usual Tools}.
10922 There are other sources of documentation about shells.  The
10923 specification for the Posix
10924 @uref{http://www.opengroup.org/@/susv3/@/utilities/@/xcu_chap02.html, Shell
10925 Command Language}, though more generous than the restrictive shell
10926 subset described above, is fairly portable nowadays.  Also please see
10927 @uref{http://www.faqs.org/@/faqs/@/unix-faq/@/shell/, the Shell FAQs}.
10929 @menu
10930 * Shellology::                  A zoology of shells
10931 * Here-Documents::              Quirks and tricks
10932 * File Descriptors::            FDs and redirections
10933 * File System Conventions::     File names
10934 * Shell Substitutions::         Variable and command expansions
10935 * Assignments::                 Varying side effects of assignments
10936 * Parentheses::                 Parentheses in shell scripts
10937 * Slashes::                     Slashes in shell scripts
10938 * Special Shell Variables::     Variables you should not change
10939 * Limitations of Builtins::     Portable use of not so portable /bin/sh
10940 * Limitations of Usual Tools::  Portable use of portable tools
10941 @end menu
10943 @node Shellology
10944 @section Shellology
10945 @cindex Shellology
10947 There are several families of shells, most prominently the Bourne family
10948 and the C shell family which are deeply incompatible.  If you want to
10949 write portable shell scripts, avoid members of the C shell family.  The
10950 @uref{http://www.faqs.org/@/faqs/@/unix-faq/@/shell/@/shell-differences/, the
10951 Shell difference FAQ} includes a small history of Posix shells, and a
10952 comparison between several of them.
10954 Below we describe some of the members of the Bourne shell family.
10956 @table @asis
10957 @item Ash
10958 @cindex Ash
10959 Ash is often used on @acronym{GNU}/Linux and @acronym{BSD}
10960 systems as a light-weight Bourne-compatible shell.  Ash 0.2 has some
10961 bugs that are fixed in the 0.3.x series, but portable shell scripts
10962 should work around them, since version 0.2 is still shipped with many
10963 @acronym{GNU}/Linux distributions.
10965 To be compatible with Ash 0.2:
10967 @itemize @minus
10968 @item
10969 don't use @samp{$?} after expanding empty or unset variables,
10970 or at the start of an @command{eval}:
10972 @example
10973 foo=
10974 false
10975 $foo
10976 echo "Do not use it: $?"
10977 false
10978 eval 'echo "Do not use it: $?"'
10979 @end example
10981 @item
10982 don't use command substitution within variable expansion:
10984 @example
10985 cat $@{FOO=`bar`@}
10986 @end example
10988 @item
10989 beware that single builtin substitutions are not performed by a
10990 subshell, hence their effect applies to the current shell!  @xref{Shell
10991 Substitutions}, item ``Command Substitution''.
10992 @end itemize
10994 @item Bash
10995 @cindex Bash
10996 To detect whether you are running Bash, test whether
10997 @code{BASH_VERSION} is set.  To require
10998 Posix compatibility, run @samp{set -o posix}.  @xref{Bash POSIX
10999 Mode, , Bash Posix Mode, bash, The @acronym{GNU} Bash Reference
11000 Manual}, for details.
11002 @item Bash 2.05 and later
11003 @cindex Bash 2.05 and later
11004 Versions 2.05 and later of Bash use a different format for the
11005 output of the @command{set} builtin, designed to make evaluating its
11006 output easier.  However, this output is not compatible with earlier
11007 versions of Bash (or with many other shells, probably).  So if
11008 you use Bash 2.05 or higher to execute @command{configure},
11009 you'll need to use Bash 2.05 for all other build tasks as well.
11011 @item Ksh
11012 @cindex Ksh
11013 @cindex Korn shell
11014 @prindex @samp{ksh}
11015 @prindex @samp{ksh88}
11016 @prindex @samp{ksh93}
11017 The Korn shell is compatible with the Bourne family and it mostly
11018 conforms to Posix.  It has two major variants commonly
11019 called @samp{ksh88} and @samp{ksh93}, named after the years of initial
11020 release.  It is usually called @command{ksh}, but is called @command{sh}
11021 on some hosts if you set your path appropriately.
11023 Solaris systems have three variants:
11024 @prindex @command{/usr/bin/ksh} on Solaris
11025 @command{/usr/bin/ksh} is @samp{ksh88}; it is
11026 standard on Solaris 2.0 and later.
11027 @prindex @command{/usr/xpg4/bin/sh} on Solaris
11028 @command{/usr/xpg4/bin/sh} is a Posix-compliant variant of
11029 @samp{ksh88}; it is standard on Solaris 9 and later.
11030 @prindex @command{/usr/dt/bin/dtksh} on Solaris
11031 @command{/usr/dt/bin/dtksh} is @samp{ksh93}.
11032 Variants that are not standard may be parts of optional
11033 packages.  There is no extra charge for these packages, but they are
11034 not part of a minimal OS install and therefore some installations may
11035 not have it.
11037 Starting with Tru64 Version 4.0, the Korn shell @command{/usr/bin/ksh}
11038 is also available as @command{/usr/bin/posix/sh}.  If the environment
11039 variable @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
11040 the standard shell conform to Posix.
11042 @item Pdksh
11043 @prindex @samp{pdksh}
11044 A public-domain clone of the Korn shell called @command{pdksh} is widely
11045 available: it has most of the @samp{ksh88} features along with a few of
11046 its own.  It usually sets @code{KSH_VERSION}, except if invoked as
11047 @command{/bin/sh} on Open@acronym{BSD}, and similarly to Bash you can require
11048 Posix compatibility by running @samp{set -o posix}.  Unfortunately, with
11049 @command{pdksh} 5.2.14 (the latest stable version as of February 2006)
11050 Posix mode is buggy and causes @command{pdksh} to depart from Posix in
11051 at least one respect:
11053 @example
11054 $ @kbd{echo "`echo \"hello\"`"}
11055 hello
11056 $ @kbd{set -o posix}
11057 $ @kbd{echo "`echo \"hello\"`"}
11058 "hello"
11059 @end example
11061 The last line of output contains spurious quotes.  This is yet another
11062 reason why portable shell code should not contain
11063 @code{"`@dots{}\"@dots{}\"@dots{}`"} constructs (@pxref{Shell
11064 Substitutions}).
11066 @item Zsh
11067 @cindex Zsh
11068 To detect whether you are running @command{zsh}, test whether
11069 @code{ZSH_VERSION} is set.  By default @command{zsh} is @emph{not}
11070 compatible with the Bourne shell: you must execute @samp{emulate sh},
11071 and for @command{zsh} versions before 3.1.6-dev-18 you must also
11072 set @code{NULLCMD} to @samp{:}.  @xref{Compatibility, , Compatibility,
11073 zsh, The Z Shell Manual}, for details.
11075 The default Mac OS X @command{sh} was originally Zsh; it was changed to
11076 Bash in Mac OS X 10.2.
11077 @end table
11079 The following discussion between Russ Allbery and Robert Lipe is worth
11080 reading:
11082 @noindent
11083 Russ Allbery:
11085 @quotation
11086 The @acronym{GNU} assumption that @command{/bin/sh} is the one and only shell
11087 leads to a permanent deadlock.  Vendors don't want to break users'
11088 existing shell scripts, and there are some corner cases in the Bourne
11089 shell that are not completely compatible with a Posix shell.  Thus,
11090 vendors who have taken this route will @emph{never} (OK@dots{}``never say
11091 never'') replace the Bourne shell (as @command{/bin/sh}) with a
11092 Posix shell.
11093 @end quotation
11095 @noindent
11096 Robert Lipe:
11098 @quotation
11099 This is exactly the problem.  While most (at least most System V's) do
11100 have a Bourne shell that accepts shell functions most vendor
11101 @command{/bin/sh} programs are not the Posix shell.
11103 So while most modern systems do have a shell @emph{somewhere} that meets the
11104 Posix standard, the challenge is to find it.
11105 @end quotation
11107 @node Here-Documents
11108 @section Here-Documents
11109 @cindex Here-documents
11110 @cindex Shell here-documents
11112 Don't rely on @samp{\} being preserved just because it has no special
11113 meaning together with the next symbol.  In the native @command{sh}
11114 on Open@acronym{BSD} 2.7 @samp{\"} expands to @samp{"} in here-documents with
11115 unquoted delimiter.  As a general rule, if @samp{\\} expands to @samp{\}
11116 use @samp{\\} to get @samp{\}.
11118 With Open@acronym{BSD} 2.7's @command{sh}
11120 @example
11121 @group
11122 $ @kbd{cat <<EOF
11123 > \" \\
11124 > EOF}
11125 " \
11126 @end group
11127 @end example
11129 @noindent
11130 and with Bash:
11132 @example
11133 @group
11134 bash-2.04$ @kbd{cat <<EOF
11135 > \" \\
11136 > EOF}
11137 \" \
11138 @end group
11139 @end example
11141 Some shells mishandle large here-documents: for example,
11142 Solaris 10 @command{dtksh} and the UnixWare 7.1.1 Posix shell, which are
11143 derived from Korn shell version M-12/28/93d, mishandle braced variable
11144 expansion that crosses a 1024- or 4096-byte buffer boundary
11145 within a here-document.  Only the part of the variable name after the boundary
11146 is used.  For example, @code{$@{variable@}} could be replaced by the expansion
11147 of @code{$@{ble@}}.  If the end of the variable name is aligned with the block
11148 boundary, the shell reports an error, as if you used @code{$@{@}}.
11149 Instead of @code{$@{variable-default@}}, the shell may expand
11150 @code{$@{riable-default@}}, or even @code{$@{fault@}}.  This bug can often
11151 be worked around by omitting the braces: @code{$variable}.  The bug was fixed in
11152 @samp{ksh93g} (1998-04-30) but as of 2006 many operating systems were
11153 still shipping older versions with the bug.
11155 Many older shells (including the Bourne shell) implement here-documents
11156 inefficiently.  In particular, some shells can be extremely inefficient when
11157 a single statement contains many here-documents.  For instance if your
11158 @file{configure.ac} includes something like:
11160 @example
11161 @group
11162 if <cross_compiling>; then
11163   assume this and that
11164 else
11165   check this
11166   check that
11167   check something else
11168   @dots{}
11169   on and on forever
11170   @dots{}
11172 @end group
11173 @end example
11175 A shell parses the whole @code{if}/@code{fi} construct, creating
11176 temporary files for each here-document in it.  Some shells create links
11177 for such here-documents on every @code{fork}, so that the clean-up code
11178 they had installed correctly removes them.  It is creating the links
11179 that can take the shell forever.
11181 Moving the tests out of the @code{if}/@code{fi}, or creating multiple
11182 @code{if}/@code{fi} constructs, would improve the performance
11183 significantly.  Anyway, this kind of construct is not exactly the
11184 typical use of Autoconf.  In fact, it's even not recommended, because M4
11185 macros can't look into shell conditionals, so we may fail to expand a
11186 macro when it was expanded before in a conditional path, and the
11187 condition turned out to be false at runtime, and we end up not
11188 executing the macro at all.
11190 @node File Descriptors
11191 @section File Descriptors
11192 @cindex Descriptors
11193 @cindex File descriptors
11194 @cindex Shell file descriptors
11196 Most shells, if not all (including Bash, Zsh, Ash), output traces on
11197 stderr, even for subshells.  This might result in undesirable content
11198 if you meant to capture the standard-error output of the inner command:
11200 @example
11201 $ @kbd{ash -x -c '(eval "echo foo >&2") 2>stderr'}
11202 $ @kbd{cat stderr}
11203 + eval echo foo >&2
11204 + echo foo
11206 $ @kbd{bash -x -c '(eval "echo foo >&2") 2>stderr'}
11207 $ @kbd{cat stderr}
11208 + eval 'echo foo >&2'
11209 ++ echo foo
11211 $ @kbd{zsh -x -c '(eval "echo foo >&2") 2>stderr'}
11212 @i{# Traces on startup files deleted here.}
11213 $ @kbd{cat stderr}
11214 +zsh:1> eval echo foo >&2
11215 +zsh:1> echo foo
11217 @end example
11219 @noindent
11220 One workaround is to grep out uninteresting lines, hoping not to remove
11221 good ones.
11223 If you intend to redirect both standard error and standard output,
11224 redirect standard output first.  This works better with @acronym{HP-UX},
11225 since its shell mishandles tracing if standard error is redirected
11226 first:
11228 @example
11229 $ @kbd{sh -x -c ': 2>err >out'}
11230 + :
11231 + 2> err $ @kbd{cat err}
11232 1> out
11233 @end example
11235 Don't try to redirect the standard error of a command substitution.  It
11236 must be done @emph{inside} the command substitution.  When running
11237 @samp{: `cd /zorglub` 2>/dev/null} expect the error message to
11238 escape, while @samp{: `cd /zorglub 2>/dev/null`} works properly.
11240 It is worth noting that Zsh (but not Ash nor Bash) makes it possible
11241 in assignments though: @samp{foo=`cd /zorglub` 2>/dev/null}.
11243 Don't redirect the same file descriptor several times, as you are doomed
11244 to failure under Ultrix.
11246 @example
11247 ULTRIX V4.4 (Rev. 69) System #31: Thu Aug 10 19:42:23 GMT 1995
11248 UWS V4.4 (Rev. 11)
11249 $ @kbd{eval 'echo matter >fullness' >void}
11250 illegal io
11251 $ @kbd{eval '(echo matter >fullness)' >void}
11252 illegal io
11253 $ @kbd{(eval '(echo matter >fullness)') >void}
11254 Ambiguous output redirect.
11255 @end example
11257 @noindent
11258 In each case the expected result is of course @file{fullness} containing
11259 @samp{matter} and @file{void} being empty.
11261 Don't rely on file descriptors 0, 1, and 2 remaining closed in a
11262 subsidiary program.  If any of these descriptors is closed, the
11263 operating system may open an unspecified file for the descriptor in the
11264 new process image.  Posix says this may be done only if the subsidiary
11265 program is set-user-ID or set-group-ID, but @acronym{HP-UX} 11.23 does it even for
11266 ordinary programs.
11268 Don't rely on open file descriptors being open in child processes.  In
11269 @command{ksh}, file descriptors above 2 which are opened using
11270 @samp{exec @var{n}>file} are closed by a subsequent @samp{exec} (such as
11271 that involved in the fork-and-exec which runs a program or script).
11272 Thus, using @command{sh}, we have:
11274 @example
11275 $ @kbd{cat ./descrips}
11276 #!/bin/sh -
11277 echo hello >&5
11278 $ @kbd{exec 5>t}
11279 $ @kbd{./descrips}
11280 $ @kbd{cat t}
11282 hello
11283 @end example
11285 @noindent
11286 But using ksh:
11288 @example
11289 $ @kbd{exec 5>t}
11290 $ @kbd{./descrips}
11291 hello
11292 $ @kbd{cat t}
11294 @end example
11296 @noindent
11297 Within the process which runs the @samp{descrips} script, file
11298 descriptor 5 is closed.
11300 @acronym{DOS} variants cannot rename or remove open files, such as in
11301 @samp{mv foo bar >foo} or @samp{rm foo >foo}, even though this is
11302 perfectly portable among Posix hosts.
11304 A few ancient systems reserved some file descriptors.  By convention,
11305 file descriptor 3 was opened to @file{/dev/tty} when you logged into
11306 Eighth Edition (1985) through Tenth Edition Unix (1989).  File
11307 descriptor 4 had a special use on the Stardent/Kubota Titan (circa
11308 1990), though we don't now remember what it was.  Both these systems are
11309 obsolete, so it's now safe to treat file descriptors 3 and 4 like any
11310 other file descriptors.
11312 @node File System Conventions
11313 @section File System Conventions
11314 @cindex File system conventions
11316 Autoconf uses shell-script processing extensively, so the file names
11317 that it processes should not contain characters that are special to the
11318 shell.  Special characters include space, tab, newline, @sc{nul}, and
11319 the following:
11321 @example
11322 " # $ & ' ( ) * ; < = > ? [ \ ` |
11323 @end example
11325 Also, file names should not begin with @samp{~} or @samp{-}, and should
11326 contain neither @samp{-} immediately after @samp{/} nor @samp{~}
11327 immediately after @samp{:}.  On Posix-like platforms, directory names
11328 should not contain @samp{:}, as this runs afoul of @samp{:} used as the
11329 path separator.
11331 These restrictions apply not only to the files that you distribute, but
11332 also to the absolute file names of your source, build, and destination
11333 directories.
11335 On some Posix-like platforms, @samp{!} and @samp{^} are special too, so
11336 they should be avoided.
11338 Posix lets implementations treat leading @file{//} specially, but
11339 requires leading @file{///} and beyond to be equivalent to @file{/}.
11340 Most Unix variants treat @file{//} like @file{/}.  However, some treat
11341 @file{//} as a ``super-root'' that can provide access to files that are
11342 not otherwise reachable from @file{/}.  The super-root tradition began
11343 with Apollo Domain/OS, which died out long ago, but unfortunately Cygwin
11344 has revived it.
11346 While @command{autoconf} and friends are usually run on some Posix
11347 variety, they can be used on other systems, most notably @acronym{DOS}
11348 variants.  This impacts several assumptions regarding file names.
11350 @noindent
11351 For example, the following code:
11353 @example
11354 case $foo_dir in
11355   /*) # Absolute
11356      ;;
11357   *)
11358      foo_dir=$dots$foo_dir ;;
11359 esac
11360 @end example
11362 @noindent
11363 fails to properly detect absolute file names on those systems, because
11364 they can use a drivespec, and usually use a backslash as directory
11365 separator.  If you want to be portable to @acronym{DOS} variants (at the
11366 price of rejecting valid but oddball Posix file names like @file{a:\b}),
11367 you can check for absolute file names like this:
11369 @example
11370 case $foo_dir in
11371   [\\/]* | ?:[\\/]* ) # Absolute
11372      ;;
11373   *)
11374      foo_dir=$dots$foo_dir ;;
11375 esac
11376 @end example
11378 @noindent
11379 Make sure you quote the brackets if appropriate and keep the backslash as
11380 first character (@pxref{Limitations of Builtins}).
11382 Also, because the colon is used as part of a drivespec, these systems don't
11383 use it as path separator.  When creating or accessing paths, you can use the
11384 @code{PATH_SEPARATOR} output variable instead.  @command{configure} sets this
11385 to the appropriate value (@samp{:} or @samp{;}) when it starts up.
11387 File names need extra care as well.  While @acronym{DOS} variants
11388 that are Posixy enough to run @command{autoconf} (such as @acronym{DJGPP})
11389 are usually able to handle long file names properly, there are still
11390 limitations that can seriously break packages.  Several of these issues
11391 can be easily detected by the
11392 @uref{ftp://ftp.gnu.org/gnu/non-gnu/doschk/doschk-1.1.tar.gz, doschk}
11393 package.
11395 A short overview follows; problems are marked with @sc{sfn}/@sc{lfn} to
11396 indicate where they apply: @sc{sfn} means the issues are only relevant to
11397 plain @acronym{DOS}, not to @acronym{DOS} under Microsoft Windows
11398 variants, while @sc{lfn} identifies problems that exist even under
11399 Microsoft Windows variants.
11401 @table @asis
11402 @item No multiple dots (@sc{sfn})
11403 @acronym{DOS} cannot handle multiple dots in file names.  This is an especially
11404 important thing to remember when building a portable configure script,
11405 as @command{autoconf} uses a .in suffix for template files.
11407 This is perfectly OK on Posix variants:
11409 @example
11410 AC_CONFIG_HEADERS([config.h])
11411 AC_CONFIG_FILES([source.c foo.bar])
11412 AC_OUTPUT
11413 @end example
11415 @noindent
11416 but it causes problems on @acronym{DOS}, as it requires @samp{config.h.in},
11417 @samp{source.c.in} and @samp{foo.bar.in}.  To make your package more portable
11418 to @acronym{DOS}-based environments, you should use this instead:
11420 @example
11421 AC_CONFIG_HEADERS([config.h:config.hin])
11422 AC_CONFIG_FILES([source.c:source.cin foo.bar:foobar.in])
11423 AC_OUTPUT
11424 @end example
11426 @item No leading dot (@sc{sfn})
11427 @acronym{DOS} cannot handle file names that start with a dot.  This is usually
11428 not important for @command{autoconf}.
11430 @item Case insensitivity (@sc{lfn})
11431 @acronym{DOS} is case insensitive, so you cannot, for example, have both a
11432 file called @samp{INSTALL} and a directory called @samp{install}.  This
11433 also affects @command{make}; if there's a file called @samp{INSTALL} in
11434 the directory, @samp{make install} does nothing (unless the
11435 @samp{install} target is marked as PHONY).
11437 @item The 8+3 limit (@sc{sfn})
11438 Because the @acronym{DOS} file system only stores the first 8 characters of
11439 the file name and the first 3 of the extension, those must be unique.
11440 That means that @file{foobar-part1.c}, @file{foobar-part2.c} and
11441 @file{foobar-prettybird.c} all resolve to the same file name
11442 (@file{FOOBAR-P.C}).  The same goes for @file{foo.bar} and
11443 @file{foo.bartender}.
11445 The 8+3 limit is not usually a problem under Microsoft Windows, as it
11446 uses numeric
11447 tails in the short version of file names to make them unique.  However, a
11448 registry setting can turn this behavior off.  While this makes it
11449 possible to share file trees containing long file names between @sc{sfn}
11450 and @sc{lfn} environments, it also means the above problem applies there
11451 as well.
11453 @item Invalid characters (@sc{lfn})
11454 Some characters are invalid in @acronym{DOS} file names, and should therefore
11455 be avoided.  In a @sc{lfn} environment, these are @samp{/}, @samp{\},
11456 @samp{?}, @samp{*}, @samp{:}, @samp{<}, @samp{>}, @samp{|} and @samp{"}.
11457 In a @sc{sfn} environment, other characters are also invalid.  These
11458 include @samp{+}, @samp{,}, @samp{[} and @samp{]}.
11460 @item Invalid names (@sc{lfn})
11461 Some @acronym{DOS} file names are reserved, and cause problems if you
11462 try to use files with those names.  These names include @file{CON},
11463 @file{AUX}, @file{COM1}, @file{COM2}, @file{COM3}, @file{COM4},
11464 @file{LPT1}, @file{LPT2}, @file{LPT3}, @file{NUL}, and @file{PRN}.
11465 File names are case insensitive, so even names like
11466 @file{aux/config.guess} are disallowed.
11468 @end table
11470 @node Shell Substitutions
11471 @section Shell Substitutions
11472 @cindex Shell substitutions
11474 Contrary to a persistent urban legend, the Bourne shell does not
11475 systematically split variables and back-quoted expressions, in particular
11476 on the right-hand side of assignments and in the argument of @code{case}.
11477 For instance, the following code:
11479 @example
11480 case "$given_srcdir" in
11481 .)  top_srcdir="`echo "$dots" | sed 's,/$,,'`" ;;
11482 *)  top_srcdir="$dots$given_srcdir" ;;
11483 esac
11484 @end example
11486 @noindent
11487 is more readable when written as:
11489 @example
11490 case $given_srcdir in
11491 .)  top_srcdir=`echo "$dots" | sed 's,/$,,'` ;;
11492 *)  top_srcdir=$dots$given_srcdir ;;
11493 esac
11494 @end example
11496 @noindent
11497 and in fact it is even @emph{more} portable: in the first case of the
11498 first attempt, the computation of @code{top_srcdir} is not portable,
11499 since not all shells properly understand @code{"`@dots{}"@dots{}"@dots{}`"}.
11500 Worse yet, not all shells understand @code{"`@dots{}\"@dots{}\"@dots{}`"}
11501 the same way.  There is just no portable way to use double-quoted
11502 strings inside double-quoted back-quoted expressions (pfew!).
11504 @table @code
11505 @item $@@
11506 @cindex @samp{"$@@"}
11507 One of the most famous shell-portability issues is related to
11508 @samp{"$@@"}.  When there are no positional arguments, Posix says
11509 that @samp{"$@@"} is supposed to be equivalent to nothing, but the
11510 original Unix version 7 Bourne shell treated it as equivalent to
11511 @samp{""} instead, and this behavior survives in later implementations
11512 like Digital Unix 5.0.
11514 The traditional way to work around this portability problem is to use
11515 @samp{$@{1+"$@@"@}}.  Unfortunately this method does not work with
11516 Zsh (3.x and 4.x), which is used on Mac OS X@.  When emulating
11517 the Bourne shell, Zsh performs word splitting on @samp{$@{1+"$@@"@}}:
11519 @example
11520 zsh $ @kbd{emulate sh}
11521 zsh $ @kbd{for i in "$@@"; do echo $i; done}
11522 Hello World
11524 zsh $ @kbd{for i in $@{1+"$@@"@}; do echo $i; done}
11525 Hello
11526 World
11528 @end example
11530 @noindent
11531 Zsh handles plain @samp{"$@@"} properly, but we can't use plain
11532 @samp{"$@@"} because of the portability problems mentioned above.
11533 One workaround relies on Zsh's ``global aliases'' to convert
11534 @samp{$@{1+"$@@"@}} into @samp{"$@@"} by itself:
11536 @example
11537 test "$@{ZSH_VERSION+set@}" = set && alias -g '$@{1+"$@@"@}'='"$@@"'
11538 @end example
11540 A more conservative workaround is to avoid @samp{"$@@"} if it is
11541 possible that there may be no positional arguments.  For example,
11542 instead of:
11544 @example
11545 cat conftest.c "$@@"
11546 @end example
11548 you can use this instead:
11550 @example
11551 case $# in
11552 0) cat conftest.c;;
11553 *) cat conftest.c "$@@";;
11554 esac
11555 @end example
11557 Autoconf macros often use the @command{set} command to update
11558 @samp{$@@}, so if you are writing shell code intended for
11559 @command{configure} you should not assume that the value of @samp{$@@}
11560 persists for any length of time.
11563 @item $@{10@}
11564 @cindex positional parameters
11565 The 10th, 11th, @dots{} positional parameters can be accessed only after
11566 a @code{shift}.  The 7th Edition shell reported an error if given
11567 @code{$@{10@}}, and
11568 Solaris 10 @command{/bin/sh} still acts that way:
11570 @example
11571 $ @kbd{set 1 2 3 4 5 6 7 8 9 10}
11572 $ @kbd{echo $@{10@}}
11573 bad substitution
11574 @end example
11576 @item $@{@var{var}:-@var{value}@}
11577 @c Info cannot handle `:' in index entries.
11578 @c @cindex $@{@var{var}:-@var{value}@}
11579 Old @acronym{BSD} shells, including the Ultrix @code{sh}, don't accept the
11580 colon for any shell substitution, and complain and die.
11582 @item $@{@var{var}=@var{literal}@}
11583 @cindex $@{@var{var}=@var{literal}@}
11584 Be sure to quote:
11586 @example
11587 : $@{var='Some words'@}
11588 @end example
11590 @noindent
11591 otherwise some shells, such as on Digital Unix V 5.0, die because
11592 of a ``bad substitution''.
11594 @sp 1
11596 Solaris @command{/bin/sh} has a frightening bug in its interpretation
11597 of this.  Imagine you need set a variable to a string containing
11598 @samp{@}}.  This @samp{@}} character confuses Solaris @command{/bin/sh}
11599 when the affected variable was already set.  This bug can be exercised
11600 by running:
11602 @example
11603 $ @kbd{unset foo}
11604 $ @kbd{foo=$@{foo='@}'@}}
11605 $ @kbd{echo $foo}
11607 $ @kbd{foo=$@{foo='@}'   # no error; this hints to what the bug is}
11608 $ @kbd{echo $foo}
11610 $ @kbd{foo=$@{foo='@}'@}}
11611 $ @kbd{echo $foo}
11612 @}@}
11613  ^ ugh!
11614 @end example
11616 It seems that @samp{@}} is interpreted as matching @samp{$@{}, even
11617 though it is enclosed in single quotes.  The problem doesn't happen
11618 using double quotes.
11620 @item $@{@var{var}=@var{expanded-value}@}
11621 @cindex $@{@var{var}=@var{expanded-value}@}
11622 On Ultrix,
11623 running
11625 @example
11626 default="yu,yaa"
11627 : $@{var="$default"@}
11628 @end example
11630 @noindent
11631 sets @var{var} to @samp{M-yM-uM-,M-yM-aM-a}, i.e., the 8th bit of
11632 each char is set.  You don't observe the phenomenon using a simple
11633 @samp{echo $var} since apparently the shell resets the 8th bit when it
11634 expands $var.  Here are two means to make this shell confess its sins:
11636 @example
11637 $ @kbd{cat -v <<EOF
11638 $var
11639 EOF}
11640 @end example
11642 @noindent
11645 @example
11646 $ @kbd{set | grep '^var=' | cat -v}
11647 @end example
11649 One classic incarnation of this bug is:
11651 @example
11652 default="a b c"
11653 : $@{list="$default"@}
11654 for c in $list; do
11655   echo $c
11656 done
11657 @end example
11659 @noindent
11660 You'll get @samp{a b c} on a single line.  Why?  Because there are no
11661 spaces in @samp{$list}: there are @samp{M- }, i.e., spaces with the 8th
11662 bit set, hence no IFS splitting is performed!!!
11664 One piece of good news is that Ultrix works fine with @samp{:
11665 $@{list=$default@}}; i.e., if you @emph{don't} quote.  The bad news is
11666 then that @acronym{QNX} 4.25 then sets @var{list} to the @emph{last} item of
11667 @var{default}!
11669 The portable way out consists in using a double assignment, to switch
11670 the 8th bit twice on Ultrix:
11672 @example
11673 list=$@{list="$default"@}
11674 @end example
11676 @noindent
11677 @dots{}but beware of the @samp{@}} bug from Solaris (see above).  For safety,
11678 use:
11680 @example
11681 test "$@{var+set@}" = set || var=@var{@{value@}}
11682 @end example
11685 @item `@var{commands}`
11686 @cindex `@var{commands}`
11687 @cindex Command Substitution
11688 Posix requires shells to trim all trailing newlines from command
11689 output before substituting it, so assignments like
11690 @samp{dir=`echo "$file" | tr a A`} do not work as expected if
11691 @samp{$file} ends in a newline.
11693 While in general it makes no sense, do not substitute a single builtin
11694 with side effects, because Ash 0.2, trying to optimize, does not fork a
11695 subshell to perform the command.
11697 For instance, if you wanted to check that @command{cd} is silent, do not
11698 use @samp{test -z "`cd /`"} because the following can happen:
11700 @example
11701 $ @kbd{pwd}
11702 /tmp
11703 $ @kbd{test -z "`cd /`" && pwd}
11705 @end example
11707 @noindent
11708 The result of @samp{foo=`exit 1`} is left as an exercise to the reader.
11710 The MSYS shell leaves a stray byte in the expansion of a double-quoted
11711 command substitution of a native program, if the end of the substution
11712 is not aligned with the end of the double quote.  This may be worked
11713 around by inserting another pair of quotes:
11715 @example
11716 $ @kbd{echo "`printf 'foo\r\n'` bar" > broken}
11717 $ @kbd{echo "`printf 'foo\r\n'`"" bar" | cmp - broken}
11718 - broken differ: char 4, line 1
11719 @end example
11722 @item $(@var{commands})
11723 @cindex $(@var{commands})
11724 This construct is meant to replace @samp{`@var{commands}`},
11725 and it has most of the problems listed under @code{`@var{commands}`}.
11727 This construct can be
11728 nested while this is impossible to do portably with back quotes.
11729 Unfortunately it is not yet universally supported.  Most notably, even recent
11730 releases of Solaris don't support it:
11732 @example
11733 $ @kbd{showrev -c /bin/sh | grep version}
11734 Command version: SunOS 5.10 Generic 121004-01 Oct 2005
11735 $ @kbd{echo $(echo blah)}
11736 syntax error: `(' unexpected
11737 @end example
11739 @noindent
11740 nor does @sc{irix} 6.5's Bourne shell:
11741 @example
11742 $ @kbd{uname -a}
11743 IRIX firebird-image 6.5 07151432 IP22
11744 $ @kbd{echo $(echo blah)}
11745 $(echo blah)
11746 @end example
11748 If you do use @samp{$(@var{commands})}, make sure that the commands
11749 do not start with a parenthesis, as that would cause confusion with
11750 a different notation @samp{$((@var{expression}))} that in modern
11751 shells is an arithmetic expression not a command.  To avoid the
11752 confusion, insert a space between the two opening parentheses.
11754 Avoid @var{commands} that contain unbalanced parentheses in
11755 here-documents, comments, or case statement patterns, as many shells
11756 mishandle them.  For example, Bash 3.1, @samp{ksh88}, @command{pdksh}
11757 5.2.14, and Zsh 4.2.6 all mishandle the following valid command:
11759 @example
11760 echo $(case x in x) echo hello;; esac)
11761 @end example
11763 @item ^
11764 @cindex ^ quoting
11765 Always quote @samp{^}, otherwise traditional shells such as
11766 @command{/bin/sh} on Solaris 10 treat this like @samp{|}.
11768 @end table
11771 @node Assignments
11772 @section Assignments
11773 @cindex Shell assignments
11775 When setting several variables in a row, be aware that the order of the
11776 evaluation is undefined.  For instance @samp{foo=1 foo=2; echo $foo}
11777 gives @samp{1} with Solaris @command{/bin/sh}, but @samp{2} with Bash.
11778 You must use
11779 @samp{;} to enforce the order: @samp{foo=1; foo=2; echo $foo}.
11781 Don't rely on the following to find @file{subdir/program}:
11783 @example
11784 PATH=subdir$PATH_SEPARATOR$PATH program
11785 @end example
11787 @noindent
11788 as this does not work with Zsh 3.0.6.  Use something like this
11789 instead:
11791 @example
11792 (PATH=subdir$PATH_SEPARATOR$PATH; export PATH; exec program)
11793 @end example
11795 Don't rely on the exit status of an assignment: Ash 0.2 does not change
11796 the status and propagates that of the last statement:
11798 @example
11799 $ @kbd{false || foo=bar; echo $?}
11801 $ @kbd{false || foo=`:`; echo $?}
11803 @end example
11805 @noindent
11806 and to make things even worse, @acronym{QNX} 4.25 just sets the exit status
11807 to 0 in any case:
11809 @example
11810 $ @kbd{foo=`exit 1`; echo $?}
11812 @end example
11814 To assign default values, follow this algorithm:
11816 @enumerate
11817 @item
11818 If the default value is a literal and does not contain any closing
11819 brace, use:
11821 @example
11822 : $@{var='my literal'@}
11823 @end example
11825 @item
11826 If the default value contains no closing brace, has to be expanded, and
11827 the variable being initialized is not intended to be IFS-split
11828 (i.e., it's not a list), then use:
11830 @example
11831 : $@{var="$default"@}
11832 @end example
11834 @item
11835 If the default value contains no closing brace, has to be expanded, and
11836 the variable being initialized is intended to be IFS-split (i.e., it's a list),
11837 then use:
11839 @example
11840 var=$@{var="$default"@}
11841 @end example
11843 @item
11844 If the default value contains a closing brace, then use:
11846 @example
11847 test "$@{var+set@}" = set || var="has a '@}'"
11848 @end example
11849 @end enumerate
11851 In most cases @samp{var=$@{var="$default"@}} is fine, but in case of
11852 doubt, just use the last form.  @xref{Shell Substitutions}, items
11853 @samp{$@{@var{var}:-@var{value}@}} and @samp{$@{@var{var}=@var{value}@}}
11854 for the rationale.
11856 @node Parentheses
11857 @section Parentheses in Shell Scripts
11858 @cindex Shell parentheses
11860 Beware of two opening parentheses in a row, as some shell
11861 implementations mishandle them.  For example, @samp{pdksh} 5.2.14
11862 misparses the following code:
11864 @example
11865 if ((true) || false); then
11866   echo ok
11868 @end example
11870 @noindent
11871 To work around this problem, insert a space between the two opening
11872 parentheses.  There is a similar problem and workaround with
11873 @samp{$((}; see @ref{Shell Substitutions}.
11875 Posix requires support for @code{case} patterns with opening
11876 parentheses like this:
11878 @example
11879 case $file_name in
11880 (*.c) echo "C source code";;
11881 esac
11882 @end example
11884 @noindent
11885 but the @code{(} in this example is not portable to many older Bourne
11886 shell implementations.  It can be omitted safely.
11888 @node Slashes
11889 @section Slashes in Shell Scripts
11890 @cindex Shell slashes
11892 Unpatched Tru64 5.1 @command{sh} omits the last slash of command-line
11893 arguments that contain two trailing slashes:
11895 @example
11896 $ @kbd{echo / // /// //// .// //.}
11897 / / // /// ./ //.
11898 $ @kbd{x=//}
11899 $ @kbd{eval "echo \$x"}
11901 $ @kbd{set -x}
11902 $ @kbd{echo abc | tr -t ab //}
11903 + echo abc
11904 + tr -t ab /
11906 @end example
11908 Unpatched Tru64 4.0 @command{sh} adds a slash after @samp{"$var"} if the
11909 variable is empty and the second double-quote is followed by a word that
11910 begins and ends with slash:
11912 @example
11913 $ @kbd{sh -xc 'p=; echo "$p"/ouch/'}
11915 + echo //ouch/
11916 //ouch/
11917 @end example
11919 However, our understanding is that patches are available, so perhaps
11920 it's not worth worrying about working around these horrendous bugs.
11922 @node Special Shell Variables
11923 @section Special Shell Variables
11924 @cindex Shell variables
11925 @cindex Special shell variables
11927 Some shell variables should not be used, since they can have a deep
11928 influence on the behavior of the shell.  In order to recover a sane
11929 behavior from the shell, some variables should be unset, but
11930 @command{unset} is not portable (@pxref{Limitations of Builtins}) and a
11931 fallback value is needed.
11933 As a general rule, shell variable names containing a lower-case letter
11934 are safe; you can define and use these variables without worrying about
11935 their effect on the underlying system, and without worrying about
11936 whether the shell changes them unexpectedly.  (The exception is the
11937 shell variable @code{status}, as described below.)
11939 Here is a list of names that are known to cause trouble.  This list is
11940 not exhaustive, but you should be safe if you avoid the name
11941 @code{status} and names containing only upper-case letters and
11942 underscores.
11944 @c Alphabetical order, case insensitive, `A' before `a'.
11945 @table @code
11946 @item _
11947 Many shells reserve @samp{$_} for various purposes, e.g., the name of
11948 the last command executed.
11950 @item BIN_SH
11951 @evindex BIN_SH
11952 In Tru64, if @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
11953 the standard shell conform to Posix.
11955 @item CDPATH
11956 @evindex CDPATH
11957 When this variable is set it specifies a list of directories to search
11958 when invoking @code{cd} with a relative file name that did not start
11959 with @samp{./} or @samp{../}.  Posix
11960 1003.1-2001 says that if a nonempty directory name from @env{CDPATH}
11961 is used successfully, @code{cd} prints the resulting absolute
11962 file name.  Unfortunately this output can break idioms like
11963 @samp{abs=`cd src && pwd`} because @code{abs} receives the name twice.
11964 Also, many shells do not conform to this part of Posix; for
11965 example, @command{zsh} prints the result only if a directory name
11966 other than @file{.} was chosen from @env{CDPATH}.
11968 In practice the shells that have this problem also support
11969 @command{unset}, so you can work around the problem as follows:
11971 @example
11972 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
11973 @end example
11975 You can also avoid output by ensuring that your directory name is
11976 absolute or anchored at @samp{./}, as in @samp{abs=`cd ./src && pwd`}.
11978 Autoconf-generated scripts automatically unset @env{CDPATH} if
11979 possible, so you need not worry about this problem in those scripts.
11981 @item DUALCASE
11982 @evindex DUALCASE
11983 In the MKS shell, case statements and file name generation are
11984 case-insensitive unless @env{DUALCASE} is nonzero.
11985 Autoconf-generated scripts export this variable when they start up.
11987 @item ENV
11988 @itemx MAIL
11989 @itemx MAILPATH
11990 @itemx PS1
11991 @itemx PS2
11992 @itemx PS4
11993 @evindex ENV
11994 @evindex MAIL
11995 @evindex MAILPATH
11996 @evindex PS1
11997 @evindex PS2
11998 @evindex PS4
11999 These variables should not matter for shell scripts, since they are
12000 supposed to affect only interactive shells.  However, at least one
12001 shell (the pre-3.0 @sc{uwin} Korn shell) gets confused about
12002 whether it is interactive, which means that (for example) a @env{PS1}
12003 with a side effect can unexpectedly modify @samp{$?}.  To work around
12004 this bug, Autoconf-generated scripts do something like this:
12006 @example
12007 (unset ENV) >/dev/null 2>&1 && unset ENV MAIL MAILPATH
12008 PS1='$ '
12009 PS2='> '
12010 PS4='+ '
12011 @end example
12013 @item IFS
12014 @evindex IFS
12015 Long ago, shell scripts inherited @env{IFS} from the environment,
12016 but this caused many problems so modern shells ignore any environment
12017 settings for @env{IFS}.
12019 Don't set the first character of @code{IFS} to backslash.  Indeed,
12020 Bourne shells use the first character (backslash) when joining the
12021 components in @samp{"$@@"} and some shells then reinterpret (!)@: the
12022 backslash escapes, so you can end up with backspace and other strange
12023 characters.
12025 The proper value for @code{IFS} (in regular code, not when performing
12026 splits) is @samp{@key{SPC}@key{TAB}@key{RET}}.  The first character is
12027 especially important, as it is used to join the arguments in @samp{$*};
12028 however, note that traditional shells, but also bash-2.04, fail to adhere
12029 to this and join with a space anyway.
12031 @item LANG
12032 @itemx LC_ALL
12033 @itemx LC_COLLATE
12034 @itemx LC_CTYPE
12035 @itemx LC_MESSAGES
12036 @itemx LC_MONETARY
12037 @itemx LC_NUMERIC
12038 @itemx LC_TIME
12039 @evindex LANG
12040 @evindex LC_ALL
12041 @evindex LC_COLLATE
12042 @evindex LC_CTYPE
12043 @evindex LC_MESSAGES
12044 @evindex LC_MONETARY
12045 @evindex LC_NUMERIC
12046 @evindex LC_TIME
12048 Autoconf-generated scripts normally set all these variables to
12049 @samp{C} because so much configuration code assumes the C locale and
12050 Posix requires that locale environment variables be set to
12051 @samp{C} if the C locale is desired.  However, some older, nonstandard
12052 systems (notably @acronym{SCO}) break if locale environment variables
12053 are set to @samp{C}, so when running on these systems
12054 Autoconf-generated scripts unset the variables instead.
12056 @item LANGUAGE
12057 @evindex LANGUAGE
12059 @env{LANGUAGE} is not specified by Posix, but it is a @acronym{GNU}
12060 extension that overrides @env{LC_ALL} in some cases, so
12061 Autoconf-generated scripts set it too.
12063 @item LC_ADDRESS
12064 @itemx LC_IDENTIFICATION
12065 @itemx LC_MEASUREMENT
12066 @itemx LC_NAME
12067 @itemx LC_PAPER
12068 @itemx LC_TELEPHONE
12069 @evindex LC_ADDRESS
12070 @evindex LC_IDENTIFICATION
12071 @evindex LC_MEASUREMENT
12072 @evindex LC_NAME
12073 @evindex LC_PAPER
12074 @evindex LC_TELEPHONE
12076 These locale environment variables are @acronym{GNU} extensions.  They
12077 are treated like their Posix brethren (@env{LC_COLLATE},
12078 etc.)@: as described above.
12080 @item LINENO
12081 Most modern shells provide the current line number in @code{LINENO}.
12082 Its value is the line number of the beginning of the current command.
12083 Autoconf attempts to execute @command{configure} with a shell that
12084 supports @code{LINENO}.
12085 If no such shell is available, it attempts to implement @code{LINENO}
12086 with a Sed prepass that replaces each instance of the string
12087 @code{$LINENO} (not followed by an alphanumeric character) with the
12088 line's number.
12090 You should not rely on @code{LINENO} within @command{eval}, as the
12091 behavior differs in practice.  Also, the possibility of the Sed
12092 prepass means that you should not rely on @code{$LINENO} when quoted,
12093 when in here-documents, or when in long commands that cross line
12094 boundaries.  Subshells should be OK, though.  In the following
12095 example, lines 1, 6, and 9 are portable, but the other instances of
12096 @code{LINENO} are not:
12098 @example
12099 @group
12100 $ @kbd{cat lineno}
12101 echo 1. $LINENO
12102 cat <<EOF
12103 3. $LINENO
12104 4. $LINENO
12106 ( echo 6. $LINENO )
12107 eval 'echo 7. $LINENO'
12108 echo 8. '$LINENO'
12109 echo 9. $LINENO '
12110 10.' $LINENO
12111 @end group
12112 @group
12113 $ @kbd{bash-2.05 lineno}
12114 1. 1
12115 3. 2
12116 4. 2
12117 6. 6
12118 7. 1
12119 8. $LINENO
12120 9. 9
12121 10. 9
12122 @end group
12123 @group
12124 $ @kbd{zsh-3.0.6 lineno}
12125 1. 1
12126 3. 2
12127 4. 2
12128 6. 6
12129 7. 7
12130 8. $LINENO
12131 9. 9
12132 10. 9
12133 @end group
12134 @group
12135 $ @kbd{pdksh-5.2.14 lineno}
12136 1. 1
12137 3. 2
12138 4. 2
12139 6. 6
12140 7. 0
12141 8. $LINENO
12142 9. 9
12143 10. 9
12144 @end group
12145 @group
12146 $ @kbd{sed '=' <lineno |}
12147 > @kbd{  sed '}
12148 > @kbd{    N}
12149 > @kbd{    s,$,-,}
12150 > @kbd{    t loop}
12151 > @kbd{    :loop}
12152 > @kbd{    s,^\([0-9]*\)\(.*\)[$]LINENO\([^a-zA-Z0-9_]\),\1\2\1\3,}
12153 > @kbd{    t loop}
12154 > @kbd{    s,-$,,}
12155 > @kbd{    s,^[0-9]*\n,,}
12156 > @kbd{  ' |}
12157 > @kbd{  sh}
12158 1. 1
12159 3. 3
12160 4. 4
12161 6. 6
12162 7. 7
12163 8. 8
12164 9. 9
12165 10. 10
12166 @end group
12167 @end example
12169 @item NULLCMD
12170 @evindex NULLCMD
12171 When executing the command @samp{>foo}, @command{zsh} executes
12172 @samp{$NULLCMD >foo} unless it is operating in Bourne shell
12173 compatibility mode and the @command{zsh} version is newer
12174 than 3.1.6-dev-18.  If you are using an older @command{zsh}
12175 and forget to set @env{NULLCMD},
12176 your script might be suspended waiting for data on its standard input.
12178 @item PATH_SEPARATOR
12179 @evindex PATH_SEPARATOR
12180 On @acronym{DJGPP} systems, the @env{PATH_SEPARATOR} environment
12181 variable can be set to either @samp{:} or @samp{;} to control the path
12182 separator Bash uses to set up certain environment variables (such as
12183 @env{PATH}).  You can set this variable to @samp{;} if you want
12184 @command{configure} to use @samp{;} as a separator; this might be useful
12185 if you plan to use non-Posix shells to execute files.  @xref{File System
12186 Conventions}, for more information about @code{PATH_SEPARATOR}.
12188 @item PWD
12189 @evindex PWD
12190 Posix 1003.1-2001 requires that @command{cd} and
12191 @command{pwd} must update the @env{PWD} environment variable to point
12192 to the logical name of the current directory, but traditional shells
12193 do not support this.  This can cause confusion if one shell instance
12194 maintains @env{PWD} but a subsidiary and different shell does not know
12195 about @env{PWD} and executes @command{cd}; in this case @env{PWD}
12196 points to the wrong directory.  Use @samp{`pwd`} rather than
12197 @samp{$PWD}.
12199 @item RANDOM
12200 Many shells provide @code{RANDOM}, a variable that returns a different
12201 integer each time it is used.  Most of the time, its value does not
12202 change when it is not used, but on @sc{irix} 6.5 the value changes all
12203 the time.  This can be observed by using @command{set}.  It is common
12204 practice to use @code{$RANDOM} as part of a file name, but code
12205 shouldn't rely on @code{$RANDOM} expanding to a nonempty string.
12207 @item status
12208 This variable is an alias to @samp{$?} for @code{zsh} (at least 3.1.6),
12209 hence read-only.  Do not use it.
12210 @end table
12212 @node Limitations of Builtins
12213 @section Limitations of Shell Builtins
12214 @cindex Shell builtins
12215 @cindex Limitations of shell builtins
12217 No, no, we are serious: some shells do have limitations!  :)
12219 You should always keep in mind that any builtin or command may support
12220 options, and therefore differ in behavior with arguments
12221 starting with a dash.  For instance, the innocent @samp{echo "$word"}
12222 can give unexpected results when @code{word} starts with a dash.  It is
12223 often possible to avoid this problem using @samp{echo "x$word"}, taking
12224 the @samp{x} into account later in the pipe.
12226 @table @asis
12227 @item @command{.}
12228 @prindex @command{.}
12229 Use @command{.} only with regular files (use @samp{test -f}).  Bash
12230 2.03, for instance, chokes on @samp{. /dev/null}.  Also, remember that
12231 @command{.} uses @env{PATH} if its argument contains no slashes, so if
12232 you want to use @command{.} on a file @file{foo} in the current
12233 directory, you must use @samp{. ./foo}.
12235 @item @command{!}
12236 @prindex @command{!}
12237 The Unix version 7 shell did not support
12238 negating the exit status of commands with @command{!}, and this feature
12239 is still absent from some shells (e.g., Solaris @command{/bin/sh}).
12240 Shell code like this:
12242 @example
12243 if ! cmp file1 file2 >/dev/null 2>&1; then
12244   echo files differ or trouble
12246 @end example
12248 is therefore not portable in practice.  Typically it is easy to rewrite
12249 such code, e.g.:
12251 @example
12252 cmp file1 file2 >/dev/null 2>&1 ||
12253   echo files differ or trouble
12254 @end example
12256 More generally, one can always rewrite @samp{! @var{command}} as:
12258 @example
12259 if @var{command}; then (exit 1); else :; fi
12260 @end example
12262 @item @command{break}
12263 @c ------------------
12264 @prindex @command{break}
12265 The use of @samp{break 2} etc.@: is safe.
12268 @item @command{case}
12269 @c -----------------
12270 @prindex @command{case}
12271 You don't need to quote the argument; no splitting is performed.
12273 You don't need the final @samp{;;}, but you should use it.
12275 Because of a bug in its @code{fnmatch}, Bash fails to properly
12276 handle backslashes in character classes:
12278 @example
12279 bash-2.02$ @kbd{case /tmp in [/\\]*) echo OK;; esac}
12280 bash-2.02$
12281 @end example
12283 @noindent
12284 This is extremely unfortunate, since you are likely to use this code to
12285 handle Posix or @sc{ms-dos} absolute file names.  To work around this
12286 bug, always put the backslash first:
12288 @example
12289 bash-2.02$ @kbd{case '\TMP' in [\\/]*) echo OK;; esac}
12291 bash-2.02$ @kbd{case /tmp in [\\/]*) echo OK;; esac}
12293 @end example
12295 Many Bourne shells cannot handle closing brackets in character classes
12296 correctly.
12298 Some shells also have problems with backslash escaping in case you do not want
12299 to match the backslash: both a backslash and the escaped character match this
12300 pattern.  To work around this, specify the character class in a variable, so
12301 that quote removal does not apply afterwards, and the special characters don't
12302 have to be backslash-escaped:
12304 @example
12305 $ @kbd{case '\' in [\<]) echo OK;; esac}
12307 $ @kbd{scanset='[<]'; case '\' in $scanset) echo OK;; esac}
12309 @end example
12311 Even with this, Solaris @command{ksh} matches a backslash if the set
12312 contains any
12313 of the characters @samp{|}, @samp{&}, @samp{(}, or @samp{)}.
12315 Conversely, Tru64 @command{ksh} (circa 2003) erroneously always matches
12316 a closing parenthesis if not specified in a character class:
12318 @example
12319 $ @kbd{case foo in *\)*) echo fail ;; esac}
12320 fail
12321 $ @kbd{case foo in *')'*) echo fail ;; esac}
12322 fail
12323 @end example
12325 Some shells, such as Ash 0.3.8, are confused by an empty
12326 @code{case}/@code{esac}:
12328 @example
12329 ash-0.3.8 $ @kbd{case foo in esac;}
12330 @error{}Syntax error: ";" unexpected (expecting ")")
12331 @end example
12333 Many shells still do not support parenthesized cases, which is a pity
12334 for those of us using tools that rely on balanced parentheses.  For
12335 instance, Solaris @command{/bin/sh}:
12337 @example
12338 $ @kbd{case foo in (foo) echo foo;; esac}
12339 @error{}syntax error: `(' unexpected
12340 @end example
12343 @item @command{cd}
12344 @c ---------------
12345 @prindex @command{cd}
12346 Posix 1003.1-2001 requires that @command{cd} must support
12347 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
12348 with @option{-L} being the default.  However, traditional shells do
12349 not support these options, and their @command{cd} command has the
12350 @option{-P} behavior.
12352 Portable scripts should assume neither option is supported, and should
12353 assume neither behavior is the default.  This can be a bit tricky,
12354 since the Posix default behavior means that, for example,
12355 @samp{ls ..} and @samp{cd ..} may refer to different directories if
12356 the current logical directory is a symbolic link.  It is safe to use
12357 @command{cd @var{dir}} if @var{dir} contains no @file{..} components.
12358 Also, Autoconf-generated scripts check for this problem when computing
12359 variables like @code{ac_top_srcdir} (@pxref{Configuration Actions}),
12360 so it is safe to @command{cd} to these variables.
12362 See @xref{Special Shell Variables}, for portability problems involving
12363 @command{cd} and the @env{CDPATH} environment variable.
12364 Also please see the discussion of the @command{pwd} command.
12367 @item @command{echo}
12368 @c -----------------
12369 @prindex @command{echo}
12370 The simple @command{echo} is probably the most surprising source of
12371 portability troubles.  It is not possible to use @samp{echo} portably
12372 unless both options and escape sequences are omitted.  New applications
12373 which are not aiming at portability should use @samp{printf} instead of
12374 @samp{echo}.
12376 Don't expect any option.  @xref{Preset Output Variables}, @code{ECHO_N}
12377 etc.@: for a means to simulate @option{-n}.
12379 Do not use backslashes in the arguments, as there is no consensus on
12380 their handling.  For @samp{echo '\n' | wc -l}, the @command{sh} of
12381 Solaris outputs 2, but Bash and Zsh (in @command{sh} emulation mode) output 1.
12382 The problem is truly @command{echo}: all the shells
12383 understand @samp{'\n'} as the string composed of a backslash and an
12384 @samp{n}.
12386 Because of these problems, do not pass a string containing arbitrary
12387 characters to @command{echo}.  For example, @samp{echo "$foo"} is safe
12388 if you know that @var{foo}'s value cannot contain backslashes and cannot
12389 start with @samp{-}, but otherwise you should use a here-document like
12390 this:
12392 @example
12393 cat <<EOF
12394 $foo
12396 @end example
12399 @item @command{eval}
12400 @c -----------------
12401 @prindex @command{eval}
12402 The @command{eval} command is useful in limited circumstances, e.g.,
12403 using commands like @samp{eval table_$key=\$value} and @samp{eval
12404 value=table_$key} to simulate a hash table when the key is known to be
12405 alphanumeric.  However, @command{eval} is tricky to use on arbitrary
12406 arguments, even when it is implemented correctly.
12408 It is obviously unwise to use @samp{eval $cmd} if the string value of
12409 @samp{cmd} was derived from an untrustworthy source.  But even if the
12410 string value is valid, @samp{eval $cmd} might not work as intended,
12411 since it causes field splitting and file name expansion to occur twice,
12412 once for the @command{eval} and once for the command itself.  It is
12413 therefore safer to use @samp{eval "$cmd"}.  For example, if @var{cmd}
12414 has the value @samp{cat test?.c}, @samp{eval $cmd} might expand to the
12415 equivalent of @samp{cat test;.c} if there happens to be a file named
12416 @file{test;.c} in the current directory; and this in turn
12417 mistakenly attempts to invoke @command{cat} on the file @file{test} and
12418 then execute the command @command{.c}.  To avoid this problem, use
12419 @samp{eval "$cmd"} rather than @samp{eval $cmd}.
12421 However, suppose that you want to output the text of the evaluated
12422 command just before executing it.  Assuming the previous example,
12423 @samp{echo "Executing: $cmd"} outputs @samp{Executing: cat test?.c}, but
12424 this output doesn't show the user that @samp{test;.c} is the actual name
12425 of the copied file.  Conversely, @samp{eval "echo Executing: $cmd"}
12426 works on this example, but it fails with @samp{cmd='cat foo >bar'},
12427 since it mistakenly replaces the contents of @file{bar} by the
12428 string @samp{cat foo}.  No simple, general, and portable solution to
12429 this problem is known.
12431 You should also be wary of common bugs in @command{eval} implementations.
12432 In some shell implementations (e.g., older @command{ash}, Open@acronym{BSD} 3.8
12433 @command{sh}, @command{pdksh} v5.2.14 99/07/13.2, and @command{zsh}
12434 4.2.5), the arguments of @samp{eval} are evaluated in a context where
12435 @samp{$?} is 0, so they exhibit behavior like this:
12437 @example
12438 $ @kbd{false; eval 'echo $?'}
12440 @end example
12442 The correct behavior here is to output a nonzero value,
12443 but portable scripts should not rely on this.
12445 You should not rely on @code{LINENO} within @command{eval}.
12446 @xref{Special Shell Variables}.
12448 @item @command{exit}
12449 @c -----------------
12450 @prindex @command{exit}
12451 The default value of @command{exit} is supposed to be @code{$?};
12452 unfortunately, some shells, such as the @acronym{DJGPP} port of Bash 2.04, just
12453 perform @samp{exit 0}.
12455 @example
12456 bash-2.04$ @kbd{foo=`exit 1` || echo fail}
12457 fail
12458 bash-2.04$ @kbd{foo=`(exit 1)` || echo fail}
12459 fail
12460 bash-2.04$ @kbd{foo=`(exit 1); exit` || echo fail}
12461 bash-2.04$
12462 @end example
12464 Using @samp{exit $?} restores the expected behavior.
12466 Some shell scripts, such as those generated by @command{autoconf}, use a
12467 trap to clean up before exiting.  If the last shell command exited with
12468 nonzero status, the trap also exits with nonzero status so that the
12469 invoker can tell that an error occurred.
12471 Unfortunately, in some shells, such as Solaris @command{/bin/sh}, an exit
12472 trap ignores the @code{exit} command's argument.  In these shells, a trap
12473 cannot determine whether it was invoked by plain @code{exit} or by
12474 @code{exit 1}.  Instead of calling @code{exit} directly, use the
12475 @code{AC_MSG_ERROR} macro that has a workaround for this problem.
12478 @item @command{export}
12479 @c -------------------
12480 @prindex @command{export}
12481 The builtin @command{export} dubs a shell variable @dfn{environment
12482 variable}.  Each update of exported variables corresponds to an update
12483 of the environment variables.  Conversely, each environment variable
12484 received by the shell when it is launched should be imported as a shell
12485 variable marked as exported.
12487 Alas, many shells, such as Solaris @command{/bin/sh},
12488 @sc{irix} 6.3, @sc{irix} 5.2,
12489 @acronym{AIX} 4.1.5, and Digital Unix 4.0, forget to
12490 @command{export} the environment variables they receive.  As a result,
12491 two variables coexist: the environment variable and the shell
12492 variable.  The following code demonstrates this failure:
12494 @example
12495 #!/bin/sh
12496 echo $FOO
12497 FOO=bar
12498 echo $FOO
12499 exec /bin/sh $0
12500 @end example
12502 @noindent
12503 when run with @samp{FOO=foo} in the environment, these shells print
12504 alternately @samp{foo} and @samp{bar}, although they should print only
12505 @samp{foo} and then a sequence of @samp{bar}s.
12507 Therefore you should @command{export} again each environment variable
12508 that you update.
12511 @item @command{false}
12512 @c ------------------
12513 @prindex @command{false}
12514 Don't expect @command{false} to exit with status 1: in native
12515 Solaris @file{/bin/false} exits with status 255.
12518 @item @command{for}
12519 @c ----------------
12520 @prindex @command{for}
12521 To loop over positional arguments, use:
12523 @example
12524 for arg
12526   echo "$arg"
12527 done
12528 @end example
12530 @noindent
12531 You may @emph{not} leave the @code{do} on the same line as @code{for},
12532 since some shells improperly grok:
12534 @example
12535 for arg; do
12536   echo "$arg"
12537 done
12538 @end example
12540 If you want to explicitly refer to the positional arguments, given the
12541 @samp{$@@} bug (@pxref{Shell Substitutions}), use:
12543 @example
12544 for arg in $@{1+"$@@"@}; do
12545   echo "$arg"
12546 done
12547 @end example
12549 @noindent
12550 But keep in mind that Zsh, even in Bourne shell emulation mode, performs
12551 word splitting on @samp{$@{1+"$@@"@}}; see @ref{Shell Substitutions},
12552 item @samp{$@@}, for more.
12555 @item @command{if}
12556 @c ---------------
12557 @prindex @command{if}
12558 Using @samp{!} is not portable.  Instead of:
12560 @example
12561 if ! cmp -s file file.new; then
12562   mv file.new file
12564 @end example
12566 @noindent
12567 use:
12569 @example
12570 if cmp -s file file.new; then :; else
12571   mv file.new file
12573 @end example
12575 There are shells that do not reset the exit status from an @command{if}:
12577 @example
12578 $ @kbd{if (exit 42); then true; fi; echo $?}
12580 @end example
12582 @noindent
12583 whereas a proper shell should have printed @samp{0}.  This is especially
12584 bad in makefiles since it produces false failures.  This is why properly
12585 written makefiles, such as Automake's, have such hairy constructs:
12587 @example
12588 if test -f "$file"; then
12589   install "$file" "$dest"
12590 else
12591   :
12593 @end example
12596 @item @command{printf}
12597 @c ------------------
12598 @prindex @command{printf}
12599 A format string starting with a @samp{-} can cause problems.
12600 Bash (e.g., 2.05b) interprets it as an options argument and
12601 gives an error.  And @samp{--} to mark the end of options is not good
12602 in the Net@acronym{BSD} Almquist shell (e.g., 0.4.6) which takes that
12603 literally as the format string.  Putting the @samp{-} in a @samp{%c}
12604 or @samp{%s} is probably the easiest way to avoid doubt,
12606 @example
12607 printf %s -foo
12608 @end example
12611 @item @command{read}
12612 @c ------------------
12613 @prindex @command{read}
12614 Not all shells support @option{-r} (Solaris @command{/bin/sh} for example).
12617 @item @command{pwd}
12618 @c ----------------
12619 @prindex @command{pwd}
12620 With modern shells, plain @command{pwd} outputs a ``logical''
12621 directory name, some of whose components may be symbolic links.  These
12622 directory names are in contrast to ``physical'' directory names, whose
12623 components are all directories.
12625 Posix 1003.1-2001 requires that @command{pwd} must support
12626 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
12627 with @option{-L} being the default.  However, traditional shells do
12628 not support these options, and their @command{pwd} command has the
12629 @option{-P} behavior.
12631 Portable scripts should assume neither option is supported, and should
12632 assume neither behavior is the default.  Also, on many hosts
12633 @samp{/bin/pwd} is equivalent to @samp{pwd -P}, but Posix
12634 does not require this behavior and portable scripts should not rely on
12637 Typically it's best to use plain @command{pwd}.  On modern hosts this
12638 outputs logical directory names, which have the following advantages:
12640 @itemize @bullet
12641 @item
12642 Logical names are what the user specified.
12643 @item
12644 Physical names may not be portable from one installation
12645 host to another due to network file system gymnastics.
12646 @item
12647 On modern hosts @samp{pwd -P} may fail due to lack of permissions to
12648 some parent directory, but plain @command{pwd} cannot fail for this
12649 reason.
12650 @end itemize
12652 Also please see the discussion of the @command{cd} command.
12655 @item @command{set}
12656 @c ----------------
12657 @prindex @command{set}
12658 With the Free@acronym{BSD} 6.0 shell, the @command{set} command (without
12659 any options) does not sort its output.
12661 The @command{set} builtin faces the usual problem with arguments starting with a
12662 dash.  Modern shells such as Bash or Zsh understand @option{--} to specify
12663 the end of the options (any argument after @option{--} is a parameter,
12664 even @samp{-x} for instance), but many traditional shells (e.g., Solaris
12665 10 @command{/bin/sh}) simply stop option
12666 processing as soon as a non-option argument is found.  Therefore, use
12667 @samp{dummy} or simply @samp{x} to end the option processing, and use
12668 @command{shift} to pop it out:
12670 @example
12671 set x $my_list; shift
12672 @end example
12674 Avoid @samp{set -}, e.g., @samp{set - $my_list}.  Posix no
12675 longer requires support for this command, and in traditional shells
12676 @samp{set - $my_list} resets the @option{-v} and @option{-x} options, which
12677 makes scripts harder to debug.
12679 Some nonstandard shells do not recognize more than one option
12680 (e.g., @samp{set -e -x} assigns @samp{-x} to the command line).  It is
12681 better to combine them:
12683 @example
12684 set -ex
12685 @end example
12687 The @acronym{BSD} shell has had several problems with the @option{-e}
12688 option, partly because @acronym{BSD} @command{make} traditionally used
12689 @option{-e} even though this was incompatible with Posix
12690 (@pxref{Failure in Make Rules}).  Older versions of the @acronym{BSD}
12691 shell (circa 1990) mishandled @samp{&&}, @samp{||}, @samp{if}, and
12692 @samp{case} when @option{-e} was in effect, causing the shell to exit
12693 unexpectedly in some cases.  This was particularly a problem with
12694 makefiles, and led to circumlocutions like @samp{sh -c 'test -f file ||
12695 touch file'}, where the seemingly-unnecessary @samp{sh -c '@dots{}'}
12696 wrapper works around the bug.
12698 Even relatively-recent versions of the @acronym{BSD} shell (e.g.,
12699 Open@acronym{BSD} 3.4) wrongly exit with @option{-e} if a command within
12700 @samp{&&} fails inside a compound statement.  For example:
12702 @example
12703 #! /bin/sh
12704 set -e
12705 foo=''
12706 test -n "$foo" && exit 1
12707 echo one
12708 if :; then
12709   test -n "$foo" && exit 1
12711 echo two
12712 @end example
12714 @noindent
12715 does not print @samp{two}.  One workaround is to use @samp{if test -n
12716 "$foo"; then exit 1; fi} rather than @samp{test -n "$foo" && exit 1}.
12717 Another possibility is to warn @acronym{BSD} users not to use @samp{sh -e}.
12720 @item @command{shift}
12721 @c ------------------
12722 @prindex @command{shift}
12723 Not only is @command{shift}ing a bad idea when there is nothing left to
12724 shift, but in addition it is not portable: the shell of @acronym{MIPS
12725 RISC/OS} 4.52 refuses to do it.
12727 Don't use @samp{shift 2} etc.; it was not in the 7th Edition Bourne shell,
12728 and it is also absent in many pre-Posix shells.
12731 @item @command{source}
12732 @c -------------------
12733 @prindex @command{source}
12734 This command is not portable, as Posix does not require it; use
12735 @command{.} instead.
12738 @item @command{test}
12739 @c -----------------
12740 @prindex @command{test}
12741 The @code{test} program is the way to perform many file and string
12742 tests.  It is often invoked by the alternate name @samp{[}, but using
12743 that name in Autoconf code is asking for trouble since it is an M4 quote
12744 character.
12746 If you need to make multiple checks using @code{test}, combine them with
12747 the shell operators @samp{&&} and @samp{||} instead of using the
12748 @code{test} operators @option{-a} and @option{-o}.  On System V, the
12749 precedence of @option{-a} and @option{-o} is wrong relative to the unary
12750 operators; consequently, Posix does not specify them, so using them
12751 is nonportable.  If you combine @samp{&&} and @samp{||} in the same
12752 statement, keep in mind that they have equal precedence.
12754 It is safe to use @samp{!} as a @command{test} operator.  For example,
12755 @samp{if test ! -d foo; @dots{}} is portable even though @samp{if ! test
12756 -d foo; @dots{}} is not.
12759 @item @command{test} (files)
12760 @c -------------------------
12761 To enable @command{configure} scripts to support cross-compilation, they
12762 shouldn't do anything that tests features of the build system instead of
12763 the host system.  But occasionally you may find it necessary to check
12764 whether some arbitrary file exists.  To do so, use @samp{test -f} or
12765 @samp{test -r}.  Do not use @samp{test -x}, because 4.3@acronym{BSD} does not
12766 have it.  Do not use @samp{test -e} either, because Solaris @command{/bin/sh}
12767 lacks it.  To test for symbolic links on systems that have them, use
12768 @samp{test -h} rather than @samp{test -L}; either form conforms to
12769 Posix 1003.1-2001, but older shells like Solaris 8
12770 @code{/bin/sh} support only @option{-h}.
12772 @item @command{test} (strings)
12773 @c ---------------------------
12774 Avoid @samp{test "@var{string}"}, in particular if @var{string} might
12775 start with a dash, since @code{test} might interpret its argument as an
12776 option (e.g., @samp{@var{string} = "-n"}).
12778 Contrary to a common belief, @samp{test -n @var{string}} and
12779 @samp{test -z @var{string}} @strong{are} portable.  Nevertheless many
12780 shells (such as Solaris, @acronym{AIX} 3.2, @sc{unicos} 10.0.0.6,
12781 Digital Unix 4, etc.)@: have bizarre precedence and may be confused if
12782 @var{string} looks like an operator:
12784 @example
12785 $ @kbd{test -n =}
12786 test: argument expected
12787 @end example
12789 If there are risks, use @samp{test "x@var{string}" = x} or @samp{test
12790 "x@var{string}" != x} instead.
12792 It is common to find variations of the following idiom:
12794 @example
12795 test -n "`echo $ac_feature | sed 's/[-a-zA-Z0-9_]//g'`" &&
12796   @var{action}
12797 @end example
12799 @noindent
12800 to take an action when a token matches a given pattern.  Such constructs
12801 should always be avoided by using:
12803 @example
12804 echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1 &&
12805   @var{action}
12806 @end example
12808 @noindent
12809 Use @code{case} where possible since it is faster, being a shell builtin:
12812 @example
12813 case $ac_feature in
12814   *[!-a-zA-Z0-9_]*) @var{action};;
12815 esac
12816 @end example
12818 Alas, negated character classes are probably not portable, although no
12819 shell is known to not support the Posix syntax @samp{[!@dots{}]}
12820 (when in interactive mode, @command{zsh} is confused by the
12821 @samp{[!@dots{}]} syntax and looks for an event in its history because of
12822 @samp{!}).  Many shells do not support the alternative syntax
12823 @samp{[^@dots{}]} (Solaris, Digital Unix, etc.).
12825 One solution can be:
12827 @example
12828 expr "$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
12829   @var{action}
12830 @end example
12832 @noindent
12833 or better yet
12835 @example
12836 expr "X$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
12837   @var{action}
12838 @end example
12840 @samp{expr "X@var{foo}" : "X@var{bar}"} is more robust than @samp{echo
12841 "X@var{foo}" | grep "^X@var{bar}"}, because it avoids problems when
12842 @samp{@var{foo}} contains backslashes.
12845 @item @command{trap}
12846 @c -----------------
12847 @prindex @command{trap}
12848 It is safe to trap at least the signals 1, 2, 13, and 15.  You can also
12849 trap 0, i.e., have the @command{trap} run when the script ends (either via an
12850 explicit @command{exit}, or the end of the script).  The trap for 0 should be
12851 installed outside of a shell function, or @acronym{AIX} 5.3 @command{/bin/sh}
12852 will invoke the trap at the end of this function.
12854 Posix says that @samp{trap - 1 2 13 15} resets the traps for the
12855 specified signals to their default values, but many common shells (e.g.,
12856 Solaris @command{/bin/sh}) misinterpret this and attempt to execute a
12857 ``command'' named @command{-} when the specified conditions arise.
12858 There is no portable workaround, except for @samp{trap - 0}, for which
12859 @samp{trap '' 0} is a portable substitute.
12861 Although Posix is not absolutely clear on this point, it is widely
12862 admitted that when entering the trap @samp{$?} should be set to the exit
12863 status of the last command run before the trap.  The ambiguity can be
12864 summarized as: ``when the trap is launched by an @command{exit}, what is
12865 the @emph{last} command run: that before @command{exit}, or
12866 @command{exit} itself?''
12868 Bash considers @command{exit} to be the last command, while Zsh and
12869 Solaris @command{/bin/sh} consider that when the trap is run it is
12870 @emph{still} in the @command{exit}, hence it is the previous exit status
12871 that the trap receives:
12873 @example
12874 $ @kbd{cat trap.sh}
12875 trap 'echo $?' 0
12876 (exit 42); exit 0
12877 $ @kbd{zsh trap.sh}
12879 $ @kbd{bash trap.sh}
12881 @end example
12883 The portable solution is then simple: when you want to @samp{exit 42},
12884 run @samp{(exit 42); exit 42}, the first @command{exit} being used to
12885 set the exit status to 42 for Zsh, and the second to trigger the trap
12886 and pass 42 as exit status for Bash.
12888 The shell in Free@acronym{BSD} 4.0 has the following bug: @samp{$?} is
12889 reset to 0 by empty lines if the code is inside @command{trap}.
12891 @example
12892 $ @kbd{trap 'false}
12894 echo $?' 0
12895 $ @kbd{exit}
12897 @end example
12899 @noindent
12900 Fortunately, this bug only affects @command{trap}.
12902 @item @command{true}
12903 @c -----------------
12904 @prindex @command{true}
12905 @c Info cannot handle `:' in index entries.
12906 @c @prindex @command{:}
12907 Don't worry: as far as we know @command{true} is portable.
12908 Nevertheless, it's not always a builtin (e.g., Bash 1.x), and the
12909 portable shell community tends to prefer using @command{:}.  This has a
12910 funny side effect: when asked whether @command{false} is more portable
12911 than @command{true} Alexandre Oliva answered:
12913 @quotation
12914 In a sense, yes, because if it doesn't exist, the shell will produce an
12915 exit status of failure, which is correct for @command{false}, but not
12916 for @command{true}.
12917 @end quotation
12920 @item @command{unset}
12921 @c ------------------
12922 @prindex @command{unset}
12923 In some nonconforming shells (e.g., Bash 2.05a), @code{unset FOO} fails
12924 when @code{FOO} is not set.  Also, Bash 2.01 mishandles @code{unset
12925 MAIL} in some cases and dumps core.
12927 A few ancient shells lack @command{unset} entirely.  Nevertheless, because
12928 it is extremely useful to disable embarrassing variables such as
12929 @code{PS1}, you can test for its existence and use
12930 it @emph{provided} you give a neutralizing value when @command{unset} is
12931 not supported:
12933 @smallexample
12934 # "|| exit" suppresses any "Segmentation fault" message.
12935 if ( (MAIL=60; unset MAIL) || exit) >/dev/null 2>&1; then
12936   unset=unset
12937 else
12938   unset=false
12940 $unset PS1 || PS1='$ '
12941 @end smallexample
12943 @noindent
12944 @xref{Special Shell Variables}, for some neutralizing values.  Also, see
12945 @ref{Limitations of Builtins}, documentation of @command{export}, for
12946 the case of environment variables.
12947 @end table
12949 @node Limitations of Usual Tools
12950 @section Limitations of Usual Tools
12951 @cindex Limitations of usual tools
12953 The small set of tools you can expect to find on any machine can still
12954 include some limitations you should be aware of.
12956 @table @asis
12957 @item Awk
12958 @c ------
12959 @prindex Awk
12960 Don't leave white space before the opening parenthesis in a user function call.
12961 Posix does not allow this and @acronym{GNU} Awk rejects it:
12963 @example
12964 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
12965         BEGIN @{ die () @}'}
12966 gawk: cmd. line:2:         BEGIN @{ die () @}
12967 gawk: cmd. line:2:                      ^ parse error
12968 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
12969         BEGIN @{ die() @}'}
12970 Aaaaarg!
12971 @end example
12973 If you want your program to be deterministic, don't depend on @code{for}
12974 on arrays:
12976 @example
12977 $ @kbd{cat for.awk}
12978 END @{
12979   arr["foo"] = 1
12980   arr["bar"] = 1
12981   for (i in arr)
12982     print i
12984 $ @kbd{gawk -f for.awk </dev/null}
12987 $ @kbd{nawk -f for.awk </dev/null}
12990 @end example
12992 Some Awk implementations, such as @acronym{HP-UX} 11.0's native one, mishandle anchors:
12994 @example
12995 $ @kbd{echo xfoo | $AWK '/foo|^bar/ @{ print @}'}
12996 $ @kbd{echo bar | $AWK '/foo|^bar/ @{ print @}'}
12998 $ @kbd{echo xfoo | $AWK '/^bar|foo/ @{ print @}'}
12999 xfoo
13000 $ @kbd{echo bar | $AWK '/^bar|foo/ @{ print @}'}
13002 @end example
13004 @noindent
13005 Either do not depend on such patterns (i.e., use @samp{/^(.*foo|bar)/},
13006 or use a simple test to reject such implementations.
13008 @acronym{AIX} version 5.2 has an arbitrary limit of 399 on the
13009 length of regular expressions and literal strings in an Awk program.
13011 Traditional Awk implementations derived from Unix version 7, such as
13012 Solaris @command{/bin/awk}, have many limitations and do not
13013 conform to Posix.  Nowadays @code{AC_PROG_AWK} (@pxref{Particular
13014 Programs}) finds you an Awk that doesn't have these problems, but if
13015 for some reason you prefer not to use @code{AC_PROG_AWK} you may need to
13016 address them.
13018 Traditional Awk does not support multidimensional arrays or user-defined
13019 functions.
13021 Traditional Awk does not support the @option{-v} option.  You can use
13022 assignments after the program instead, e.g., @command{$AWK '@{print v
13023 $1@}' v=x}; however, don't forget that such assignments are not
13024 evaluated until they are encountered (e.g., after any @code{BEGIN}
13025 action).
13027 Traditional Awk does not support the keywords @code{delete} or @code{do}.
13029 Traditional Awk does not support the expressions
13030 @code{@var{a}?@var{b}:@var{c}}, @code{!@var{a}}, @code{@var{a}^@var{b}},
13031 or @code{@var{a}^=@var{b}}.
13033 Traditional Awk does not support the predefined @code{CONVFMT} variable.
13035 Traditional Awk supports only the predefined functions @code{exp},
13036 @code{int}, @code{length}, @code{log}, @code{split}, @code{sprintf},
13037 @code{sqrt}, and @code{substr}.
13039 Traditional Awk @code{getline} is not at all compatible with Posix;
13040 avoid it.
13042 Traditional Awk has @code{for (i in a) @dots{}} but no other uses of the
13043 @code{in} keyword.  For example, it lacks @code{if (i in a) @dots{}}.
13045 In code portable to both traditional and modern Awk, @code{FS} must be a
13046 string containing just one ordinary character, and similarly for the
13047 field-separator argument to @code{split}.
13049 Traditional Awk has a limit of 99
13050 fields in a record.  You may be able to circumvent this problem by using
13051 @code{split}.
13053 Traditional Awk has a limit of at most 99 bytes in a number formatted by
13054 @code{OFMT}; for example, @code{OFMT="%.300e"; print 0.1;} typically
13055 dumps core.
13057 The original version of Awk had a limit of at most 99 bytes per
13058 @code{split} field, 99 bytes per @code{substr} substring, and 99 bytes
13059 per run of non-special characters in a @code{printf} format, but these
13060 bugs have been fixed on all practical hosts that we know of.
13062 @item @command{basename}
13063 @c ---------------------
13064 @prindex @command{basename}
13065 Not all hosts have a working @command{basename}.
13066 You can use @command{expr} instead.
13068 @c AS_BASENAME is to be replaced by a better API.
13069 @ignore
13070 Not all hosts have a working @command{basename}, and you should instead
13071 use @code{AS_BASENAME} (@pxref{Programming in M4sh}), followed by
13072 @command{expr} if you need to strip a suffix.  For example:
13074 @example
13075 a=`basename "$aname"`       # This is not portable.
13076 a=`AS_BASENAME(["$aname"])` # This is more portable.
13078 # This is not portable.
13079 c=`basename "$cname" .c`
13081 # This is more portable.
13082 c=`AS_BASENAME(["$cname"])`
13083 case $c in
13084 ?*.c) c=`expr "X$c" : 'X\(.*\)\.c'`;;
13085 esac
13086 @end example
13087 @end ignore
13090 @item @command{cat}
13091 @c ----------------
13092 @prindex @command{cat}
13093 Don't rely on any option.
13096 @item @command{cc}
13097 @c ---------------
13098 @prindex @command{cc}
13099 The command @samp{cc -c foo.c} traditionally produces an object file
13100 named @file{foo.o}.  Most compilers allow @option{-c} to be combined
13101 with @option{-o} to specify a different object file name, but
13102 Posix does not require this combination and a few compilers
13103 lack support for it.  @xref{C Compiler}, for how @acronym{GNU} Make
13104 tests for this feature with @code{AC_PROG_CC_C_O}.
13106 When a compilation such as @samp{cc -o foo foo.c} fails, some compilers
13107 (such as @sc{cds} on Reliant Unix) leave a @file{foo.o}.
13109 @acronym{HP-UX} @command{cc} doesn't accept @file{.S} files to preprocess and
13110 assemble.  @samp{cc -c foo.S} appears to succeed, but in fact does
13111 nothing.
13113 The default executable, produced by @samp{cc foo.c}, can be
13115 @itemize
13116 @item @file{a.out} --- usual Posix convention.
13117 @item @file{b.out} --- i960 compilers (including @command{gcc}).
13118 @item @file{a.exe} --- @acronym{DJGPP} port of @command{gcc}.
13119 @item @file{a_out.exe} --- GNV @command{cc} wrapper for DEC C on OpenVMS.
13120 @item @file{foo.exe} --- various MS-DOS compilers.
13121 @end itemize
13123 The C compiler's traditional name is @command{cc}, but other names like
13124 @command{gcc} are common.  Posix 1003.1-2001 specifies the
13125 name @command{c99}, but older Posix editions specified
13126 @command{c89} and anyway these standard names are rarely used in
13127 practice.  Typically the C compiler is invoked from makefiles that use
13128 @samp{$(CC)}, so the value of the @samp{CC} make variable selects the
13129 compiler name.
13132 @item @command{chmod}
13133 @c ------------------
13134 @prindex @command{chmod}
13135 Avoid usages like @samp{chmod -w file}; use @samp{chmod a-w file}
13136 instead, for two reasons.  First, plain @option{-w} does not necessarily
13137 make the file unwritable, since it does not affect mode bits that
13138 correspond to bits in the file mode creation mask.  Second,
13139 Posix says that the @option{-w} might be interpreted as an
13140 implementation-specific option, not as a mode; Posix suggests
13141 using @samp{chmod -- -w file} to avoid this confusion, but unfortunately
13142 @samp{--} does not work on some older hosts.
13145 @item @command{cmp}
13146 @c ----------------
13147 @prindex @command{cmp}
13148 @command{cmp} performs a raw data comparison of two files, while
13149 @command{diff} compares two text files.  Therefore, if you might compare
13150 DOS files, even if only checking whether two files are different, use
13151 @command{diff} to avoid spurious differences due to differences of
13152 newline encoding.
13155 @item @command{cp}
13156 @c ---------------
13157 @prindex @command{cp}
13158 Avoid the @option{-r} option, since Posix 1003.1-2004 marks it as
13159 obsolescent and its behavior on special files is implementation-defined.
13160 Use @option{-R} instead.  On @acronym{GNU} hosts the two options
13161 are equivalent, but on Solaris hosts (for example) @command{cp -r}
13162 reads from pipes instead of replicating them.
13164 Some @command{cp} implementations (e.g., @acronym{BSD/OS} 4.2) do not allow
13165 trailing slashes at the end of nonexistent destination directories.  To
13166 avoid this problem, omit the trailing slashes.  For example, use
13167 @samp{cp -R source /tmp/newdir} rather than @samp{cp -R source
13168 /tmp/newdir/} if @file{/tmp/newdir} does not exist.
13170 @c This is thanks to Ian.
13171 The ancient SunOS 4 @command{cp} does not support @option{-f}, although
13172 its @command{mv} does.
13174 @cindex timestamp resolution
13175 Traditionally, file timestamps had 1-second resolution, and @samp{cp
13176 -p} copied the timestamps exactly.  However, many modern file systems
13177 have timestamps with 1-nanosecond resolution.  Unfortunately, @samp{cp
13178 -p} implementations truncate timestamps when copying files, so this
13179 can result in the destination file appearing to be older than the
13180 source.  The exact amount of truncation depends on the resolution of
13181 the system calls that @command{cp} uses; traditionally this was
13182 @code{utime}, which has 1-second resolution, but some newer
13183 @command{cp} implementations use @code{utimes}, which has
13184 1-microsecond resolution.  These newer implementations include @acronym{GNU}
13185 Core Utilities 5.0.91 or later, and Solaris 8 (sparc) patch 109933-02 or
13186 later.  Unfortunately as of January 2006 there is still no system
13187 call to set timestamps to the full nanosecond resolution.
13189 Bob Proulx notes that @samp{cp -p} always @emph{tries} to copy
13190 ownerships.  But whether it actually does copy ownerships or not is a
13191 system dependent policy decision implemented by the kernel.  If the
13192 kernel allows it then it happens.  If the kernel does not allow it then
13193 it does not happen.  It is not something @command{cp} itself has control
13194 over.
13196 In Unix System V any user can chown files to any other user, and System
13197 V also has a non-sticky @file{/tmp}.  That probably derives from the
13198 heritage of System V in a business environment without hostile users.
13199 @acronym{BSD} changed this
13200 to be a more secure model where only root can @command{chown} files and
13201 a sticky @file{/tmp} is used.  That undoubtedly derives from the heritage
13202 of @acronym{BSD} in a campus environment.
13204 @acronym{GNU}/Linux and Solaris by default follow @acronym{BSD}, but
13205 can be configured to allow a System V style @command{chown}.  On the
13206 other hand, @acronym{HP-UX} follows System V, but can
13207 be configured to use the modern security model and disallow
13208 @command{chown}.  Since it is an administrator-configurable parameter
13209 you can't use the name of the kernel as an indicator of the behavior.
13213 @item @command{date}
13214 @c -----------------
13215 @prindex @command{date}
13216 Some versions of @command{date} do not recognize special @samp{%} directives,
13217 and unfortunately, instead of complaining, they just pass them through,
13218 and exit with success:
13220 @example
13221 $ @kbd{uname -a}
13222 OSF1 medusa.sis.pasteur.fr V5.1 732 alpha
13223 $ @kbd{date "+%s"}
13225 @end example
13228 @item @command{diff}
13229 @c -----------------
13230 @prindex @command{diff}
13231 Option @option{-u} is nonportable.
13233 Some implementations, such as Tru64's, fail when comparing to
13234 @file{/dev/null}.  Use an empty file instead.
13237 @item @command{dirname}
13238 @c --------------------
13239 @prindex @command{dirname}
13240 Not all hosts have a working @command{dirname}, and you should instead
13241 use @code{AS_DIRNAME} (@pxref{Programming in M4sh}).  For example:
13243 @example
13244 dir=`dirname "$file"`       # This is not portable.
13245 dir=`AS_DIRNAME(["$file"])` # This is more portable.
13246 @end example
13249 @item @command{egrep}
13250 @c ------------------
13251 @prindex @command{egrep}
13252 Posix 1003.1-2001 no longer requires @command{egrep},
13253 but many older hosts do not yet support the Posix
13254 replacement @code{grep -E}.  Also, some traditional implementations do
13255 not work on long input lines.  To work around these problems, invoke
13256 @code{AC_PROG_EGREP} and then use @code{$EGREP}.
13258 Portable extended regular expressions should use @samp{\} only to escape
13259 characters in the string @samp{$()*+.?[\^@{|}.  For example, @samp{\@}}
13260 is not portable, even though it typically matches @samp{@}}.
13262 The empty alternative is not portable.  Use @samp{?} instead.  For
13263 instance with Digital Unix v5.0:
13265 @example
13266 > printf "foo\n|foo\n" | $EGREP '^(|foo|bar)$'
13267 |foo
13268 > printf "bar\nbar|\n" | $EGREP '^(foo|bar|)$'
13269 bar|
13270 > printf "foo\nfoo|\n|bar\nbar\n" | $EGREP '^(foo||bar)$'
13272 |bar
13273 @end example
13275 @command{$EGREP} also suffers the limitations of @command{grep}.
13277 @item @command{expr}
13278 @c -----------------
13279 @prindex @command{expr}
13280 No @command{expr} keyword starts with @samp{X}, so use @samp{expr
13281 X"@var{word}" : 'X@var{regex}'} to keep @command{expr} from
13282 misinterpreting @var{word}.
13284 Don't use @code{length}, @code{substr}, @code{match} and @code{index}.
13286 @item @command{expr} (@samp{|})
13287 @prindex @command{expr} (@samp{|})
13288 You can use @samp{|}.  Although Posix does require that @samp{expr
13289 ''} return the empty string, it does not specify the result when you
13290 @samp{|} together the empty string (or zero) with the empty string.  For
13291 example:
13293 @example
13294 expr '' \| ''
13295 @end example
13297 Posix 1003.2-1992 returns the empty string
13298 for this case, but traditional Unix returns @samp{0} (Solaris is
13299 one such example).  In Posix 1003.1-2001, the specification was
13300 changed to match traditional Unix's behavior (which is
13301 bizarre, but it's too late to fix this).  Please note that the same
13302 problem does arise when the empty string results from a computation,
13303 as in:
13305 @example
13306 expr bar : foo \| foo : bar
13307 @end example
13309 @noindent
13310 Avoid this portability problem by avoiding the empty string.
13313 @item @command{expr} (@samp{:})
13314 @c ----------------------------
13315 @prindex @command{expr}
13316 Portable @command{expr} regular expressions should use @samp{\} to
13317 escape only characters in the string @samp{$()*.0123456789[\^n@{@}}.
13318 For example, alternation, @samp{\|}, is common but Posix does not
13319 require its support, so it should be avoided in portable scripts.
13320 Similarly, @samp{\+} and @samp{\?} should be avoided.
13322 Portable @command{expr} regular expressions should not begin with
13323 @samp{^}.  Patterns are automatically anchored so leading @samp{^} is
13324 not needed anyway.
13326 The Posix standard is ambiguous as to whether
13327 @samp{expr 'a' : '\(b\)'} outputs @samp{0} or the empty string.
13328 In practice, it outputs the empty string on most platforms, but portable
13329 scripts should not assume this.  For instance, the @acronym{QNX} 4.25 native
13330 @command{expr} returns @samp{0}.
13332 One might think that a way to get a uniform behavior would be to use
13333 the empty string as a default value:
13335 @example
13336 expr a : '\(b\)' \| ''
13337 @end example
13339 @noindent
13340 Unfortunately this behaves exactly as the original expression; see the
13341 @command{expr} (@samp{|}) entry for more information.
13343 Ancient @command{expr} implementations (e.g., SunOS 4 @command{expr} and
13344 Solaris 8 @command{/usr/ucb/expr}) have a silly length limit that causes
13345 @command{expr} to fail if the matched substring is longer than 120
13346 bytes.  In this case, you might want to fall back on @samp{echo|sed} if
13347 @command{expr} fails.  Nowadays this is of practical importance only for
13348 the rare installer who mistakenly puts @file{/usr/ucb} before
13349 @file{/usr/bin} in @env{PATH}.
13351 On Mac OS X 10.4, @command{expr} mishandles the pattern @samp{[^-]} in
13352 some cases.  For example, the command
13353 @example
13354 expr Xpowerpc-apple-darwin8.1.0 : 'X[^-]*-[^-]*-\(.*\)'
13355 @end example
13357 @noindent
13358 outputs @samp{apple-darwin8.1.0} rather than the correct @samp{darwin8.1.0}.
13359 This particular case can be worked around by substituting @samp{[^--]}
13360 for @samp{[^-]}.
13362 Don't leave, there is some more!
13364 The @acronym{QNX} 4.25 @command{expr}, in addition of preferring @samp{0} to
13365 the empty string, has a funny behavior in its exit status: it's always 1
13366 when parentheses are used!
13368 @example
13369 $ @kbd{val=`expr 'a' : 'a'`; echo "$?: $val"}
13370 0: 1
13371 $ @kbd{val=`expr 'a' : 'b'`; echo "$?: $val"}
13372 1: 0
13374 $ @kbd{val=`expr 'a' : '\(a\)'`; echo "?: $val"}
13375 1: a
13376 $ @kbd{val=`expr 'a' : '\(b\)'`; echo "?: $val"}
13377 1: 0
13378 @end example
13380 @noindent
13381 In practice this can be a big problem if you are ready to catch failures
13382 of @command{expr} programs with some other method (such as using
13383 @command{sed}), since you may get twice the result.  For instance
13385 @example
13386 $ @kbd{expr 'a' : '\(a\)' || echo 'a' | sed 's/^\(a\)$/\1/'}
13387 @end example
13389 @noindent
13390 outputs @samp{a} on most hosts, but @samp{aa} on @acronym{QNX} 4.25.  A
13391 simple workaround consists of testing @command{expr} and using a variable
13392 set to @command{expr} or to @command{false} according to the result.
13394 Tru64 @command{expr} incorrectly treats the result as a number, if it
13395 can be interpreted that way:
13397 @example
13398 $ @kbd{expr 00001 : '.*\(...\)'}
13400 @end example
13403 @item @command{fgrep}
13404 @c ------------------
13405 @prindex @command{fgrep}
13406 Posix 1003.1-2001 no longer requires @command{fgrep},
13407 but many older hosts do not yet support the Posix
13408 replacement @code{grep -F}.  Also, some traditional implementations do
13409 not work on long input lines.  To work around these problems, invoke
13410 @code{AC_PROG_FGREP} and then use @code{$FGREP}.
13413 @item @command{find}
13414 @c -----------------
13415 @prindex @command{find}
13416 The option @option{-maxdepth} seems to be @acronym{GNU} specific.
13417 Tru64 v5.1, Net@acronym{BSD} 1.5 and Solaris @command{find}
13418 commands do not understand it.
13420 The replacement of @samp{@{@}} is guaranteed only if the argument is
13421 exactly @emph{@{@}}, not if it's only a part of an argument.  For
13422 instance on DU, and @acronym{HP-UX} 10.20 and @acronym{HP-UX} 11:
13424 @example
13425 $ @kbd{touch foo}
13426 $ @kbd{find . -name foo -exec echo "@{@}-@{@}" \;}
13427 @{@}-@{@}
13428 @end example
13430 @noindent
13431 while @acronym{GNU} @command{find} reports @samp{./foo-./foo}.
13434 @item @command{grep}
13435 @c -----------------
13436 @prindex @command{grep}
13437 Portable scripts can rely on the @command{grep} options @option{-c},
13438 @option{-l}, @option{-n}, and @option{-v}, but should avoid other
13439 options.  For example, don't use @option{-w}, as Posix does not require
13440 it and Irix 6.5.16m's @command{grep} does not support it.  Also,
13441 portable scripts should not combine @option{-c} with @option{-l},
13442 as Posix does not allow this.
13444 Some of the options required by Posix are not portable in practice.
13445 Don't use @samp{grep -q} to suppress output, because many @command{grep}
13446 implementations (e.g., Solaris) do not support @option{-q}.
13447 Don't use @samp{grep -s} to suppress output either, because Posix
13448 says @option{-s} does not suppress output, only some error messages;
13449 also, the @option{-s} option of traditional @command{grep} behaved
13450 like @option{-q} does in most modern implementations.  Instead,
13451 redirect the standard output and standard error (in case the file
13452 doesn't exist) of @code{grep} to @file{/dev/null}.  Check the exit
13453 status of @code{grep} to determine whether it found a match.
13455 Some traditional @command{grep} implementations do not work on long
13456 input lines.  On AIX the default @code{grep} silently truncates long
13457 lines on the input before matching.
13459 Also, many implementations do not support multiple regexps
13460 with @option{-e}: they either reject @option{-e} entirely (e.g., Solaris)
13461 or honor only the last pattern (e.g., @acronym{IRIX} 6.5 and NeXT).  To
13462 work around these problems, invoke @code{AC_PROG_GREP} and then use
13463 @code{$GREP}.
13465 Another possible workaround for the multiple @option{-e} problem is to
13466 separate the patterns by newlines, for example:
13468 @example
13469 grep 'foo
13470 bar' in.txt
13471 @end example
13473 @noindent
13474 except that this fails with traditional @command{grep}
13475 implementations and with Open@acronym{BSD} 3.8 @command{grep}.
13477 Traditional @command{grep} implementations (e.g., Solaris) do not
13478 support the @option{-E} or @option{-F} options.  To work around these
13479 problems, invoke @code{AC_PROG_EGREP} and then use @code{$EGREP}, and
13480 similarly for @code{AC_PROG_FGREP} and @code{$FGREP}.  Even if you are
13481 willing to require support for Posix @command{grep}, your script should
13482 not use both @option{-E} and @option{-F}, since Posix does not allow
13483 this combination.
13485 Portable @command{grep} regular expressions should use @samp{\} only to
13486 escape characters in the string @samp{$()*.0123456789[\^@{@}}.  For example,
13487 alternation, @samp{\|}, is common but Posix does not require its
13488 support in basic regular expressions, so it should be avoided in
13489 portable scripts.  Solaris @command{grep} does not support it.
13490 Similarly, @samp{\+} and @samp{\?} should be avoided.
13493 @item @command{join}
13494 @c -----------------
13495 @prindex @command{join}
13496 Solaris 8 @command{join} has bugs when the second operand is standard
13497 input, and when standard input is a pipe.  For example, the following
13498 shell script causes Solaris 8 @command{join} to loop forever:
13500 @example
13501 cat >file <<'EOF'
13502 1 x
13503 2 y
13505 cat file | join file -
13506 @end example
13508 Use @samp{join - file} instead.
13511 @item @command{ln}
13512 @c ---------------
13513 @prindex @command{ln}
13514 @cindex Symbolic links
13515 Don't rely on @command{ln} having a @option{-f} option.  Symbolic links
13516 are not available on old systems; use @samp{$(LN_S)} as a portable substitute.
13518 For versions of the @acronym{DJGPP} before 2.04,
13519 @command{ln} emulates symbolic links
13520 to executables by generating a stub that in turn calls the real
13521 program.  This feature also works with nonexistent files like in the
13522 Posix spec.  So @samp{ln -s file link} generates @file{link.exe},
13523 which attempts to call @file{file.exe} if run.  But this feature only
13524 works for executables, so @samp{cp -p} is used instead for these
13525 systems.  @acronym{DJGPP} versions 2.04 and later have full support
13526 for symbolic links.
13529 @item @command{ls}
13530 @c ---------------
13531 @prindex @command{ls}
13532 @cindex Listing directories
13533 The portable options are @option{-acdilrtu}.  Current practice is for
13534 @option{-l} to output both owner and group, even though ancient versions
13535 of @command{ls} omitted the group.
13537 On ancient hosts, @samp{ls foo} sent the diagnostic @samp{foo not found}
13538 to standard output if @file{foo} did not exist.  Hence a shell command
13539 like @samp{sources=`ls *.c 2>/dev/null`} did not always work, since it
13540 was equivalent to @samp{sources='*.c not found'} in the absence of
13541 @samp{.c} files.  This is no longer a practical problem, since current
13542 @command{ls} implementations send diagnostics to standard error.
13544 @item @command{mkdir}
13545 @c ------------------
13546 @prindex @command{mkdir}
13547 @cindex Making directories
13548 No @command{mkdir} option is portable to older systems.  Instead of
13549 @samp{mkdir -p @var{file-name}}, you should use
13550 @code{AS_MKDIR_P(@var{file-name})} (@pxref{Programming in M4sh})
13551 or @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs}).
13553 Combining the @option{-m} and @option{-p} options, as in @samp{mkdir -m
13554 go-w -p @var{dir}}, often leads to trouble.  Free@acronym{BSD}
13555 @command{mkdir} incorrectly attempts to change the permissions of
13556 @var{dir} even if it already exists.  @acronym{HP-UX} 11.23 and
13557 @acronym{IRIX} 6.5 @command{mkdir} often assign the wrong permissions to
13558 any newly-created parents of @var{dir}.
13560 Posix does not clearly specify whether @samp{mkdir -p foo}
13561 should succeed when @file{foo} is a symbolic link to an already-existing
13562 directory.  The @acronym{GNU} Core Utilities 5.1.0 @command{mkdir}
13563 succeeds, but Solaris @command{mkdir} fails.
13565 Traditional @code{mkdir -p} implementations suffer from race conditions.
13566 For example, if you invoke @code{mkdir -p a/b} and @code{mkdir -p a/c}
13567 at the same time, both processes might detect that @file{a} is missing,
13568 one might create @file{a}, then the other might try to create @file{a}
13569 and fail with a @code{File exists} diagnostic.  The @acronym{GNU} Core
13570 Utilities (@samp{fileutils} version 4.1), Free@acronym{BSD} 5.0,
13571 Net@acronym{BSD} 2.0.2, and Open@acronym{BSD} 2.4 are known to be
13572 race-free when two processes invoke @code{mkdir -p} simultaneously, but
13573 earlier versions are vulnerable.  Solaris @command{mkdir} is still
13574 vulnerable as of Solaris 10, and other traditional Unix systems are
13575 probably vulnerable too.  This possible race is harmful in parallel
13576 builds when several Make rules call @code{mkdir -p} to
13577 construct directories.  You may use
13578 @code{install-sh -d} as a safe replacement, provided this script is
13579 recent enough; the copy shipped with Autoconf 2.60 and Automake 1.10 is
13580 OK, but copies from older versions are vulnerable.
13583 @item @command{mktemp}
13584 @c -------------------
13585 @prindex @command{mktemp}
13586 @cindex Creating temporary files
13587 Shell scripts can use temporary files safely with @command{mktemp}, but
13588 it does not exist on all systems.  A portable way to create a safe
13589 temporary file name is to create a temporary directory with mode 700 and
13590 use a file inside this directory.  Both methods prevent attackers from
13591 gaining control, though @command{mktemp} is far less likely to fail
13592 gratuitously under attack.
13594 Here is sample code to create a new temporary directory safely:
13596 @example
13597 # Create a temporary directory $tmp in $TMPDIR (default /tmp).
13598 # Use mktemp if possible; otherwise fall back on mkdir,
13599 # with $RANDOM to make collisions less likely.
13600 : $@{TMPDIR=/tmp@}
13602   tmp=`
13603     (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
13604   ` &&
13605   test -n "$tmp" && test -d "$tmp"
13606 @} || @{
13607   tmp=$TMPDIR/foo$$-$RANDOM
13608   (umask 077 && mkdir "$tmp")
13609 @} || exit $?
13610 @end example
13613 @item @command{mv}
13614 @c ---------------
13615 @prindex @command{mv}
13616 @cindex Moving open files
13617 The only portable options are @option{-f} and @option{-i}.
13619 Moving individual files between file systems is portable (it was in Unix
13620 version 6),
13621 but it is not always atomic: when doing @samp{mv new existing}, there's
13622 a critical section where neither the old nor the new version of
13623 @file{existing} actually exists.
13625 On some systems moving files from @file{/tmp} can sometimes cause
13626 undesirable (but perfectly valid) warnings, even if you created these
13627 files.  This is because @file{/tmp} belongs to a group that ordinary
13628 users are not members of, and files created in @file{/tmp} inherit
13629 the group of @file{/tmp}.  When the file is copied, @command{mv} issues
13630 a diagnostic without failing:
13632 @smallexample
13633 $ @kbd{touch /tmp/foo}
13634 $ @kbd{mv /tmp/foo .}
13635 @error{}mv: ./foo: set owner/group (was: 100/0): Operation not permitted
13636 $ @kbd{echo $?}
13638 $ @kbd{ls foo}
13640 @end smallexample
13642 @noindent
13643 This annoying behavior conforms to Posix, unfortunately.
13645 Moving directories across mount points is not portable, use @command{cp}
13646 and @command{rm}.
13648 @acronym{DOS} variants cannot rename or remove open files, and do not
13649 support commands like @samp{mv foo bar >foo}, even though this is
13650 perfectly portable among Posix hosts.
13653 @item @command{od}
13654 @c ---------------
13655 @prindex @command{od}
13657 In Mac OS X 10.3, @command{od} does not support the
13658 standard Posix options @option{-A}, @option{-j}, @option{-N}, or
13659 @option{-t}, or the @acronym{XSI} option @option{-s}.  The only
13660 supported Posix option is @option{-v}, and the only supported
13661 @acronym{XSI} options are those in @option{-bcdox}.  The @acronym{BSD}
13662 @command{hexdump} program can be used instead.
13664 This problem no longer exists in Mac OS X 10.4.3.
13667 @item @command{rm}
13668 @c ---------------
13669 @prindex @command{rm}
13670 The @option{-f} and @option{-r} options are portable.
13672 It is not portable to invoke @command{rm} without operands.  For
13673 example, on many systems @samp{rm -f -r} (with no other arguments)
13674 silently succeeds without doing anything, but it fails with a diagnostic
13675 on Net@acronym{BSD} 2.0.2.
13677 A file might not be removed even if its parent directory is writable
13678 and searchable.  Many Posix hosts cannot remove a mount point, a named
13679 stream, a working directory, or a last link to a file that is being
13680 executed.
13682 @acronym{DOS} variants cannot rename or remove open files, and do not
13683 support commands like @samp{rm foo >foo}, even though this is
13684 perfectly portable among Posix hosts.
13687 @item @command{sed}
13688 @c ----------------
13689 @prindex @command{sed}
13690 Patterns should not include the separator (unless escaped), even as part
13691 of a character class.  In conformance with Posix, the Cray
13692 @command{sed} rejects @samp{s/[^/]*$//}: use @samp{s,[^/]*$,,}.
13694 Avoid empty patterns within parentheses (i.e., @samp{\(\)}).  Posix does
13695 not require support for empty patterns, and Unicos 9 @command{sed} rejects
13696 them.
13698 Unicos 9 @command{sed} loops endlessly on patterns like @samp{.*\n.*}.
13700 Sed scripts should not use branch labels longer than 7 characters and
13701 should not contain comments.  @acronym{HP-UX} sed has a limit of 99 commands
13702 (not counting @samp{:} commands) and
13703 48 labels, which can not be circumvented by using more than one script
13704 file.  It can execute up to 19 reads with the @samp{r} command per cycle.
13705 Solaris @command{/usr/ucb/sed} rejects usages that exceed an limit of
13706 about 6000 bytes for the internal representation of commands.
13708 Avoid redundant @samp{;}, as some @command{sed} implementations, such as
13709 Net@acronym{BSD} 1.4.2's, incorrectly try to interpret the second
13710 @samp{;} as a command:
13712 @example
13713 $ @kbd{echo a | sed 's/x/x/;;s/x/x/'}
13714 sed: 1: "s/x/x/;;s/x/x/": invalid command code ;
13715 @end example
13717 Input should not have unreasonably long lines, since some @command{sed}
13718 implementations have an input buffer limited to 4000 bytes.
13720 Portable @command{sed} regular expressions should use @samp{\} only to escape
13721 characters in the string @samp{$()*.0123456789[\^n@{@}}.  For example,
13722 alternation, @samp{\|}, is common but Posix does not require its
13723 support, so it should be avoided in portable scripts.  Solaris
13724 @command{sed} does not support alternation; e.g., @samp{sed '/a\|b/d'}
13725 deletes only lines that contain the literal string @samp{a|b}.
13726 Similarly, @samp{\+} and @samp{\?} should be avoided.
13728 Anchors (@samp{^} and @samp{$}) inside groups are not portable.
13730 Nested parenthesization in patterns (e.g., @samp{\(\(a*\)b*)\)}) is
13731 quite portable to current hosts, but was not supported by some ancient
13732 @command{sed} implementations like SVR3.
13734 Some @command{sed} implementations, e.g., Solaris,
13735 restrict the special role of the asterisk to one-character regular expressions.
13736 This may lead to unexpected behavior:
13738 @example
13739 $ @kbd{echo '1*23*4' | /usr/bin/sed 's/\(.\)*/x/g'}
13740 x2x4
13741 $ @kbd{echo '1*23*4' | /usr/xpg4/bin/sed 's/\(.\)*/x/g'}
13743 @end example
13745 The @option{-e} option is portable, so long as its argument
13746 does not begin with @samp{a}, @samp{c}, or @samp{i}
13747 (as this runs afoul of a Tru64 5.1 bug).
13748 Some people prefer to use @samp{-e}:
13750 @example
13751 sed -e '@var{command-1}' \
13752     -e '@var{command-2}'
13753 @end example
13755 @noindent
13756 as opposed to the equivalent:
13758 @example
13759 sed '
13760   @var{command-1}
13761   @var{command-2}
13763 @end example
13765 @noindent
13766 The following usage is sometimes equivalent:
13768 @example
13769 sed '@var{command-1};@var{command-2}'
13770 @end example
13772 but Posix says that this use of a semicolon has undefined effect if
13773 @var{command-1}'s verb is @samp{@{}, @samp{a}, @samp{b}, @samp{c},
13774 @samp{i}, @samp{r}, @samp{t}, @samp{w}, @samp{:}, or @samp{#}, so you
13775 should use semicolon only with simple scripts that do not use these
13776 verbs.
13778 Commands inside @{ @} brackets are further restricted.  Posix says that
13779 they cannot be preceded by addresses, @samp{!}, or @samp{;}, and that
13780 each command must be followed immediately by a newline, without any
13781 intervening blanks or semicolons.  The closing bracket must be alone on
13782 a line, other than white space preceding or following it.
13784 Contrary to yet another urban legend, you may portably use @samp{&} in
13785 the replacement part of the @code{s} command to mean ``what was
13786 matched''.  All descendants of Unix version 7 @command{sed}
13787 (at least; we
13788 don't have first hand experience with older @command{sed} implementations) have
13789 supported it.
13791 Posix requires that you must not have any white space between
13792 @samp{!} and the following command.  It is OK to have blanks between
13793 the address and the @samp{!}.  For instance, on Solaris:
13795 @example
13796 $ @kbd{echo "foo" | sed -n '/bar/ ! p'}
13797 @error{}Unrecognized command: /bar/ ! p
13798 $ @kbd{echo "foo" | sed -n '/bar/! p'}
13799 @error{}Unrecognized command: /bar/! p
13800 $ @kbd{echo "foo" | sed -n '/bar/ !p'}
13802 @end example
13804 Posix also says that you should not combine @samp{!} and @samp{;}.  If
13805 you use @samp{!}, it is best to put it on a command that is delimited by
13806 newlines rather than @samp{;}.
13808 Also note that Posix requires that the @samp{b}, @samp{t}, @samp{r}, and
13809 @samp{w} commands be followed by exactly one space before their argument.
13810 On the other hand, no white space is allowed between @samp{:} and the
13811 subsequent label name.
13813 If a sed script is specified on the command line and ends in an
13814 @samp{a}, @samp{c}, or @samp{i} command, the last line of inserted text
13815 should be followed by a newline.  Otherwise some @command{sed}
13816 implementations (e.g., Open@acronym{BSD} 3.9) do not append a newline to the
13817 inserted text.
13819 Many @command{sed} implementations (e.g., MacOS X 10.4,
13820 Open@acronym{BSD} 3.9, Solaris 10
13821 @command{/usr/ucb/sed}) strip leading white space from the text of
13822 @samp{a}, @samp{c}, and @samp{i} commands.  Prepend a backslash to
13823 work around this incompatibility with Posix:
13825 @example
13826 $ @kbd{echo flushleft | sed 'a\}
13827 > @kbd{   indented}
13828 > @kbd{'}
13829 flushleft
13830 indented
13831 $ @kbd{echo foo | sed 'a\}
13832 > @kbd{\   indented}
13833 > @kbd{'}
13834 flushleft
13835    indented
13836 @end example
13839 @item @command{sed} (@samp{t})
13840 @c ---------------------------
13841 @prindex @command{sed} (@samp{t})
13842 Some old systems have @command{sed} that ``forget'' to reset their
13843 @samp{t} flag when starting a new cycle.  For instance on @acronym{MIPS
13844 RISC/OS}, and on @sc{irix} 5.3, if you run the following @command{sed}
13845 script (the line numbers are not actual part of the texts):
13847 @example
13848 s/keep me/kept/g  # a
13849 t end             # b
13850 s/.*/deleted/g    # c
13851 :end              # d
13852 @end example
13854 @noindent
13857 @example
13858 delete me         # 1
13859 delete me         # 2
13860 keep me           # 3
13861 delete me         # 4
13862 @end example
13864 @noindent
13865 you get
13867 @example
13868 deleted
13869 delete me
13870 kept
13871 deleted
13872 @end example
13874 @noindent
13875 instead of
13877 @example
13878 deleted
13879 deleted
13880 kept
13881 deleted
13882 @end example
13884 Why?  When processing line 1, (c) matches, therefore sets the @samp{t}
13885 flag, and the output is produced.  When processing
13886 line 2, the @samp{t} flag is still set (this is the bug).  Command (a)
13887 fails to match, but @command{sed} is not supposed to clear the @samp{t}
13888 flag when a substitution fails.  Command (b) sees that the flag is set,
13889 therefore it clears it, and jumps to (d), hence you get @samp{delete me}
13890 instead of @samp{deleted}.  When processing line (3), @samp{t} is clear,
13891 (a) matches, so the flag is set, hence (b) clears the flags and jumps.
13892 Finally, since the flag is clear, line 4 is processed properly.
13894 There are two things one should remember about @samp{t} in @command{sed}.
13895 Firstly, always remember that @samp{t} jumps if @emph{some} substitution
13896 succeeded, not only the immediately preceding substitution.  Therefore,
13897 always use a fake @samp{t clear} followed by a @samp{:clear} on the next
13898 line, to reset the @samp{t} flag where needed.
13900 Secondly, you cannot rely on @command{sed} to clear the flag at each new
13901 cycle.
13903 One portable implementation of the script above is:
13905 @example
13906 t clear
13907 :clear
13908 s/keep me/kept/g
13909 t end
13910 s/.*/deleted/g
13911 :end
13912 @end example
13914 @item @command{touch}
13915 @c ------------------
13916 @prindex @command{touch}
13917 @cindex timestamp resolution
13918 If you specify the desired timestamp (e.g., with the @option{-r}
13919 option), @command{touch} typically uses the @code{utime} or
13920 @code{utimes} system call, which can result in the same kind of
13921 timestamp truncation problems that @samp{cp -p} has.
13923 On ancient @acronym{BSD} systems, @command{touch} or any command that
13924 results in an empty file does not update the timestamps, so use a
13925 command like @command{echo} as a workaround.
13926 Also,
13927 @acronym{GNU} @command{touch} 3.16r (and presumably all before that)
13928 fails to work on SunOS 4.1.3 when the empty file is on an
13929 @acronym{NFS}-mounted 4.2 volume.
13930 However, these problems are no longer of practical concern.
13932 @end table
13935 @node Portable Make
13936 @chapter Portable Make Programming
13937 @prindex @command{make}
13938 @cindex Limitations of @command{make}
13940 Writing portable makefiles is an art.  Since a makefile's commands are
13941 executed by the shell, you must consider the shell portability issues
13942 already mentioned.  However, other issues are specific to @command{make}
13943 itself.
13945 @menu
13946 * $< in Ordinary Make Rules::   $< in ordinary rules
13947 * Failure in Make Rules::       Failing portably in rules
13948 * Special Chars in Names::      Special Characters in Macro Names
13949 * Backslash-Newline-Newline::   Empty last lines in macro definitions
13950 * Backslash-Newline Comments::  Spanning comments across line boundaries
13951 * Long Lines in Makefiles::     Line length limitations
13952 * Macros and Submakes::         @code{make macro=value} and submakes
13953 * The Make Macro MAKEFLAGS::    @code{$(MAKEFLAGS)} portability issues
13954 * The Make Macro SHELL::        @code{$(SHELL)} portability issues
13955 * Comments in Make Rules::      Other problems with Make comments
13956 * obj/ and Make::               Don't name a subdirectory @file{obj}
13957 * make -k Status::              Exit status of @samp{make -k}
13958 * VPATH and Make::              @code{VPATH} woes
13959 * Single Suffix Rules::         Single suffix rules and separated dependencies
13960 * Timestamps and Make::         Subsecond timestamp resolution
13961 @end menu
13963 @node $< in Ordinary Make Rules
13964 @section @code{$<} in Ordinary Make Rules
13966 Posix says that the @samp{$<} construct in makefiles can be
13967 used only in inference rules and in the @samp{.DEFAULT} rule; its
13968 meaning in ordinary rules is unspecified.  Solaris @command{make}
13969 for instance replaces it with the empty string.  Open@acronym{BSD} (3.0 and
13970 later) @command{make} diagnoses these uses and errors out.
13972 @node Failure in Make Rules
13973 @section Failure in Make Rules
13975 Since 1992 Posix has required that @command{make} must invoke
13976 each command with the equivalent of a @samp{sh -c} subshell.  However,
13977 many @command{make} implementations, including @acronym{BSD} make through 2004,
13978 use @samp{sh -e -c} instead, and the @option{-e} option causes the
13979 subshell to exit immediately if a subsidiary simple-command fails.  For
13980 example, the command @samp{touch T; rm -f U} always attempts to
13981 remove @file{U} with Posix make, but incompatible
13982 @command{make} implementations skip the @command{rm} if the
13983 @command{touch} fails.  One way to work around this is to reword the
13984 affected simple-commands so that they always succeed, e.g., @samp{touch
13985 T || :; rm -f U}.
13986 However, even this approach can run into common bugs in @acronym{BSD}
13987 implementations of the @option{-e} option of @command{sh} and
13988 @command{set} (@pxref{Limitations of Builtins}), so if you are worried
13989 about porting to buggy @acronym{BSD} shells it may be simpler to migrate
13990 complicated @command{make} actions into separate scripts.
13992 @node Special Chars in Names
13993 @section Special Characters in Make Macro Names
13995 Posix limits macro names to nonempty strings containing only
13996 @acronym{ASCII} letters and digits, @samp{.}, and @samp{_}.  Many
13997 @command{make} implementations allow a wider variety of characters, but
13998 portable makefiles should avoid them.  It is portable to start a name
13999 with a special character, e.g., @samp{$(.FOO)}.
14001 Some ancient @command{make} implementations don't support leading
14002 underscores in macro names.  An example is @acronym{NEWS-OS} 4.2R.
14004 @example
14005 $ @kbd{cat Makefile}
14006 _am_include = #
14007 _am_quote =
14008 all:; @@echo this is test
14009 $ @kbd{make}
14010 Make: Must be a separator on rules line 2.  Stop.
14011 $ @kbd{cat Makefile2}
14012 am_include = #
14013 am_quote =
14014 all:; @@echo this is test
14015 $ @kbd{make -f Makefile2}
14016 this is test
14017 @end example
14019 @noindent
14020 However, this problem is no longer of practical concern.
14022 @node Backslash-Newline-Newline
14023 @section Backslash-Newline-Newline in Make Macro Values
14025 @c  This has been seen on ia64 hpux 11.20, and on one hppa hpux 10.20,
14026 @c  but another hppa hpux 10.20 didn't have it.  Bob Proulx
14027 @c  <bob@proulx.com> thinks it was in hpux 8.0 too.
14028 On some versions of @acronym{HP-UX}, @command{make} reads multiple newlines
14029 following a backslash, continuing to the next non-empty line.  For
14030 example,
14032 @example
14033 FOO = one \
14035 BAR = two
14037 test:
14038         : FOO is "$(FOO)"
14039         : BAR is "$(BAR)"
14040 @end example
14042 @noindent
14043 shows @code{FOO} equal to @code{one BAR = two}.  Other implementations
14044 sensibly let a backslash continue only to the immediately following
14045 line.
14047 @node Backslash-Newline Comments
14048 @section Backslash-Newline in Make Comments
14050 According to Posix, Make comments start with @code{#}
14051 and continue until an unescaped newline is reached.
14053 @example
14054 $ @kbd{cat Makefile}
14055 # A = foo \
14056       bar \
14057       baz
14059 all:
14060         @@echo ok
14061 $ @kbd{make}   # GNU make
14063 @end example
14065 @noindent
14066 However this is not always the case.  Some implementations
14067 discard everything from @code{#} through the end of the line, ignoring any
14068 trailing backslash.
14070 @example
14071 $ @kbd{pmake}  # BSD make
14072 "Makefile", line 3: Need an operator
14073 Fatal errors encountered -- cannot continue
14074 @end example
14076 @noindent
14077 Therefore, if you want to comment out a multi-line definition, prefix each
14078 line with @code{#}, not only the first.
14080 @example
14081 # A = foo \
14082 #     bar \
14083 #     baz
14084 @end example
14086 @node Long Lines in Makefiles
14087 @section Long Lines in Makefiles
14089 Tru64 5.1's @command{make} has been reported to crash when given a
14090 makefile with lines longer than around 20 kB.  Earlier versions are
14091 reported to exit with @code{Line too long} diagnostics.
14093 @node Macros and Submakes
14094 @section @code{make macro=value} and Submakes
14096 A command-line variable definition such as @code{foo=bar} overrides any
14097 definition of @code{foo} in a makefile.  Some @command{make}
14098 implementations (such as @acronym{GNU} @command{make}) propagate this
14099 override to subsidiary invocations of @command{make}.  Some other
14100 implementations do not pass the substitution along to submakes.
14102 @example
14103 $ @kbd{cat Makefile}
14104 foo = foo
14105 one:
14106         @@echo $(foo)
14107         $(MAKE) two
14108 two:
14109         @@echo $(foo)
14110 $ @kbd{make foo=bar}            # GNU make 3.79.1
14112 make two
14113 make[1]: Entering directory `/home/adl'
14115 make[1]: Leaving directory `/home/adl'
14116 $ @kbd{pmake foo=bar}           # BSD make
14118 pmake two
14120 @end example
14122 You have a few possibilities if you do want the @code{foo=bar} override
14123 to propagate to submakes.  One is to use the @option{-e}
14124 option, which causes all environment variables to have precedence over
14125 the makefile macro definitions, and declare foo as an environment
14126 variable:
14128 @example
14129 $ @kbd{env foo=bar make -e}
14130 @end example
14132 The @option{-e} option is propagated to submakes automatically,
14133 and since the environment is inherited between @command{make}
14134 invocations, the @code{foo} macro is overridden in
14135 submakes as expected.
14137 This syntax (@code{foo=bar make -e}) is portable only when used
14138 outside of a makefile, for instance from a script or from the
14139 command line.  When run inside a @command{make} rule, @acronym{GNU}
14140 @command{make} 3.80 and prior versions forget to propagate the
14141 @option{-e} option to submakes.
14143 Moreover, using @option{-e} could have unexpected side effects if your
14144 environment contains some other macros usually defined by the
14145 makefile.  (See also the note about @code{make -e} and @code{SHELL}
14146 below.)
14148 Another way to propagate overrides to submakes is to do it
14149 manually, from your makefile:
14151 @example
14152 foo = foo
14153 one:
14154         @@echo $(foo)
14155         $(MAKE) foo=$(foo) two
14156 two:
14157         @@echo $(foo)
14158 @end example
14160 You need to foresee all macros that a user might want to override if
14161 you do that.
14163 @node The Make Macro MAKEFLAGS
14164 @section The Make Macro MAKEFLAGS
14165 @cindex @code{MAKEFLAGS} and @command{make}
14166 @cindex @command{make} and @code{MAKEFLAGS}
14168 Posix requires @command{make} to use @code{MAKEFLAGS} to affect the
14169 current and recursive invocations of make, but allows implementations
14170 several formats for the variable.  It is tricky to parse
14171 @code{$MAKEFLAGS} to determine whether @option{-s} for silent execution
14172 or @option{-k} for continued execution are in effect.  For example, you
14173 cannot assume that the first space-separated word in @code{$MAKEFLAGS}
14174 contains single-letter options, since in the Cygwin version of
14175 @acronym{GNU} @command{make} it is either @option{--unix} or
14176 @option{--win32} with the second word containing single-letter options.
14178 @example
14179 $ @kbd{cat Makefile}
14180 all:
14181         @@echo MAKEFLAGS = $(MAKEFLAGS)
14182 $ @kbd{make}
14183 MAKEFLAGS = --unix
14184 $ @kbd{make -k}
14185 MAKEFLAGS = --unix -k
14186 @end example
14188 @node The Make Macro SHELL
14189 @section The Make Macro @code{SHELL}
14190 @cindex @code{SHELL} and @command{make}
14191 @cindex @command{make} and @code{SHELL}
14193 Posix-compliant @command{make} internally uses the @code{$(SHELL)}
14194 macro to spawn shell processes and execute Make rules.  This
14195 is a builtin macro supplied by @command{make}, but it can be modified
14196 by a makefile or by a command-line argument.
14198 Not all @command{make} implementations define this @code{SHELL} macro.
14199 Tru64
14200 @command{make} is an example; this implementation always uses
14201 @code{/bin/sh}.  So it's a good idea to always define @code{SHELL} in
14202 your makefiles.  If you use Autoconf, do
14204 @example
14205 SHELL = @@SHELL@@
14206 @end example
14208 Do not force @code{SHELL = /bin/sh} because that is not correct
14209 everywhere.  For instance @acronym{DJGPP} lacks @code{/bin/sh}, and when
14210 its @acronym{GNU} @code{make} port sees such a setting it enters a special
14211 emulation mode where features like pipes and redirections are emulated
14212 on top of DOS's @command{command.com}.  Unfortunately this emulation is
14213 incomplete; for instance it does not handle command substitutions.
14214 On @acronym{DJGPP} @code{SHELL} should point to Bash.
14216 Posix-compliant @command{make} should never acquire the value of
14217 $(SHELL) from the environment, even when @code{make -e} is used
14218 (otherwise, think about what would happen to your rules if
14219 @code{SHELL=/bin/tcsh}).
14221 However not all @command{make} implementations have this exception.
14222 For instance it's not surprising that Tru64 @command{make} doesn't
14223 protect @code{SHELL}, since it doesn't use it.
14225 @example
14226 $ @kbd{cat Makefile}
14227 SHELL = /bin/sh
14228 FOO = foo
14229 all:
14230         @@echo $(SHELL)
14231         @@echo $(FOO)
14232 $ @kbd{env SHELL=/bin/tcsh FOO=bar make -e}   # Tru64 Make
14233 /bin/tcsh
14235 $ @kbd{env SHELL=/bin/tcsh FOO=bar gmake -e}  # GNU make
14236 /bin/sh
14238 @end example
14240 @node Comments in Make Rules
14241 @section Comments in Make Rules
14242 @cindex Comments in @file{Makefile} rules
14243 @cindex @file{Makefile} rules and comments
14245 Never put comments in a rule.
14247 Some @command{make} treat anything starting with a tab as a command for
14248 the current rule, even if the tab is immediately followed by a @code{#}.
14249 The @command{make} from Tru64 Unix V5.1 is one of them.  The following
14250 makefile runs @code{# foo} through the shell.
14252 @example
14253 all:
14254         # foo
14255 @end example
14257 @node obj/ and Make
14258 @section The @file{obj/} Subdirectory and Make
14259 @cindex @file{obj/}, subdirectory
14260 @cindex @acronym{BSD} @command{make} and @file{obj/}
14262 Never name one of your subdirectories @file{obj/} if you don't like
14263 surprises.
14265 If an @file{obj/} directory exists, @acronym{BSD} @command{make} enters it
14266 before reading the makefile.  Hence the makefile in the
14267 current directory is not read.
14269 @example
14270 $ @kbd{cat Makefile}
14271 all:
14272         echo Hello
14273 $ @kbd{cat obj/Makefile}
14274 all:
14275         echo World
14276 $ @kbd{make}      # GNU make
14277 echo Hello
14278 Hello
14279 $ @kbd{pmake}     # BSD make
14280 echo World
14281 World
14282 @end example
14284 @node make -k Status
14285 @section Exit Status of @code{make -k}
14286 @cindex @code{make -k}
14288 Do not rely on the exit status of @code{make -k}.  Some implementations
14289 reflect whether they encountered an error in their exit status; other
14290 implementations always succeed.
14292 @example
14293 $ @kbd{cat Makefile}
14294 all:
14295         false
14296 $ @kbd{make -k; echo exit status: $?}    # GNU make
14297 false
14298 make: *** [all] Error 1
14299 exit status: 2
14300 $ @kbd{pmake -k; echo exit status: $?}   # BSD make
14301 false
14302 *** Error code 1 (continuing)
14303 exit status: 0
14304 @end example
14306 @node VPATH and Make
14307 @section @code{VPATH} and Make
14308 @cindex @code{VPATH}
14310 Posix does not specify the semantics of @code{VPATH}.  Typically,
14311 @command{make} supports @code{VPATH}, but its implementation is not
14312 consistent.
14314 Autoconf and Automake support makefiles whose usages of @code{VPATH} are
14315 portable to recent-enough popular implementations of @command{make}, but
14316 to keep the resulting makefiles portable, a package's makefile
14317 prototypes must take the following issues into account.  These issues
14318 are complicated and are often poorly understood, and installers who use
14319 @code{VPATH} should expect to find many bugs in this area.  If you use
14320 @code{VPATH}, the simplest way to avoid these portability bugs is to
14321 stick with @acronym{GNU} @command{make}, since it is the most
14322 commonly-used @command{make} among Autoconf users.
14324 Here are some known issues with some @code{VPATH}
14325 implementations.
14327 @menu
14328 * VPATH and Double-colon::      Problems with @samp{::} on ancient hosts
14329 * $< in Explicit Rules::        @code{$<} does not work in ordinary rules
14330 * Automatic Rule Rewriting::    @code{VPATH} goes wild on Solaris
14331 * Tru64 Directory Magic::       @command{mkdir} goes wild on Tru64
14332 * Make Target Lookup::          More details about @code{VPATH} lookup
14333 @end menu
14335 @node VPATH and Double-colon
14336 @subsection @code{VPATH} and Double-colon Rules
14337 @cindex @code{VPATH} and double-colon rules
14338 @cindex double-colon rules and @code{VPATH}
14340 With ancient versions of Sun @command{make},
14341 any assignment to @code{VPATH} causes @command{make} to execute only
14342 the first set of double-colon rules.
14343 However, this problem is no longer of practical concern.
14345 @node $< in Explicit Rules
14346 @subsection @code{$<} Not Supported in Explicit Rules
14347 @cindex explicit rules, @code{$<}, and @code{VPATH}
14348 @cindex @code{$<}, explicit rules, and @code{VPATH}
14349 @cindex @code{VPATH}, explicit rules, and @code{$<}
14351 Using @code{$<} in explicit rules is not portable.
14352 The prerequisite file must be named explicitly in the rule.  If you want
14353 to find the prerequisite via a @code{VPATH} search, you have to code the
14354 whole thing manually.  @xref{Build Directories}.
14356 @node Automatic Rule Rewriting
14357 @subsection Automatic Rule Rewriting
14358 @cindex @code{VPATH} and automatic rule rewriting
14359 @cindex automatic rule rewriting and @code{VPATH}
14361 Some @command{make} implementations, such as Solaris and Tru64,
14362 search for prerequisites in @code{VPATH} and
14363 then rewrite each occurrence as a plain word in the rule.
14364 For instance:
14366 @example
14367 # This isn't portable to GNU make.
14368 VPATH = ../pkg/src
14369 f.c: if.c
14370         cp if.c f.c
14371 @end example
14373 @noindent
14374 executes @code{cp ../pkg/src/if.c f.c} if @file{if.c} is
14375 found in @file{../pkg/src}.
14377 However, this rule leads to real problems in practice.  For example, if
14378 the source directory contains an ordinary file named @file{test} that is
14379 used in a dependency, Solaris @command{make} rewrites commands like
14380 @samp{if test -r foo; @dots{}} to @samp{if ../pkg/src/test -r foo;
14381 @dots{}}, which is typically undesirable.  To avoid this problem,
14382 portable makefiles should never mention a source file whose name is that
14383 of a shell keyword like @file{until} or a shell command like
14384 @command{cat} or @command{gcc} or @command{test}.
14386 Because of these problems @acronym{GNU} @command{make} and many other
14387 @command{make} implementations do not rewrite commands, so portable
14388 makefiles should
14389 search @code{VPATH} manually.  It is tempting to write this:
14391 @smallexample
14392 # This isn't portable to Solaris make.
14393 VPATH = ../pkg/src
14394 f.c: if.c
14395         cp `test -f if.c || echo $(VPATH)/`if.c f.c
14396 @end smallexample
14398 @noindent
14399 However, the ``prerequisite rewriting'' still applies here.  So if
14400 @file{if.c} is in @file{../pkg/src}, Solaris and Tru64 @command{make}
14401 execute
14403 @smallexample
14404 cp `test -f ../pkg/src/if.c || echo ../pkg/src/`if.c f.c
14405 @end smallexample
14407 @noindent
14408 which reduces to
14410 @example
14411 cp if.c f.c
14412 @end example
14414 @noindent
14415 and thus fails.  Oops.
14417 A simple workaround, and good practice anyway, is to use @samp{$?} and
14418 @samp{$@@} when possible:
14420 @smallexample
14421 VPATH = ../pkg/src
14422 f.c: if.c
14423         cp $? $@@
14424 @end smallexample
14426 @noindent
14427 but this does not generalize well to commands with multiple
14428 prerequisites.  A more general workaround is to rewrite the rule so that
14429 the prerequisite @file{if.c} never appears as a plain word.  For
14430 example, these three rules would be safe, assuming @file{if.c} is in
14431 @file{../pkg/src} and the other files are in the working directory:
14433 @smallexample
14434 VPATH = ../pkg/src
14435 f.c: if.c f1.c
14436         cat `test -f ./if.c || echo $(VPATH)/`if.c f1.c >$@@
14437 g.c: if.c g1.c
14438         cat `test -f 'if.c' || echo $(VPATH)/`if.c g1.c >$@@
14439 h.c: if.c h1.c
14440         cat `test -f "if.c" || echo $(VPATH)/`if.c h1.c >$@@
14441 @end smallexample
14443 Things get worse when your prerequisites are in a macro.
14445 @example
14446 VPATH = ../pkg/src
14447 HEADERS = f.h g.h h.h
14448 install-HEADERS: $(HEADERS)
14449         for i in $(HEADERS); do \
14450           $(INSTALL) -m 644 \
14451             `test -f $$i || echo $(VPATH)/`$$i \
14452             $(DESTDIR)$(includedir)/$$i; \
14453         done
14454 @end example
14456 The above @code{install-HEADERS} rule is not Solaris-proof because @code{for
14457 i in $(HEADERS);} is expanded to @code{for i in f.h g.h h.h;}
14458 where @code{f.h} and @code{g.h} are plain words and are hence
14459 subject to @code{VPATH} adjustments.
14461 If the three files are in @file{../pkg/src}, the rule is run as:
14463 @example
14464 for i in ../pkg/src/f.h ../pkg/src/g.h h.h; do \
14465   install -m 644 \
14466      `test -f $i || echo ../pkg/src/`$i \
14467      /usr/local/include/$i; \
14468 done
14469 @end example
14471 where the two first @command{install} calls fail.  For instance,
14472 consider the @code{f.h} installation:
14474 @example
14475 install -m 644 \
14476   `test -f ../pkg/src/f.h || \
14477     echo ../pkg/src/ \
14478   `../pkg/src/f.h \
14479   /usr/local/include/../pkg/src/f.h;
14480 @end example
14482 @noindent
14483 It reduces to:
14485 @example
14486 install -m 644 \
14487   ../pkg/src/f.h \
14488   /usr/local/include/../pkg/src/f.h;
14489 @end example
14491 Note that the manual @code{VPATH} search did not cause any problems here;
14492 however this command installs @file{f.h} in an incorrect directory.
14494 Trying to quote @code{$(HEADERS)} in some way, as we did for
14495 @code{foo.c} a few makefiles ago, does not help:
14497 @example
14498 install-HEADERS: $(HEADERS)
14499         headers='$(HEADERS)'; \
14500         for i in $$headers; do \
14501           $(INSTALL) -m 644 \
14502             `test -f $$i || echo $(VPATH)/`$$i \
14503             $(DESTDIR)$(includedir)/$$i; \
14504         done
14505 @end example
14507 Now, @code{headers='$(HEADERS)'} macroexpands to:
14509 @example
14510 headers='f.h g.h h.h'
14511 @end example
14513 @noindent
14514 but @code{g.h} is still a plain word.  (As an aside, the idiom
14515 @code{headers='$(HEADERS)'; for i in $$headers;} is a good
14516 idea if @code{$(HEADERS)} can be empty, because some shells diagnose a
14517 syntax error on @code{for i in;}.)
14519 One workaround is to strip this unwanted @file{../pkg/src/} prefix manually:
14521 @example
14522 VPATH = ../pkg/src
14523 HEADERS = f.h g.h h.h
14524 install-HEADERS: $(HEADERS)
14525         headers='$(HEADERS)'; \
14526         for i in $$headers; do \
14527           i=`expr "$$i" : '$(VPATH)/\(.*\)'`;
14528           $(INSTALL) -m 644 \
14529             `test -f $$i || echo $(VPATH)/`$$i \
14530             $(DESTDIR)$(includedir)/$$i; \
14531         done
14532 @end example
14534 Automake does something similar.  However the above hack works only if
14535 the files listed in @code{HEADERS} are in the current directory or a
14536 subdirectory; they should not be in an enclosing directory.  If we had
14537 @code{HEADERS = ../f.h}, the above fragment would fail in a VPATH
14538 build with Tru64 @command{make}.  The reason is that not only does
14539 Tru64 @command{make} rewrite dependencies, but it also simplifies
14540 them.  Hence @code{../f.h} becomes @code{../pkg/f.h} instead of
14541 @code{../pkg/src/../f.h}.  This obviously defeats any attempt to strip
14542 a leading @file{../pkg/src/} component.
14544 The following example makes the behavior of Tru64 @command{make}
14545 more apparent.
14547 @example
14548 $ @kbd{cat Makefile}
14549 VPATH = sub
14550 all: ../foo
14551         echo ../foo
14552 $ @kbd{ls}
14553 Makefile foo
14554 $ @kbd{make}
14555 echo foo
14557 @end example
14559 @noindent
14560 Dependency @file{../foo} was found in @file{sub/../foo}, but Tru64
14561 @command{make} simplified it as @file{foo}.  (Note that the @file{sub/}
14562 directory does not even exist, this just means that the simplification
14563 occurred before the file was checked for.)
14565 For the record here is how SunOS 4 @command{make} behaves on this
14566 example.
14568 @smallexample
14569 $ @kbd{make}
14570 make: Fatal error: Don't know how to make target `../foo'
14571 $ @kbd{mkdir sub}
14572 $ @kbd{make}
14573 echo sub/../foo
14574 sub/../foo
14575 @end smallexample
14578 @node Tru64 Directory Magic
14579 @subsection Tru64 @command{make} Creates Prerequisite Directories Magically
14580 @cindex @code{VPATH} and prerequisite directories
14581 @cindex prerequisite directories and @code{VPATH}
14583 When a prerequisite is a subdirectory of @code{VPATH}, Tru64
14584 @command{make} creates it in the current directory.
14586 @example
14587 $ @kbd{mkdir -p foo/bar build}
14588 $ @kbd{cd build}
14589 $ @kbd{cat >Makefile <<END
14590 VPATH = ..
14591 all: foo/bar
14592 END}
14593 $ @kbd{make}
14594 mkdir foo
14595 mkdir foo/bar
14596 @end example
14598 This can yield unexpected results if a rule uses a manual @code{VPATH}
14599 search as presented before.
14601 @example
14602 VPATH = ..
14603 all : foo/bar
14604         command `test -d foo/bar || echo ../`foo/bar
14605 @end example
14607 The above @command{command} is run on the empty @file{foo/bar}
14608 directory that was created in the current directory.
14610 @node Make Target Lookup
14611 @subsection Make Target Lookup
14612 @cindex @code{VPATH}, resolving target pathnames
14614 @acronym{GNU} @command{make} uses a complex algorithm to decide when it
14615 should use files found via a @code{VPATH} search.  @xref{Search
14616 Algorithm, , How Directory Searches are Performed, make, The @acronym{GNU} Make
14617 Manual}.
14619 If a target needs to be rebuilt, @acronym{GNU} @command{make} discards the
14620 file name found during the @code{VPATH} search for this target, and
14621 builds the file locally using the file name given in the makefile.
14622 If a target does not need to be rebuilt, @acronym{GNU} @command{make} uses the
14623 file name found during the @code{VPATH} search.
14625 Other @command{make} implementations, like Net@acronym{BSD} @command{make}, are
14626 easier to describe: the file name found during the @code{VPATH} search
14627 is used whether the target needs to be rebuilt or not.  Therefore
14628 new files are created locally, but existing files are updated at their
14629 @code{VPATH} location.
14631 Open@acronym{BSD} and Free@acronym{BSD} @command{make}, however,
14632 never perform a
14633 @code{VPATH} search for a dependency that has an explicit rule.
14634 This is extremely annoying.
14636 When attempting a @code{VPATH} build for an autoconfiscated package
14637 (e.g., @code{mkdir build && cd build && ../configure}), this means
14638 @acronym{GNU}
14639 @command{make} builds everything locally in the @file{build}
14640 directory, while @acronym{BSD} @command{make} builds new files locally and
14641 updates existing files in the source directory.
14643 @example
14644 $ @kbd{cat Makefile}
14645 VPATH = ..
14646 all: foo.x bar.x
14647 foo.x bar.x: newer.x
14648         @@echo Building $@@
14649 $ @kbd{touch ../bar.x}
14650 $ @kbd{touch ../newer.x}
14651 $ @kbd{make}        # GNU make
14652 Building foo.x
14653 Building bar.x
14654 $ @kbd{pmake}       # NetBSD make
14655 Building foo.x
14656 Building ../bar.x
14657 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14658 Building foo.x
14659 Building bar.x
14660 $ @kbd{tmake}       # Tru64 make
14661 Building foo.x
14662 Building bar.x
14663 $ @kbd{touch ../bar.x}
14664 $ @kbd{make}        # GNU make
14665 Building foo.x
14666 $ @kbd{pmake}       # NetBSD make
14667 Building foo.x
14668 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14669 Building foo.x
14670 Building bar.x
14671 $ @kbd{tmake}       # Tru64 make
14672 Building foo.x
14673 Building bar.x
14674 @end example
14676 Note how Net@acronym{BSD} @command{make} updates @file{../bar.x} in its
14677 VPATH location, and how Free@acronym{BSD}, Open@acronym{BSD}, and Tru64
14678 @command{make} always
14679 update @file{bar.x}, even when @file{../bar.x} is up to date.
14681 Another point worth mentioning is that once @acronym{GNU} @command{make} has
14682 decided to ignore a @code{VPATH} file name (e.g., it ignored
14683 @file{../bar.x} in the above example) it continues to ignore it when
14684 the target occurs as a prerequisite of another rule.
14686 The following example shows that @acronym{GNU} @command{make} does not look up
14687 @file{bar.x} in @code{VPATH} before performing the @code{.x.y} rule,
14688 because it ignored the @code{VPATH} result of @file{bar.x} while running
14689 the @code{bar.x: newer.x} rule.
14691 @example
14692 $ @kbd{cat Makefile}
14693 VPATH = ..
14694 all: bar.y
14695 bar.x: newer.x
14696         @@echo Building $@@
14697 .SUFFIXES: .x .y
14698 .x.y:
14699         cp $< $@@
14700 $ @kbd{touch ../bar.x}
14701 $ @kbd{touch ../newer.x}
14702 $ @kbd{make}        # GNU make
14703 Building bar.x
14704 cp bar.x bar.y
14705 cp: cannot stat `bar.x': No such file or directory
14706 make: *** [bar.y] Error 1
14707 $ @kbd{pmake}       # NetBSD make
14708 Building ../bar.x
14709 cp ../bar.x bar.y
14710 $ @kbd{rm bar.y}
14711 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14712 echo Building bar.x
14713 cp bar.x bar.y
14714 cp: cannot stat `bar.x': No such file or directory
14715 *** Error code 1
14716 $ @kbd{tmake}       # Tru64 make
14717 Building bar.x
14718 cp: bar.x: No such file or directory
14719 *** Exit 1
14720 @end example
14722 Note that if you drop away the command from the @code{bar.x: newer.x}
14723 rule, @acronym{GNU} @command{make} magically starts to work: it
14724 knows that @code{bar.x} hasn't been updated, therefore it doesn't
14725 discard the result from @code{VPATH} (@file{../bar.x}) in succeeding
14726 uses.  Tru64 also works, but Free@acronym{BSD} and Open@acronym{BSD}
14727 still don't.
14729 @example
14730 $ @kbd{cat Makefile}
14731 VPATH = ..
14732 all: bar.y
14733 bar.x: newer.x
14734 .SUFFIXES: .x .y
14735 .x.y:
14736         cp $< $@@
14737 $ @kbd{touch ../bar.x}
14738 $ @kbd{touch ../newer.x}
14739 $ @kbd{make}        # GNU make
14740 cp ../bar.x bar.y
14741 $ @kbd{rm bar.y}
14742 $ @kbd{pmake}       # NetBSD make
14743 cp ../bar.x bar.y
14744 $ @kbd{rm bar.y}
14745 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14746 cp bar.x bar.y
14747 cp: cannot stat `bar.x': No such file or directory
14748 *** Error code 1
14749 $ @kbd{tmake}       # Tru64 make
14750 cp ../bar.x bar.y
14751 @end example
14753 It seems the sole solution that would please every @command{make}
14754 implementation is to never rely on @code{VPATH} searches for targets.
14755 In other words, @code{VPATH} should be reserved to unbuilt sources.
14758 @node Single Suffix Rules
14759 @section Single Suffix Rules and Separated Dependencies
14760 @cindex Single Suffix Inference Rule
14761 @cindex Rule, Single Suffix Inference
14762 A @dfn{Single Suffix Rule} is basically a usual suffix (inference) rule
14763 (@samp{.from.to:}), but which @emph{destination} suffix is empty
14764 (@samp{.from:}).
14766 @cindex Separated Dependencies
14767 @dfn{Separated dependencies} simply refers to listing the prerequisite
14768 of a target, without defining a rule.  Usually one can list on the one
14769 hand side, the rules, and on the other hand side, the dependencies.
14771 Solaris @command{make} does not support separated dependencies for
14772 targets defined by single suffix rules:
14774 @example
14775 $ @kbd{cat Makefile}
14776 .SUFFIXES: .in
14777 foo: foo.in
14778 .in:
14779         cp $< $@@
14780 $ @kbd{touch foo.in}
14781 $ @kbd{make}
14782 $ @kbd{ls}
14783 Makefile  foo.in
14784 @end example
14786 @noindent
14787 while @acronym{GNU} Make does:
14789 @example
14790 $ @kbd{gmake}
14791 cp foo.in foo
14792 $ @kbd{ls}
14793 Makefile  foo       foo.in
14794 @end example
14796 Note it works without the @samp{foo: foo.in} dependency.
14798 @example
14799 $ @kbd{cat Makefile}
14800 .SUFFIXES: .in
14801 .in:
14802         cp $< $@@
14803 $ @kbd{make foo}
14804 cp foo.in foo
14805 @end example
14807 @noindent
14808 and it works with double suffix inference rules:
14810 @example
14811 $ @kbd{cat Makefile}
14812 foo.out: foo.in
14813 .SUFFIXES: .in .out
14814 .in.out:
14815         cp $< $@@
14816 $ @kbd{make}
14817 cp foo.in foo.out
14818 @end example
14820 As a result, in such a case, you have to write target rules.
14822 @node Timestamps and Make
14823 @section Timestamp Resolution and Make
14824 @cindex timestamp resolution
14825 Traditionally, file timestamps had 1-second resolution, and
14826 @command{make} used those timestamps to determine whether one file was
14827 newer than the other.  However, many modern file systems have
14828 timestamps with 1-nanosecond resolution.  Some @command{make}
14829 implementations look at the entire timestamp; others ignore the
14830 fractional part, which can lead to incorrect results.  Normally this
14831 is not a problem, but in some extreme cases you may need to use tricks
14832 like @samp{sleep 1} to work around timestamp truncation bugs.
14834 Commands like @samp{cp -p} and @samp{touch -r} typically do not copy
14835 file timestamps to their full resolutions (@pxref{Limitations of Usual
14836 Tools}).  Hence you should be wary of rules like this:
14838 @example
14839 dest: src
14840         cp -p src dest
14841 @end example
14843 as @file{dest} often appears to be older than @file{src} after the
14844 timestamp is truncated, and this can cause @command{make} to do
14845 needless rework the next time it is invoked.  To work around this
14846 problem, you can use a timestamp file, e.g.:
14848 @example
14849 dest-stamp: src
14850         cp -p src dest
14851         date >dest-stamp
14852 @end example
14857 @c ======================================== Portable C and C++ Programming
14859 @node Portable C and C++
14860 @chapter Portable C and C++ Programming
14861 @cindex Portable C and C++ programming
14863 C and C++ programs often use low-level features of the underlying
14864 system, and therefore are often more difficult to make portable to other
14865 platforms.
14867 Several standards have been developed to help make your programs more
14868 portable.  If you write programs with these standards in mind, you can
14869 have greater confidence that your programs work on a wide variety
14870 of systems.  @xref{Standards, , Language Standards Supported by
14871 @acronym{GCC}, gcc, Using the @acronym{GNU} Compiler Collection
14872 (@acronym{GCC})}, for a list of C-related
14873 standards.  Many programs also assume the
14874 @uref{http://www.opengroup.org/susv3, Posix standard}.
14876 Some old code is written to be portable to K&R C, which predates any C
14877 standard.  K&R C compilers are no longer of practical interest, though,
14878 and the rest of section assumes at least C89, the first C standard.
14880 Program portability is a huge topic, and this section can only briefly
14881 introduce common pitfalls.  @xref{System Portability, , Portability
14882 between System Types, standards, @acronym{GNU} Coding Standards}, for
14883 more information.
14885 @menu
14886 * Varieties of Unportability::  How to make your programs unportable
14887 * Integer Overflow::            When integers get too large
14888 * Null Pointers::               Properties of null pointers
14889 * Buffer Overruns::             Subscript errors and the like
14890 * Volatile Objects::            @code{volatile} and signals
14891 * Floating Point Portability::  Portable floating-point arithmetic
14892 * Exiting Portably::            Exiting and the exit status
14893 @end menu
14895 @node Varieties of Unportability
14896 @section Varieties of Unportability
14897 @cindex portability
14899 Autoconf tests and ordinary programs often need to test what is allowed
14900 on a system, and therefore they may need to deliberately exceed the
14901 boundaries of what the standards allow, if only to see whether an
14902 optional feature is present.  When you write such a program, you should
14903 keep in mind the difference between constraints, unspecified behavior,
14904 and undefined behavior.
14906 In C, a @dfn{constraint} is a rule that the compiler must enforce.  An
14907 example constraint is that C programs must not declare a bit-field with
14908 negative width.  Tests can therefore reliably assume that programs with
14909 negative-width bit-fields are rejected by a compiler that conforms
14910 to the standard.
14912 @dfn{Unspecified behavior} is valid behavior, where the standard allows
14913 multiple possibilities.  For example, the order of evaluation of
14914 function arguments is unspecified.  Some unspecified behavior is
14915 @dfn{implementation-defined}, i.e., documented by the implementation,
14916 but since Autoconf tests cannot read the documentation they cannot
14917 distinguish between implementation-defined and other unspecified
14918 behavior.  It is common for Autoconf tests to probe implementations to
14919 determine otherwise-unspecified behavior.
14921 @dfn{Undefined behavior} is invalid behavior, where the standard allows
14922 the implementation to do anything it pleases.  For example,
14923 dereferencing a null pointer leads to undefined behavior.  If possible,
14924 test programs should avoid undefined behavior, since a program with
14925 undefined behavior might succeed on a test that should fail.
14927 The above rules apply to programs that are intended to conform to the
14928 standard.  However, strictly-conforming programs are quite rare, since
14929 the standards are so limiting.  A major goal of Autoconf is to support
14930 programs that use implementation features not described by the standard,
14931 and it is fairly common for test programs to violate the above rules, if
14932 the programs work well enough in practice.
14934 @node Integer Overflow
14935 @section Integer Overflow
14936 @cindex overflow, arithmetic
14938 In C, signed integer overflow leads to undefined behavior.  However,
14939 many programs and Autoconf tests assume that signed integer overflow after
14940 addition, subtraction, or multiplication silently
14941 wraps around modulo a power of two, using two's complement arithmetic,
14942 so long as you cast the resulting value
14943 to an integer type or store it into an integer variable.  Such programs
14944 are portable to the vast majority of modern platforms.  However, signed
14945 integer division is not always harmless: for example, on CPUs of the
14946 i386 family, dividing @code{INT_MIN} by @code{-1} yields a SIGFPE signal
14947 which by default terminates the program.  Worse, taking the remainder
14948 of these two values typically yields the same signal on these CPUs,
14949 even though the C standard requires @code{INT_MIN % -1} to yield zero
14950 because the expression does not overflow.
14952 @acronym{GCC} users might consider using the
14953 @option{-ftrapv} option if they are worried about porting their code to
14954 the rare platforms where signed integer overflow does not wrap around
14955 after addition, subtraction, or multiplication.
14957 Unsigned integer overflow reliably wraps around modulo the word size.
14958 This is guaranteed by the C standard and is portable in practice.
14960 @node Null Pointers
14961 @section Properties of Null Pointers
14962 @cindex null pointers
14964 Most modern hosts reliably fail when you attempt to dereference a null
14965 pointer.
14967 On almost all modern hosts, null pointers use an all-bits-zero internal
14968 representation, so you can reliably use @code{memset} with 0 to set all
14969 the pointers in an array to null values.
14971 If @code{p} is a null pointer to an object type, the C expression
14972 @code{p + 0} always evaluates to @code{p} on modern hosts, even though
14973 the standard says that it has undefined behavior.
14975 @node Buffer Overruns
14976 @section Buffer Overruns and Subscript Errors
14977 @cindex buffer overruns
14979 Buffer overruns and subscript errors are the most common dangerous
14980 errors in C programs.  They result in undefined behavior because storing
14981 outside an array typically modifies storage that is used by some other
14982 object, and most modern systems lack runtime checks to catch these
14983 errors.  Programs should not rely on buffer overruns being caught.
14985 There is one exception to the usual rule that a portable program cannot
14986 address outside an array.  In C, it is valid to compute the address just
14987 past an object, e.g., @code{&a[N]} where @code{a} has @code{N} elements,
14988 so long as you do not dereference the resulting pointer.  But it is not
14989 valid to compute the address just before an object, e.g., @code{&a[-1]};
14990 nor is it valid to compute two past the end, e.g., @code{&a[N+1]}.  On
14991 most platforms @code{&a[-1] < &a[0] && &a[N] < &a[N+1]}, but this is not
14992 reliable in general, and it is usually easy enough to avoid the
14993 potential portability problem, e.g., by allocating an extra unused array
14994 element at the start or end.
14996 @uref{http://valgrind.org/, Valgrind} can catch many overruns.
14997 @acronym{GCC}
14998 users might also consider using the @option{-fmudflap} option to catch
14999 overruns.
15001 Buffer overruns are usually caused by off-by-one errors, but there are
15002 more subtle ways to get them.
15004 Using @code{int} values to index into an array or compute array sizes
15005 causes problems on typical 64-bit hosts where an array index might
15006 be @math{2^31} or larger.  Index values of type @code{size_t} avoid this
15007 problem, but cannot be negative.  Index values of type @code{ptrdiff_t}
15008 are signed, and are wide enough in practice.
15010 If you add or multiply two numbers to calculate an array size, e.g.,
15011 @code{malloc (x * sizeof y + z)}, havoc ensues if the addition or
15012 multiplication overflows.
15014 Many implementations of the @code{alloca} function silently misbehave
15015 and can generate buffer overflows if given sizes that are too large.
15016 The size limits are implementation dependent, but are at least 4000
15017 bytes on all platforms that we know about.
15019 The standard functions @code{asctime}, @code{asctime_r}, @code{ctime},
15020 @code{ctime_r}, and @code{gets} are prone to buffer overflows, and
15021 portable code should not use them unless the inputs are known to be
15022 within certain limits.  The time-related functions can overflow their
15023 buffers if given timestamps out of range (e.g., a year less than -999
15024 or greater than 9999).  Time-related buffer overflows cannot happen with
15025 recent-enough versions of the @acronym{GNU} C library, but are possible
15026 with other
15027 implementations.  The @code{gets} function is the worst, since it almost
15028 invariably overflows its buffer when presented with an input line larger
15029 than the buffer.
15031 @node Volatile Objects
15032 @section Volatile Objects
15033 @cindex volatile objects
15035 The keyword @code{volatile} is often misunderstood in portable code.
15036 Its use inhibits some memory-access optimizations, but programmers often
15037 wish that it had a different meaning than it actually does.
15039 @code{volatile} was designed for code that accesses special objects like
15040 memory-mapped device registers whose contents spontaneously change.
15041 Such code is inherently low-level, and it is difficult to specify
15042 portably what @code{volatile} means in these cases.  The C standard
15043 says, ``What constitutes an access to an object that has
15044 volatile-qualified type is implementation-defined,'' so in theory each
15045 implementation is supposed to fill in the gap by documenting what
15046 @code{volatile} means for that implementation.  In practice, though,
15047 this documentation is usually absent or incomplete.
15049 One area of confusion is the distinction between objects defined with
15050 volatile types, and volatile lvalues.  From the C standard's point of
15051 view, an object defined with a volatile type has externally visible
15052 behavior.  You can think of such objects as having little oscilloscope
15053 probes attached to them, so that the user can observe some properties of
15054 accesses to them, just as the user can observe data written to output
15055 files.  However, the standard does not make it clear whether users can
15056 observe accesses by volatile lvalues to ordinary objects.  For example:
15058 @example
15059 /* Declare and access a volatile object.
15060    Accesses to X are "visible" to users.  */
15061 static int volatile x;
15062 x = 1;
15064 /* Access two ordinary objects via a volatile lvalue.
15065    It's not clear whether accesses to *P are "visible".  */
15066 int y;
15067 int *z = malloc (sizeof (int));
15068 int volatile *p;
15069 p = &y;
15070 *p = 1;
15071 p = z;
15072 *p = 1;
15073 @end example
15075 Programmers often wish that @code{volatile} meant ``Perform the memory
15076 access here and now, without merging several memory accesses, without
15077 changing the memory word size, and without reordering.''  But the C
15078 standard does not require this.  For objects defined with a volatile
15079 type, accesses must be done before the next sequence point; but
15080 otherwise merging, reordering, and word-size change is allowed.  Worse,
15081 it is not clear from the standard whether volatile lvalues provide more
15082 guarantees in general than nonvolatile lvalues, if the underlying
15083 objects are ordinary.
15085 Even when accessing objects defined with a volatile type,
15086 the C standard allows only
15087 extremely limited signal handlers: the behavior is undefined if a signal
15088 handler reads any nonlocal object, or writes to any nonlocal object
15089 whose type is not @code{sig_atomic_t volatile}, or calls any standard
15090 library function other than @code{abort}, @code{signal}, and (if C99)
15091 @code{_Exit}.  Hence C compilers need not worry about a signal handler
15092 disturbing ordinary computation, unless the computation accesses a
15093 @code{sig_atomic_t volatile} lvalue that is not a local variable.
15094 (There is an obscure exception for accesses via a pointer to a volatile
15095 character, since it may point into part of a @code{sig_atomic_t
15096 volatile} object.)  Posix
15097 adds to the list of library functions callable from a portable signal
15098 handler, but otherwise is like the C standard in this area.
15100 Some C implementations allow memory-access optimizations within each
15101 translation unit, such that actual behavior agrees with the behavior
15102 required by the standard only when calling a function in some other
15103 translation unit, and a signal handler acts like it was called from a
15104 different translation unit.  The C standard hints that in these
15105 implementations, objects referred to by signal handlers ``would require
15106 explicit specification of @code{volatile} storage, as well as other
15107 implementation-defined restrictions.''  But unfortunately even for this
15108 special case these other restrictions are often not documented well.
15109 @xref{Volatiles, , When is a Volatile Object Accessed?, gcc, Using the
15110 @acronym{GNU} Compiler Collection (@acronym{GCC})}, for some
15111 restrictions imposed by @acronym{GCC}.  @xref{Defining Handlers, ,
15112 Defining Signal Handlers, libc, The @acronym{GNU} C Library}, for some
15113 restrictions imposed by the @acronym{GNU} C library.  Restrictions
15114 differ on other platforms.
15116 If possible, it is best to use a signal handler that fits within the
15117 limits imposed by the C and Posix standards.
15119 If this is not practical, you can try the following rules of thumb.  A
15120 signal handler should access only volatile lvalues, preferably lvalues
15121 that refer to objects defined with a volatile type, and should not
15122 assume that the accessed objects have an internally consistent state
15123 if they are larger than a machine word.  Furthermore, installers
15124 should employ compilers and compiler options that are commonly used
15125 for building operating system kernels, because kernels often need more
15126 from @code{volatile} than the C Standard requires, and installers who
15127 compile an application in a similar environment can sometimes benefit
15128 from the extra constraints imposed by kernels on compilers.
15129 Admittedly we are handwaving somewhat here, as there are few
15130 guarantees in this area; the rules of thumb may help to fix some bugs
15131 but there is a good chance that they will not fix them all.
15133 For @code{volatile}, C++ has the same problems that C does.
15134 Multithreaded applications have even more problems with @code{volatile},
15135 but they are beyond the scope of this section.
15137 The bottom line is that using @code{volatile} typically hurts
15138 performance but should not hurt correctness.  In some cases its use
15139 does help correctness, but these cases are often so poorly understood
15140 that all too often adding @code{volatile} to a data structure merely
15141 alleviates some symptoms of a bug while not fixing the bug in general.
15143 @node Floating Point Portability
15144 @section Floating Point Portability
15145 @cindex floating point
15147 Almost all modern systems use IEEE-754 floating point, and it is safe to
15148 assume IEEE-754 in most portable code these days.  For more information,
15149 please see David Goldberg's classic paper
15150 @uref{http://www.validlab.com/goldberg/paper.pdf, What Every Computer
15151 Scientist Should Know About Floating-Point Arithmetic}.
15153 @node Exiting Portably
15154 @section Exiting Portably
15155 @cindex exiting portably
15157 A C or C++ program can exit with status @var{N} by returning
15158 @var{N} from the @code{main} function.  Portable programs are supposed
15159 to exit either with status 0 or @code{EXIT_SUCCESS} to succeed, or with
15160 status @code{EXIT_FAILURE} to fail, but in practice it is portable to
15161 fail by exiting with status 1, and test programs that assume Posix can
15162 fail by exiting with status values from 1 through 255.  Programs on
15163 SunOS 2.0 (1985) through 3.5.2 (1988) incorrectly exited with zero
15164 status when @code{main} returned nonzero, but ancient systems like these
15165 are no longer of practical concern.
15167 A program can also exit with status @var{N} by passing @var{N} to the
15168 @code{exit} function, and a program can fail by calling the @code{abort}
15169 function.  If a program is specialized to just some platforms, it can fail
15170 by calling functions specific to those platforms, e.g., @code{_exit}
15171 (Posix) and @code{_Exit} (C99).  However, like other functions, an exit
15172 function should be declared, typically by including a header.  For
15173 example, if a C program calls @code{exit}, it should include @file{stdlib.h}
15174 either directly or via the default includes (@pxref{Default Includes}).
15176 A program can fail due to undefined behavior such as dereferencing a null
15177 pointer, but this is not recommended as undefined behavior allows an
15178 implementation to do whatever it pleases and this includes exiting
15179 successfully.
15182 @c ================================================== Manual Configuration
15184 @node Manual Configuration
15185 @chapter Manual Configuration
15187 A few kinds of features can't be guessed automatically by running test
15188 programs.  For example, the details of the object-file format, or
15189 special options that need to be passed to the compiler or linker.  You
15190 can check for such features using ad-hoc means, such as having
15191 @command{configure} check the output of the @code{uname} program, or
15192 looking for libraries that are unique to particular systems.  However,
15193 Autoconf provides a uniform method for handling unguessable features.
15195 @menu
15196 * Specifying Names::            Specifying the system type
15197 * Canonicalizing::              Getting the canonical system type
15198 * Using System Type::           What to do with the system type
15199 @end menu
15201 @node Specifying Names
15202 @section Specifying the System Type
15203 @cindex System type
15205 Like other @acronym{GNU} @command{configure} scripts, Autoconf-generated
15206 @command{configure} scripts can make decisions based on a canonical name
15207 for the system type, which has the form:
15208 @samp{@var{cpu}-@var{vendor}-@var{os}}, where @var{os} can be
15209 @samp{@var{system}} or @samp{@var{kernel}-@var{system}}
15211 @command{configure} can usually guess the canonical name for the type of
15212 system it's running on.  To do so it runs a script called
15213 @command{config.guess}, which infers the name using the @code{uname}
15214 command or symbols predefined by the C preprocessor.
15216 Alternately, the user can specify the system type with command line
15217 arguments to @command{configure}.  Doing so is necessary when
15218 cross-compiling.  In the most complex case of cross-compiling, three
15219 system types are involved.  The options to specify them are:
15221 @table @option
15222 @item --build=@var{build-type}
15223 the type of system on which the package is being configured and
15224 compiled.  It defaults to the result of running @command{config.guess}.
15226 @item --host=@var{host-type}
15227 the type of system on which the package runs.  By default it is the
15228 same as the build machine.  Specifying it enables the cross-compilation
15229 mode.
15231 @item --target=@var{target-type}
15232 the type of system for which any compiler tools in the package
15233 produce code (rarely needed).  By default, it is the same as host.
15234 @end table
15236 If you mean to override the result of @command{config.guess}, use
15237 @option{--build}, not @option{--host}, since the latter enables
15238 cross-compilation.  For historical reasons, passing @option{--host} also
15239 changes the build type.  Therefore, whenever you specify @option{--host},
15240 be sure to specify @option{--build} too; this will be fixed in the
15241 future.  So, to enter cross-compilation mode, use a command like this
15243 @example
15244 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
15245 @end example
15247 @noindent
15248 Note that if you do not specify @option{--host}, @command{configure}
15249 fails if it can't run the code generated by the specified compiler.  For
15250 example, configuring as follows fails:
15252 @example
15253 ./configure CC=m68k-coff-gcc
15254 @end example
15256 In the future, when cross-compiling Autoconf will @emph{not}
15257 accept tools (compilers, linkers, assemblers) whose name is not
15258 prefixed with the host type.  The only case when this may be
15259 useful is when you really are not cross-compiling, but only
15260 building for a least-common-denominator architecture: an example
15261 is building for @code{i386-pc-linux-gnu} while running on an
15262 @code{i686-pc-linux-gnu} architecture.  In this case, some particular
15263 pairs might be similar enough to let you get away with the system
15264 compilers, but in general the compiler might make bogus assumptions
15265 on the host: if you know what you are doing, please create symbolic
15266 links from the host compiler to the build compiler.
15268 @cindex @command{config.sub}
15269 @command{configure} recognizes short aliases for many system types; for
15270 example, @samp{decstation} can be used instead of
15271 @samp{mips-dec-ultrix4.2}.  @command{configure} runs a script called
15272 @command{config.sub} to canonicalize system type aliases.
15274 This section deliberately omits the description of the obsolete
15275 interface; see @ref{Hosts and Cross-Compilation}.
15278 @node Canonicalizing
15279 @section Getting the Canonical System Type
15280 @cindex System type
15281 @cindex Canonical system type
15283 The following macros make the system type available to @command{configure}
15284 scripts.
15286 @ovindex build_alias
15287 @ovindex host_alias
15288 @ovindex target_alias
15290 The variables @samp{build_alias}, @samp{host_alias}, and
15291 @samp{target_alias} are always exactly the arguments of @option{--build},
15292 @option{--host}, and @option{--target}; in particular, they are left empty
15293 if the user did not use them, even if the corresponding
15294 @code{AC_CANONICAL} macro was run.  Any configure script may use these
15295 variables anywhere.  These are the variables that should be used when in
15296 interaction with the user.
15298 If you need to recognize some special environments based on their system
15299 type, run the following macros to get canonical system names.  These
15300 variables are not set before the macro call.
15302 If you use these macros, you must distribute @command{config.guess} and
15303 @command{config.sub} along with your source code.  @xref{Output}, for
15304 information about the @code{AC_CONFIG_AUX_DIR} macro which you can use
15305 to control in which directory @command{configure} looks for those scripts.
15308 @defmac AC_CANONICAL_BUILD
15309 @acindex{CANONICAL_BUILD}
15310 @ovindex build
15311 @ovindex build_cpu
15312 @ovindex build_vendor
15313 @ovindex build_os
15314 Compute the canonical build-system type variable, @code{build}, and its
15315 three individual parts @code{build_cpu}, @code{build_vendor}, and
15316 @code{build_os}.
15318 If @option{--build} was specified, then @code{build} is the
15319 canonicalization of @code{build_alias} by @command{config.sub},
15320 otherwise it is determined by the shell script @command{config.guess}.
15321 @end defmac
15323 @defmac AC_CANONICAL_HOST
15324 @acindex{CANONICAL_HOST}
15325 @ovindex host
15326 @ovindex host_cpu
15327 @ovindex host_vendor
15328 @ovindex host_os
15329 Compute the canonical host-system type variable, @code{host}, and its
15330 three individual parts @code{host_cpu}, @code{host_vendor}, and
15331 @code{host_os}.
15333 If @option{--host} was specified, then @code{host} is the
15334 canonicalization of @code{host_alias} by @command{config.sub},
15335 otherwise it defaults to @code{build}.
15336 @end defmac
15338 @defmac AC_CANONICAL_TARGET
15339 @acindex{CANONICAL_TARGET}
15340 @ovindex target
15341 @ovindex target_cpu
15342 @ovindex target_vendor
15343 @ovindex target_os
15344 Compute the canonical target-system type variable, @code{target}, and its
15345 three individual parts @code{target_cpu}, @code{target_vendor}, and
15346 @code{target_os}.
15348 If @option{--target} was specified, then @code{target} is the
15349 canonicalization of @code{target_alias} by @command{config.sub},
15350 otherwise it defaults to @code{host}.
15351 @end defmac
15353 Note that there can be artifacts due to the backward compatibility
15354 code.  See @xref{Hosts and Cross-Compilation}, for more.
15356 @node Using System Type
15357 @section Using the System Type
15359 In @file{configure.ac} the system type is generally used by one or more
15360 @code{case} statements to select system-specifics.  Shell wildcards can
15361 be used to match a group of system types.
15363 For example, an extra assembler code object file could be chosen, giving
15364 access to a CPU cycle counter register.  @code{$(CYCLE_OBJ)} in the
15365 following would be used in a makefile to add the object to a
15366 program or library.
15368 @example
15369 case $host in
15370   alpha*-*-*) CYCLE_OBJ=rpcc.o ;;
15371   i?86-*-*)   CYCLE_OBJ=rdtsc.o ;;
15372   *)          CYCLE_OBJ= ;;
15373 esac
15374 AC_SUBST([CYCLE_OBJ])
15375 @end example
15377 @code{AC_CONFIG_LINKS} (@pxref{Configuration Links}) is another good way
15378 to select variant source files, for example optimized code for some
15379 CPUs.  The configured CPU type doesn't always indicate exact CPU types,
15380 so some runtime capability checks may be necessary too.
15382 @example
15383 case $host in
15384   alpha*-*-*)   AC_CONFIG_LINKS([dither.c:alpha/dither.c]) ;;
15385   powerpc*-*-*) AC_CONFIG_LINKS([dither.c:powerpc/dither.c]) ;;
15386   *-*-*)        AC_CONFIG_LINKS([dither.c:generic/dither.c]) ;;
15387 esac
15388 @end example
15390 The host system type can also be used to find cross-compilation tools
15391 with @code{AC_CHECK_TOOL} (@pxref{Generic Programs}).
15393 The above examples all show @samp{$host}, since this is where the code
15394 is going to run.  Only rarely is it necessary to test @samp{$build}
15395 (which is where the build is being done).
15397 Whenever you're tempted to use @samp{$host} it's worth considering
15398 whether some sort of probe would be better.  New system types come along
15399 periodically or previously missing features are added.  Well-written
15400 probes can adapt themselves to such things, but hard-coded lists of
15401 names can't.  Here are some guidelines,
15403 @itemize @bullet
15404 @item
15405 Availability of libraries and library functions should always be checked
15406 by probing.
15407 @item
15408 Variant behavior of system calls is best identified with runtime tests
15409 if possible, but bug workarounds or obscure difficulties might have to
15410 be driven from @samp{$host}.
15411 @item
15412 Assembler code is inevitably highly CPU-specific and is best selected
15413 according to @samp{$host_cpu}.
15414 @item
15415 Assembler variations like underscore prefix on globals or ELF versus
15416 COFF type directives are however best determined by probing, perhaps
15417 even examining the compiler output.
15418 @end itemize
15420 @samp{$target} is for use by a package creating a compiler or similar.
15421 For ordinary packages it's meaningless and should not be used.  It
15422 indicates what the created compiler should generate code for, if it can
15423 cross-compile.  @samp{$target} generally selects various hard-coded CPU
15424 and system conventions, since usually the compiler or tools under
15425 construction themselves determine how the target works.
15428 @c ===================================================== Site Configuration.
15430 @node Site Configuration
15431 @chapter Site Configuration
15433 @command{configure} scripts support several kinds of local configuration
15434 decisions.  There are ways for users to specify where external software
15435 packages are, include or exclude optional features, install programs
15436 under modified names, and set default values for @command{configure}
15437 options.
15439 @menu
15440 * Help Formatting::             Customizing @samp{configure --help}
15441 * External Software::           Working with other optional software
15442 * Package Options::             Selecting optional features
15443 * Pretty Help Strings::         Formatting help string
15444 * Site Details::                Configuring site details
15445 * Transforming Names::          Changing program names when installing
15446 * Site Defaults::               Giving @command{configure} local defaults
15447 @end menu
15449 @node Help Formatting
15450 @section Controlling Help Output
15452 Users consult @samp{configure --help} to learn of configuration
15453 decisions specific to your package.  By default, @command{configure}
15454 breaks this output into sections for each type of option; within each
15455 section, help strings appear in the order @file{configure.ac} defines
15456 them:
15458 @example
15459 Optional Features:
15460   @dots{}
15461   --enable-bar            include bar
15463 Optional Packages:
15464   @dots{}
15465   --with-foo              use foo
15466 @end example
15468 @defmac AC_PRESERVE_HELP_ORDER
15469 @acindex{PRESERVE_HELP_ORDER}
15471 Request an alternate @option{--help} format, in which options of all
15472 types appear together, in the order defined.  Call this macro before any
15473 @code{AC_ARG_ENABLE} or @code{AC_ARG_WITH}.
15475 @example
15476 Optional Features and Packages:
15477   @dots{}
15478   --enable-bar            include bar
15479   --with-foo              use foo
15480 @end example
15482 @end defmac
15484 @node External Software
15485 @section Working With External Software
15486 @cindex External software
15488 Some packages require, or can optionally use, other software packages
15489 that are already installed.  The user can give @command{configure}
15490 command line options to specify which such external software to use.
15491 The options have one of these forms:
15493 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
15494 @c awful.
15495 @example
15496 --with-@var{package}[=@var{arg}]
15497 --without-@var{package}
15498 @end example
15500 For example, @option{--with-gnu-ld} means work with the @acronym{GNU} linker
15501 instead of some other linker.  @option{--with-x} means work with The X
15502 Window System.
15504 The user can give an argument by following the package name with
15505 @samp{=} and the argument.  Giving an argument of @samp{no} is for
15506 packages that are used by default; it says to @emph{not} use the
15507 package.  An argument that is neither @samp{yes} nor @samp{no} could
15508 include a name or number of a version of the other package, to specify
15509 more precisely which other package this program is supposed to work
15510 with.  If no argument is given, it defaults to @samp{yes}.
15511 @option{--without-@var{package}} is equivalent to
15512 @option{--with-@var{package}=no}.
15514 @command{configure} scripts do not complain about
15515 @option{--with-@var{package}} options that they do not support.  This
15516 behavior permits configuring a source tree containing multiple packages
15517 with a top-level @command{configure} script when the packages support
15518 different options, without spurious error messages about options that
15519 some of the packages support.  An unfortunate side effect is that option
15520 spelling errors are not diagnosed.  No better approach to this problem
15521 has been suggested so far.
15523 For each external software package that may be used, @file{configure.ac}
15524 should call @code{AC_ARG_WITH} to detect whether the @command{configure}
15525 user asked to use it.  Whether each package is used or not by default,
15526 and which arguments are valid, is up to you.
15528 @defmac AC_ARG_WITH (@var{package}, @var{help-string}, @ovar{action-if-given}, @ovar{action-if-not-given})
15529 @acindex{ARG_WITH}
15530 If the user gave @command{configure} the option @option{--with-@var{package}}
15531 or @option{--without-@var{package}}, run shell commands
15532 @var{action-if-given}.  If neither option was given, run shell commands
15533 @var{action-if-not-given}.  The name @var{package} indicates another
15534 software package that this program should work with.  It should consist
15535 only of alphanumeric characters, dashes, and dots.
15537 The option's argument is available to the shell commands
15538 @var{action-if-given} in the shell variable @code{withval}, which is
15539 actually just the value of the shell variable @code{with_@var{package}},
15540 with any non-alphanumeric characters changed into @samp{_}.  You may use that
15541 variable instead, if you wish.
15543 The argument @var{help-string} is a description of the option that
15544 looks like this:
15545 @example
15546   --with-readline         support fancy command line editing
15547 @end example
15549 @noindent
15550 @var{help-string} may be more than one line long, if more detail is
15551 needed.  Just make sure the columns line up in @samp{configure
15552 --help}.  Avoid tabs in the help string.  You'll need to enclose the
15553 help string in @samp{[} and @samp{]} in order to produce the leading
15554 blanks.
15556 You should format your @var{help-string} with the macro
15557 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
15559 The following example shows how to use the @code{AC_ARG_WITH} macro in
15560 a common situation.  You want to let the user decide whether to enable
15561 support for an external library (e.g., the readline library); if the user
15562 specified neither @option{--with-readline} nor @option{--without-readline},
15563 you want to enable support for readline only if the library is available
15564 on the system.
15566 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
15567 @example
15568 AC_ARG_WITH([readline],
15569   [AS_HELP_STRING([--with-readline],
15570     [support fancy command line editing @@<:@@default=check@@:>@@])],
15571   [],
15572   [with_readline=check])
15574 LIBREADLINE=
15575 AS_IF([test "x$with_readline" != xno],
15576   [AC_CHECK_LIB([readline], [main],
15577     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
15578      AC_DEFINE([HAVE_LIBREADLINE], [1],
15579                [Define if you have libreadline])
15580     ],
15581     [if test "x$with_readline" != xcheck; then
15582        AC_MSG_FAILURE(
15583          [--with-readline was given, but test for readline failed])
15584      fi
15585     ], -lncurses)])
15586 @end example
15588 The next example shows how to use @code{AC_ARG_WITH} to give the user the
15589 possibility to enable support for the readline library, in case it is still
15590 experimental and not well tested, and is therefore disabled by default.
15592 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
15593 @example
15594 AC_ARG_WITH([readline],
15595   [AS_HELP_STRING([--with-readline],
15596     [enable experimental support for readline])],
15597   [],
15598   [with_readline=no])
15600 LIBREADLINE=
15601 AS_IF([test "x$with_readline" != xno],
15602   [AC_CHECK_LIB([readline], [main],
15603     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
15604      AC_DEFINE([HAVE_LIBREADLINE], [1],
15605                [Define if you have libreadline])
15606     ],
15607     [AC_MSG_FAILURE(
15608        [--with-readline was given, but test for readline failed])],
15609     [-lncurses])])
15610 @end example
15612 The last example shows how to use @code{AC_ARG_WITH} to give the user the
15613 possibility to disable support for the readline library, given that it is
15614 an important feature and that it should be enabled by default.
15616 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
15617 @example
15618 AC_ARG_WITH([readline],
15619   [AS_HELP_STRING([--without-readline],
15620     [disable support for readline])],
15621   [],
15622   [with_readline=yes])
15624 LIBREADLINE=
15625 AS_IF([test "x$with_readline" != xno],
15626   [AC_CHECK_LIB([readline], [main],
15627     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
15628      AC_DEFINE([HAVE_LIBREADLINE], [1],
15629                [Define if you have libreadline])
15630     ],
15631     [AC_MSG_FAILURE(
15632        [readline test failed (--without-readline to disable)])],
15633     [-lncurses])])
15634 @end example
15636 These three examples can be easily adapted to the case where
15637 @code{AC_ARG_ENABLE} should be preferred to @code{AC_ARG_WITH} (see
15638 @ref{Package Options}).
15639 @end defmac
15641 @defmac AC_WITH (@var{package}, @var{action-if-given}, @ovar{action-if-not-given})
15642 @acindex{WITH}
15643 This is an obsolete version of @code{AC_ARG_WITH} that does not
15644 support providing a help string.
15645 @end defmac
15647 @node Package Options
15648 @section Choosing Package Options
15649 @cindex Package options
15650 @cindex Options, package
15652 If a software package has optional compile-time features, the user can
15653 give @command{configure} command line options to specify whether to
15654 compile them.  The options have one of these forms:
15656 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
15657 @c awful.
15658 @example
15659 --enable-@var{feature}[=@var{arg}]
15660 --disable-@var{feature}
15661 @end example
15663 These options allow users to choose which optional features to build and
15664 install.  @option{--enable-@var{feature}} options should never make a
15665 feature behave differently or cause one feature to replace another.
15666 They should only cause parts of the program to be built rather than left
15667 out.
15669 The user can give an argument by following the feature name with
15670 @samp{=} and the argument.  Giving an argument of @samp{no} requests
15671 that the feature @emph{not} be made available.  A feature with an
15672 argument looks like @option{--enable-debug=stabs}.  If no argument is
15673 given, it defaults to @samp{yes}.  @option{--disable-@var{feature}} is
15674 equivalent to @option{--enable-@var{feature}=no}.
15676 @command{configure} scripts do not complain about
15677 @option{--enable-@var{feature}} options that they do not support.
15678 This behavior permits configuring a source tree containing multiple
15679 packages with a top-level @command{configure} script when the packages
15680 support different options, without spurious error messages about options
15681 that some of the packages support.
15682 An unfortunate side effect is that option spelling errors are not diagnosed.
15683 No better approach to this problem has been suggested so far.
15685 For each optional feature, @file{configure.ac} should call
15686 @code{AC_ARG_ENABLE} to detect whether the @command{configure} user asked
15687 to include it.  Whether each feature is included or not by default, and
15688 which arguments are valid, is up to you.
15690 @defmac AC_ARG_ENABLE (@var{feature}, @var{help-string}, @ovar{action-if-given}, @ovar{action-if-not-given})
15691 @acindex{ARG_ENABLE}
15692 If the user gave @command{configure} the option
15693 @option{--enable-@var{feature}} or @option{--disable-@var{feature}}, run
15694 shell commands @var{action-if-given}.  If neither option was given, run
15695 shell commands @var{action-if-not-given}.  The name @var{feature}
15696 indicates an optional user-level facility.  It should consist only of
15697 alphanumeric characters, dashes, and dots.
15699 The option's argument is available to the shell commands
15700 @var{action-if-given} in the shell variable @code{enableval}, which is
15701 actually just the value of the shell variable
15702 @code{enable_@var{feature}}, with any non-alphanumeric characters changed into
15703 @samp{_}.  You may use that variable instead, if you wish.  The
15704 @var{help-string} argument is like that of @code{AC_ARG_WITH}
15705 (@pxref{External Software}).
15707 You should format your @var{help-string} with the macro
15708 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
15710 See the examples suggested with the definition of @code{AC_ARG_WITH}
15711 (@pxref{External Software}) to get an idea of possible applications of
15712 @code{AC_ARG_ENABLE}.
15713 @end defmac
15715 @defmac AC_ENABLE (@var{feature}, @var{action-if-given}, @ovar{action-if-not-given})
15716 @acindex{ENABLE}
15717 This is an obsolete version of @code{AC_ARG_ENABLE} that does not
15718 support providing a help string.
15719 @end defmac
15722 @node Pretty Help Strings
15723 @section Making Your Help Strings Look Pretty
15724 @cindex Help strings
15726 Properly formatting the @samp{help strings} which are used in
15727 @code{AC_ARG_WITH} (@pxref{External Software}) and @code{AC_ARG_ENABLE}
15728 (@pxref{Package Options}) can be challenging.  Specifically, you want
15729 your own @samp{help strings} to line up in the appropriate columns of
15730 @samp{configure --help} just like the standard Autoconf @samp{help
15731 strings} do.  This is the purpose of the @code{AS_HELP_STRING} macro.
15733 @defmac AS_HELP_STRING (@var{left-hand-side}, @var{right-hand-side})
15734 @acindex{HELP_STRING}
15736 Expands into an help string that looks pretty when the user executes
15737 @samp{configure --help}.  It is typically used in @code{AC_ARG_WITH}
15738 (@pxref{External Software}) or @code{AC_ARG_ENABLE} (@pxref{Package
15739 Options}).  The following example makes this clearer.
15741 @example
15742 AC_ARG_WITH([foo],
15743   [AS_HELP_STRING([--with-foo],
15744      [use foo (default is no)])],
15745   [use_foo=$withval],
15746   [use_foo=no])
15747 @end example
15749 The second argument of @code{AS_HELP_STRING} is
15750 not a literal, and should not be double quoted.
15751 @xref{Autoconf Language}, for a more detailed explanation.
15752 Then the last few lines of @samp{configure --help} appear like
15753 this:
15755 @example
15756 --enable and --with options recognized:
15757   --with-foo              use foo (default is no)
15758 @end example
15760 The @code{AS_HELP_STRING} macro is particularly helpful when the
15761 @var{left-hand-side} and/or @var{right-hand-side} are composed of macro
15762 arguments, as shown in the following example.
15764 @example
15765 AC_DEFUN([MY_ARG_WITH],
15766   [AC_ARG_WITH([$1],
15767      [AS_HELP_STRING([--with-$1], [use $1 (default is $2)])],
15768      [use_[]$1=$withval],
15769      [use_[]$1=$2])])
15770 @end example
15771 @end defmac
15774 @node Site Details
15775 @section Configuring Site Details
15776 @cindex Site details
15778 Some software packages require complex site-specific information.  Some
15779 examples are host names to use for certain services, company names, and
15780 email addresses to contact.  Since some configuration scripts generated
15781 by Metaconfig ask for such information interactively, people sometimes
15782 wonder how to get that information in Autoconf-generated configuration
15783 scripts, which aren't interactive.
15785 Such site configuration information should be put in a file that is
15786 edited @emph{only by users}, not by programs.  The location of the file
15787 can either be based on the @code{prefix} variable, or be a standard
15788 location such as the user's home directory.  It could even be specified
15789 by an environment variable.  The programs should examine that file at
15790 runtime, rather than at compile time.  Runtime configuration is more
15791 convenient for users and makes the configuration process simpler than
15792 getting the information while configuring.  @xref{Directory Variables, ,
15793 Variables for Installation Directories, standards, @acronym{GNU} Coding
15794 Standards}, for more information on where to put data files.
15796 @node Transforming Names
15797 @section Transforming Program Names When Installing
15798 @cindex Transforming program names
15799 @cindex Program names, transforming
15801 Autoconf supports changing the names of programs when installing them.
15802 In order to use these transformations, @file{configure.ac} must call the
15803 macro @code{AC_ARG_PROGRAM}.
15805 @defmac AC_ARG_PROGRAM
15806 @acindex{ARG_PROGRAM}
15807 @ovindex program_transform_name
15808 Place in output variable @code{program_transform_name} a sequence of
15809 @code{sed} commands for changing the names of installed programs.
15811 If any of the options described below are given to @command{configure},
15812 program names are transformed accordingly.  Otherwise, if
15813 @code{AC_CANONICAL_TARGET} has been called and a @option{--target} value
15814 is given, the target type followed by a dash is used as a prefix.
15815 Otherwise, no program name transformation is done.
15816 @end defmac
15818 @menu
15819 * Transformation Options::      @command{configure} options to transform names
15820 * Transformation Examples::     Sample uses of transforming names
15821 * Transformation Rules::        Makefile uses of transforming names
15822 @end menu
15824 @node Transformation Options
15825 @subsection Transformation Options
15827 You can specify name transformations by giving @command{configure} these
15828 command line options:
15830 @table @option
15831 @item --program-prefix=@var{prefix}
15832 prepend @var{prefix} to the names;
15834 @item --program-suffix=@var{suffix}
15835 append @var{suffix} to the names;
15837 @item --program-transform-name=@var{expression}
15838 perform @code{sed} substitution @var{expression} on the names.
15839 @end table
15841 @node Transformation Examples
15842 @subsection Transformation Examples
15844 These transformations are useful with programs that can be part of a
15845 cross-compilation development environment.  For example, a
15846 cross-assembler running on a Sun 4 configured with
15847 @option{--target=i960-vxworks} is normally installed as
15848 @file{i960-vxworks-as}, rather than @file{as}, which could be confused
15849 with a native Sun 4 assembler.
15851 You can force a program name to begin with @file{g}, if you don't want
15852 @acronym{GNU} programs installed on your system to shadow other programs with
15853 the same name.  For example, if you configure @acronym{GNU} @code{diff} with
15854 @option{--program-prefix=g}, then when you run @samp{make install} it is
15855 installed as @file{/usr/local/bin/gdiff}.
15857 As a more sophisticated example, you could use
15859 @example
15860 --program-transform-name='s/^/g/; s/^gg/g/; s/^gless/less/'
15861 @end example
15862 @noindent
15864 to prepend @samp{g} to most of the program names in a source tree,
15865 excepting those like @code{gdb} that already have one and those like
15866 @code{less} and @code{lesskey} that aren't @acronym{GNU} programs.  (That is
15867 assuming that you have a source tree containing those programs that is
15868 set up to use this feature.)
15870 One way to install multiple versions of some programs simultaneously is
15871 to append a version number to the name of one or both.  For example, if
15872 you want to keep Autoconf version 1 around for awhile, you can configure
15873 Autoconf version 2 using @option{--program-suffix=2} to install the
15874 programs as @file{/usr/local/bin/autoconf2},
15875 @file{/usr/local/bin/autoheader2}, etc.  Nevertheless, pay attention
15876 that only the binaries are renamed, therefore you'd have problems with
15877 the library files which might overlap.
15879 @node Transformation Rules
15880 @subsection Transformation Rules
15882 Here is how to use the variable @code{program_transform_name} in a
15883 @file{Makefile.in}:
15885 @example
15886 PROGRAMS = cp ls rm
15887 transform = @@program_transform_name@@
15888 install:
15889         for p in $(PROGRAMS); do \
15890           $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | \
15891                                               sed '$(transform)'`; \
15892         done
15894 uninstall:
15895         for p in $(PROGRAMS); do \
15896           rm -f $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`; \
15897         done
15898 @end example
15900 It is guaranteed that @code{program_transform_name} is never empty, and
15901 that there are no useless separators.  Therefore you may safely embed
15902 @code{program_transform_name} within a sed program using @samp{;}:
15904 @example
15905 transform = @@program_transform_name@@
15906 transform_exe = s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/
15907 @end example
15909 Whether to do the transformations on documentation files (Texinfo or
15910 @code{man}) is a tricky question; there seems to be no perfect answer,
15911 due to the several reasons for name transforming.  Documentation is not
15912 usually particular to a specific architecture, and Texinfo files do not
15913 conflict with system documentation.  But they might conflict with
15914 earlier versions of the same files, and @code{man} pages sometimes do
15915 conflict with system documentation.  As a compromise, it is probably
15916 best to do name transformations on @code{man} pages but not on Texinfo
15917 manuals.
15919 @node Site Defaults
15920 @section Setting Site Defaults
15921 @cindex Site defaults
15923 Autoconf-generated @command{configure} scripts allow your site to provide
15924 default values for some configuration values.  You do this by creating
15925 site- and system-wide initialization files.
15927 @evindex CONFIG_SITE
15928 If the environment variable @code{CONFIG_SITE} is set, @command{configure}
15929 uses its value as the name of a shell script to read.  Otherwise, it
15930 reads the shell script @file{@var{prefix}/share/config.site} if it exists,
15931 then @file{@var{prefix}/etc/config.site} if it exists.  Thus,
15932 settings in machine-specific files override those in machine-independent
15933 ones in case of conflict.
15935 Site files can be arbitrary shell scripts, but only certain kinds of
15936 code are really appropriate to be in them.  Because @command{configure}
15937 reads any cache file after it has read any site files, a site file can
15938 define a default cache file to be shared between all Autoconf-generated
15939 @command{configure} scripts run on that system (@pxref{Cache Files}).  If
15940 you set a default cache file in a site file, it is a good idea to also
15941 set the output variable @code{CC} in that site file, because the cache
15942 file is only valid for a particular compiler, but many systems have
15943 several available.
15945 You can examine or override the value set by a command line option to
15946 @command{configure} in a site file; options set shell variables that have
15947 the same names as the options, with any dashes turned into underscores.
15948 The exceptions are that @option{--without-} and @option{--disable-} options
15949 are like giving the corresponding @option{--with-} or @option{--enable-}
15950 option and the value @samp{no}.  Thus, @option{--cache-file=localcache}
15951 sets the variable @code{cache_file} to the value @samp{localcache};
15952 @option{--enable-warnings=no} or @option{--disable-warnings} sets the variable
15953 @code{enable_warnings} to the value @samp{no}; @option{--prefix=/usr} sets the
15954 variable @code{prefix} to the value @samp{/usr}; etc.
15956 Site files are also good places to set default values for other output
15957 variables, such as @code{CFLAGS}, if you need to give them non-default
15958 values: anything you would normally do, repetitively, on the command
15959 line.  If you use non-default values for @var{prefix} or
15960 @var{exec_prefix} (wherever you locate the site file), you can set them
15961 in the site file if you specify it with the @code{CONFIG_SITE}
15962 environment variable.
15964 You can set some cache values in the site file itself.  Doing this is
15965 useful if you are cross-compiling, where it is impossible to check features
15966 that require running a test program.  You could ``prime the cache'' by
15967 setting those values correctly for that system in
15968 @file{@var{prefix}/etc/config.site}.  To find out the names of the cache
15969 variables you need to set, look for shell variables with @samp{_cv_} in
15970 their names in the affected @command{configure} scripts, or in the Autoconf
15971 M4 source code for those macros.
15973 The cache file is careful to not override any variables set in the site
15974 files.  Similarly, you should not override command-line options in the
15975 site files.  Your code should check that variables such as @code{prefix}
15976 and @code{cache_file} have their default values (as set near the top of
15977 @command{configure}) before changing them.
15979 Here is a sample file @file{/usr/share/local/gnu/share/config.site}.  The
15980 command @samp{configure --prefix=/usr/share/local/gnu} would read this
15981 file (if @code{CONFIG_SITE} is not set to a different file).
15983 @example
15984 # config.site for configure
15986 # Change some defaults.
15987 test "$prefix" = NONE && prefix=/usr/share/local/gnu
15988 test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu
15989 test "$sharedstatedir" = '$prefix/com' && sharedstatedir=/var
15990 test "$localstatedir" = '$prefix/var' && localstatedir=/var
15992 # Give Autoconf 2.x generated configure scripts a shared default
15993 # cache file for feature test results, architecture-specific.
15994 if test "$cache_file" = /dev/null; then
15995   cache_file="$prefix/var/config.cache"
15996   # A cache file is only valid for one C compiler.
15997   CC=gcc
15999 @end example
16002 @c ============================================== Running configure Scripts.
16004 @node Running configure Scripts
16005 @chapter Running @command{configure} Scripts
16006 @cindex @command{configure}
16008 Below are instructions on how to configure a package that uses a
16009 @command{configure} script, suitable for inclusion as an @file{INSTALL}
16010 file in the package.  A plain-text version of @file{INSTALL} which you
16011 may use comes with Autoconf.
16013 @menu
16014 * Basic Installation::          Instructions for typical cases
16015 * Compilers and Options::       Selecting compilers and optimization
16016 * Multiple Architectures::      Compiling for multiple architectures at once
16017 * Installation Names::          Installing in different directories
16018 * Optional Features::           Selecting optional features
16019 * System Type::                 Specifying the system type
16020 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
16021 * Defining Variables::          Specifying the compiler etc.
16022 * configure Invocation::        Changing how @command{configure} runs
16023 @end menu
16025 @set autoconf
16026 @include install.texi
16029 @c ============================================== Recreating a Configuration
16031 @node config.status Invocation
16032 @chapter Recreating a Configuration
16033 @cindex @command{config.status}
16035 The @command{configure} script creates a file named @file{config.status},
16036 which actually configures, @dfn{instantiates}, the template files.  It
16037 also records the configuration options that were specified when the
16038 package was last configured in case reconfiguring is needed.
16040 Synopsis:
16041 @example
16042 ./config.status @var{option}@dots{} [@var{file}@dots{}]
16043 @end example
16045 It configures the @var{files}; if none are specified, all the templates
16046 are instantiated.  The files must be specified without their
16047 dependencies, as in
16049 @example
16050 ./config.status foobar
16051 @end example
16053 @noindent
16056 @example
16057 ./config.status foobar:foo.in:bar.in
16058 @end example
16060 The supported options are:
16062 @table @option
16063 @item --help
16064 @itemx -h
16065 Print a summary of the command line options, the list of the template
16066 files, and exit.
16068 @item --version
16069 @itemx -V
16070 Print the version number of Autoconf and the configuration settings,
16071 and exit.
16073 @item --silent
16074 @itemx --quiet
16075 @itemx -q
16076 Do not print progress messages.
16078 @item --debug
16079 @itemx -d
16080 Don't remove the temporary files.
16082 @item --file=@var{file}[:@var{template}]
16083 Require that @var{file} be instantiated as if
16084 @samp{AC_CONFIG_FILES(@var{file}:@var{template})} was used.  Both
16085 @var{file} and @var{template} may be @samp{-} in which case the standard
16086 output and/or standard input, respectively, is used.  If a
16087 @var{template} file name is relative, it is first looked for in the build
16088 tree, and then in the source tree.  @xref{Configuration Actions}, for
16089 more details.
16091 This option and the following ones provide one way for separately
16092 distributed packages to share the values computed by @command{configure}.
16093 Doing so can be useful if some of the packages need a superset of the
16094 features that one of them, perhaps a common library, does.  These
16095 options allow a @file{config.status} file to create files other than the
16096 ones that its @file{configure.ac} specifies, so it can be used for a
16097 different package.
16099 @item --header=@var{file}[:@var{template}]
16100 Same as @option{--file} above, but with @samp{AC_CONFIG_HEADERS}.
16102 @item --recheck
16103 Ask @file{config.status} to update itself and exit (no instantiation).
16104 This option is useful if you change @command{configure}, so that the
16105 results of some tests might be different from the previous run.  The
16106 @option{--recheck} option reruns @command{configure} with the same arguments
16107 you used before, plus the @option{--no-create} option, which prevents
16108 @command{configure} from running @file{config.status} and creating
16109 @file{Makefile} and other files, and the @option{--no-recursion} option,
16110 which prevents @command{configure} from running other @command{configure}
16111 scripts in subdirectories.  (This is so other Make rules can
16112 run @file{config.status} when it changes; @pxref{Automatic Remaking},
16113 for an example).
16114 @end table
16116 @file{config.status} checks several optional environment variables that
16117 can alter its behavior:
16119 @defvar CONFIG_SHELL
16120 @evindex CONFIG_SHELL
16121 The shell with which to run @command{configure} for the @option{--recheck}
16122 option.  It must be Bourne-compatible.  The default is a shell that
16123 supports @code{LINENO} if available, and @file{/bin/sh} otherwise.
16124 Invoking @command{configure} by hand bypasses this setting, so you may
16125 need to use a command like @samp{CONFIG_SHELL=/bin/bash /bin/bash ./configure}
16126 to insure that the same shell is used everywhere.  The absolute name of the
16127 shell should be passed.
16128 @end defvar
16130 @defvar CONFIG_STATUS
16131 @evindex CONFIG_STATUS
16132 The file name to use for the shell script that records the
16133 configuration.  The default is @file{./config.status}.  This variable is
16134 useful when one package uses parts of another and the @command{configure}
16135 scripts shouldn't be merged because they are maintained separately.
16136 @end defvar
16138 You can use @file{./config.status} in your makefiles.  For example, in
16139 the dependencies given above (@pxref{Automatic Remaking}),
16140 @file{config.status} is run twice when @file{configure.ac} has changed.
16141 If that bothers you, you can make each run only regenerate the files for
16142 that rule:
16143 @example
16144 @group
16145 config.h: stamp-h
16146 stamp-h: config.h.in config.status
16147         ./config.status config.h
16148         echo > stamp-h
16150 Makefile: Makefile.in config.status
16151         ./config.status Makefile
16152 @end group
16153 @end example
16155 The calling convention of @file{config.status} has changed; see
16156 @ref{Obsolete config.status Use}, for details.
16159 @c =================================================== Obsolete Constructs
16161 @node Obsolete Constructs
16162 @chapter Obsolete Constructs
16163 @cindex Obsolete constructs
16165 Autoconf changes, and throughout the years some constructs have been
16166 obsoleted.  Most of the changes involve the macros, but in some cases
16167 the tools themselves, or even some concepts, are now considered
16168 obsolete.
16170 You may completely skip this chapter if you are new to Autoconf.  Its
16171 intention is mainly to help maintainers updating their packages by
16172 understanding how to move to more modern constructs.
16174 @menu
16175 * Obsolete config.status Use::  Different calling convention
16176 * acconfig.h::                  Additional entries in @file{config.h.in}
16177 * autoupdate Invocation::       Automatic update of @file{configure.ac}
16178 * Obsolete Macros::             Backward compatibility macros
16179 * Autoconf 1::                  Tips for upgrading your files
16180 * Autoconf 2.13::               Some fresher tips
16181 @end menu
16183 @node Obsolete config.status Use
16184 @section Obsolete @file{config.status} Invocation
16186 @file{config.status} now supports arguments to specify the files to
16187 instantiate; see @ref{config.status Invocation}, for more details.
16188 Before, environment variables had to be used.
16190 @defvar CONFIG_COMMANDS
16191 @evindex CONFIG_COMMANDS
16192 The tags of the commands to execute.  The default is the arguments given
16193 to @code{AC_OUTPUT} and @code{AC_CONFIG_COMMANDS} in
16194 @file{configure.ac}.
16195 @end defvar
16197 @defvar CONFIG_FILES
16198 @evindex CONFIG_FILES
16199 The files in which to perform @samp{@@@var{variable}@@} substitutions.
16200 The default is the arguments given to @code{AC_OUTPUT} and
16201 @code{AC_CONFIG_FILES} in @file{configure.ac}.
16202 @end defvar
16204 @defvar CONFIG_HEADERS
16205 @evindex CONFIG_HEADERS
16206 The files in which to substitute C @code{#define} statements.  The
16207 default is the arguments given to @code{AC_CONFIG_HEADERS}; if that
16208 macro was not called, @file{config.status} ignores this variable.
16209 @end defvar
16211 @defvar CONFIG_LINKS
16212 @evindex CONFIG_LINKS
16213 The symbolic links to establish.  The default is the arguments given to
16214 @code{AC_CONFIG_LINKS}; if that macro was not called,
16215 @file{config.status} ignores this variable.
16216 @end defvar
16218 In @ref{config.status Invocation}, using this old interface, the example
16219 would be:
16221 @example
16222 @group
16223 config.h: stamp-h
16224 stamp-h: config.h.in config.status
16225         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_FILES= \
16226           CONFIG_HEADERS=config.h ./config.status
16227         echo > stamp-h
16229 Makefile: Makefile.in config.status
16230         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_HEADERS= \
16231           CONFIG_FILES=Makefile ./config.status
16232 @end group
16233 @end example
16235 @noindent
16236 (If @file{configure.ac} does not call @code{AC_CONFIG_HEADERS}, there is
16237 no need to set @code{CONFIG_HEADERS} in the @code{make} rules.  Equally
16238 for @code{CONFIG_COMMANDS}, etc.)
16241 @node acconfig.h
16242 @section @file{acconfig.h}
16244 @cindex @file{acconfig.h}
16245 @cindex @file{config.h.top}
16246 @cindex @file{config.h.bot}
16248 In order to produce @file{config.h.in}, @command{autoheader} needs to
16249 build or to find templates for each symbol.  Modern releases of Autoconf
16250 use @code{AH_VERBATIM} and @code{AH_TEMPLATE} (@pxref{Autoheader
16251 Macros}), but in older releases a file, @file{acconfig.h}, contained the
16252 list of needed templates.  @command{autoheader} copied comments and
16253 @code{#define} and @code{#undef} statements from @file{acconfig.h} in
16254 the current directory, if present.  This file used to be mandatory if
16255 you @code{AC_DEFINE} any additional symbols.
16257 Modern releases of Autoconf also provide @code{AH_TOP} and
16258 @code{AH_BOTTOM} if you need to prepend/append some information to
16259 @file{config.h.in}.  Ancient versions of Autoconf had a similar feature:
16260 if @file{./acconfig.h} contains the string @samp{@@TOP@@},
16261 @command{autoheader} copies the lines before the line containing
16262 @samp{@@TOP@@} into the top of the file that it generates.  Similarly,
16263 if @file{./acconfig.h} contains the string @samp{@@BOTTOM@@},
16264 @command{autoheader} copies the lines after that line to the end of the
16265 file it generates.  Either or both of those strings may be omitted.  An
16266 even older alternate way to produce the same effect in ancient versions
16267 of Autoconf is to create the files @file{@var{file}.top} (typically
16268 @file{config.h.top}) and/or @file{@var{file}.bot} in the current
16269 directory.  If they exist, @command{autoheader} copies them to the
16270 beginning and end, respectively, of its output.
16272 In former versions of Autoconf, the files used in preparing a software
16273 package for distribution were:
16274 @example
16275 @group
16276 configure.ac --.   .------> autoconf* -----> configure
16277                +---+
16278 [aclocal.m4] --+   `---.
16279 [acsite.m4] ---'       |
16280                        +--> [autoheader*] -> [config.h.in]
16281 [acconfig.h] ----.     |
16282                  +-----'
16283 [config.h.top] --+
16284 [config.h.bot] --'
16285 @end group
16286 @end example
16288 Using only the @code{AH_} macros, @file{configure.ac} should be
16289 self-contained, and should not depend upon @file{acconfig.h} etc.
16292 @node autoupdate Invocation
16293 @section Using @command{autoupdate} to Modernize @file{configure.ac}
16294 @cindex @command{autoupdate}
16296 The @command{autoupdate} program updates a @file{configure.ac} file that
16297 calls Autoconf macros by their old names to use the current macro names.
16298 In version 2 of Autoconf, most of the macros were renamed to use a more
16299 uniform and descriptive naming scheme.  @xref{Macro Names}, for a
16300 description of the new scheme.  Although the old names still work
16301 (@pxref{Obsolete Macros}, for a list of the old macros and the corresponding
16302 new names), you can make your @file{configure.ac} files more readable
16303 and make it easier to use the current Autoconf documentation if you
16304 update them to use the new macro names.
16306 @evindex SIMPLE_BACKUP_SUFFIX
16307 If given no arguments, @command{autoupdate} updates @file{configure.ac},
16308 backing up the original version with the suffix @file{~} (or the value
16309 of the environment variable @code{SIMPLE_BACKUP_SUFFIX}, if that is
16310 set).  If you give @command{autoupdate} an argument, it reads that file
16311 instead of @file{configure.ac} and writes the updated file to the
16312 standard output.
16314 @noindent
16315 @command{autoupdate} accepts the following options:
16317 @table @option
16318 @item --help
16319 @itemx -h
16320 Print a summary of the command line options and exit.
16322 @item --version
16323 @itemx -V
16324 Print the version number of Autoconf and exit.
16326 @item --verbose
16327 @itemx -v
16328 Report processing steps.
16330 @item --debug
16331 @itemx -d
16332 Don't remove the temporary files.
16334 @item --force
16335 @itemx -f
16336 Force the update even if the file has not changed.  Disregard the cache.
16338 @item --include=@var{dir}
16339 @itemx -I @var{dir}
16340 Also look for input files in @var{dir}.  Multiple invocations accumulate.
16341 Directories are browsed from last to first.
16342 @end table
16344 @node Obsolete Macros
16345 @section Obsolete Macros
16347 Several macros are obsoleted in Autoconf, for various reasons (typically
16348 they failed to quote properly, couldn't be extended for more recent
16349 issues, etc.).  They are still supported, but deprecated: their use
16350 should be avoided.
16352 During the jump from Autoconf version 1 to version 2, most of the
16353 macros were renamed to use a more uniform and descriptive naming scheme,
16354 but their signature did not change.  @xref{Macro Names}, for a
16355 description of the new naming scheme.  Below, if there is just the mapping
16356 from old names to new names for these macros, the reader is invited to
16357 refer to the definition of the new macro for the signature and the
16358 description.
16360 @defmac AC_ALLOCA
16361 @acindex{ALLOCA}
16362 @code{AC_FUNC_ALLOCA}
16363 @end defmac
16365 @defmac AC_ARG_ARRAY
16366 @acindex{ARG_ARRAY}
16367 removed because of limited usefulness
16368 @end defmac
16370 @defmac AC_C_CROSS
16371 @acindex{C_CROSS}
16372 This macro is obsolete; it does nothing.
16373 @end defmac
16375 @defmac AC_C_LONG_DOUBLE
16376 @acindex{C_LONG_DOUBLE}
16377 @cvindex HAVE_LONG_DOUBLE
16378 If the C compiler supports a working @code{long double} type with more
16379 range or precision than the @code{double} type, define
16380 @code{HAVE_LONG_DOUBLE}.
16382 You should use @code{AC_TYPE_LONG_DOUBLE} or
16383 @code{AC_TYPE_LONG_DOUBLE_WIDER} instead.  @xref{Particular Types}.
16384 @end defmac
16386 @defmac AC_CANONICAL_SYSTEM
16387 @acindex{CANONICAL_SYSTEM}
16388 Determine the system type and set output variables to the names of the
16389 canonical system types.  @xref{Canonicalizing}, for details about the
16390 variables this macro sets.
16392 The user is encouraged to use either @code{AC_CANONICAL_BUILD}, or
16393 @code{AC_CANONICAL_HOST}, or @code{AC_CANONICAL_TARGET}, depending on
16394 the needs.  Using @code{AC_CANONICAL_TARGET} is enough to run the two
16395 other macros.
16396 @end defmac
16398 @defmac AC_CHAR_UNSIGNED
16399 @acindex{CHAR_UNSIGNED}
16400 @code{AC_C_CHAR_UNSIGNED}
16401 @end defmac
16403 @defmac AC_CHECK_TYPE (@var{type}, @var{default})
16404 @acindex{CHECK_TYPE}
16405 Autoconf, up to 2.13, used to provide this version of
16406 @code{AC_CHECK_TYPE}, deprecated because of its flaws.  First, although
16407 it is a member of the @code{CHECK} clan, it does
16408 more than just checking.  Secondly, missing types are defined
16409 using @code{#define}, not @code{typedef}, and this can lead to
16410 problems in the case of pointer types.
16412 This use of @code{AC_CHECK_TYPE} is obsolete and discouraged; see
16413 @ref{Generic Types}, for the description of the current macro.
16415 If the type @var{type} is not defined, define it to be the C (or C++)
16416 builtin type @var{default}, e.g., @samp{short int} or @samp{unsigned int}.
16418 This macro is equivalent to:
16420 @example
16421 AC_CHECK_TYPE([@var{type}], [],
16422   [AC_DEFINE_UNQUOTED([@var{type}], [@var{default}],
16423      [Define to `@var{default}'
16424       if <sys/types.h> does not define.])])
16425 @end example
16427 In order to keep backward compatibility, the two versions of
16428 @code{AC_CHECK_TYPE} are implemented, selected by a simple heuristics:
16430 @enumerate
16431 @item
16432 If there are three or four arguments, the modern version is used.
16434 @item
16435 If the second argument appears to be a C or C++ type, then the
16436 obsolete version is used.  This happens if the argument is a C or C++
16437 @emph{builtin} type or a C identifier ending in @samp{_t}, optionally
16438 followed by one of @samp{[(* } and then by a string of zero or more
16439 characters taken from the set @samp{[]()* _a-zA-Z0-9}.
16441 @item
16442 If the second argument is spelled with the alphabet of valid C and C++
16443 types, the user is warned and the modern version is used.
16445 @item
16446 Otherwise, the modern version is used.
16447 @end enumerate
16449 @noindent
16450 You are encouraged either to use a valid builtin type, or to use the
16451 equivalent modern code (see above), or better yet, to use
16452 @code{AC_CHECK_TYPES} together with
16454 @example
16455 #ifndef HAVE_LOFF_T
16456 typedef loff_t off_t;
16457 #endif
16458 @end example
16459 @end defmac
16460 @c end of AC_CHECK_TYPE
16462 @defmac AC_CHECKING (@var{feature-description})
16463 @acindex{CHECKING}
16464 Same as @samp{AC_MSG_NOTICE([checking @var{feature-description}@dots{}]}.
16465 @end defmac
16467 @defmac AC_COMPILE_CHECK (@var{echo-text}, @var{includes}, @var{function-body}, @var{action-if-true}, @ovar{action-if-false})
16468 @acindex{COMPILE_CHECK}
16469 This is an obsolete version of @code{AC_TRY_COMPILE} itself replaced by
16470 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}), with the
16471 addition that it prints @samp{checking for @var{echo-text}} to the
16472 standard output first, if @var{echo-text} is non-empty.  Use
16473 @code{AC_MSG_CHECKING} and @code{AC_MSG_RESULT} instead to print
16474 messages (@pxref{Printing Messages}).
16475 @end defmac
16477 @defmac AC_CONST
16478 @acindex{CONST}
16479 @code{AC_C_CONST}
16480 @end defmac
16482 @defmac AC_CROSS_CHECK
16483 @acindex{CROSS_CHECK}
16484 Same as @code{AC_C_CROSS}, which is obsolete too, and does nothing
16485 @code{:-)}.
16486 @end defmac
16488 @defmac AC_CYGWIN
16489 @acindex{CYGWIN}
16490 Check for the Cygwin environment in which case the shell variable
16491 @code{CYGWIN} is set to @samp{yes}.  Don't use this macro, the dignified
16492 means to check the nature of the host is using
16493 @code{AC_CANONICAL_HOST}.  As a matter of fact this macro is defined as:
16495 @example
16496 AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
16497 case $host_os in
16498   *cygwin* ) CYGWIN=yes;;
16499          * ) CYGWIN=no;;
16500 esac
16501 @end example
16503 Beware that the variable @code{CYGWIN} has a special meaning when
16504 running Cygwin, and should not be changed.  That's yet another reason
16505 not to use this macro.
16506 @end defmac
16508 @defmac AC_DECL_SYS_SIGLIST
16509 @acindex{DECL_SYS_SIGLIST}
16510 @cvindex SYS_SIGLIST_DECLARED
16511 Same as:
16513 @example
16514 AC_CHECK_DECLS([sys_siglist], [], [],
16515 [#include <signal.h>
16516 /* NetBSD declares sys_siglist in unistd.h.  */
16517 #ifdef HAVE_UNISTD_H
16518 # include <unistd.h>
16519 #endif
16521 @end example
16522 @end defmac
16524 @defmac AC_DECL_YYTEXT
16525 @acindex{DECL_YYTEXT}
16526 Does nothing, now integrated in @code{AC_PROG_LEX}.
16527 @end defmac
16529 @defmac AC_DIR_HEADER
16530 @acindex{DIR_HEADER}
16531 @cvindex DIRENT
16532 @cvindex SYSNDIR
16533 @cvindex SYSDIR
16534 @cvindex NDIR
16535 Like calling @code{AC_FUNC_CLOSEDIR_VOID} and@code{AC_HEADER_DIRENT},
16536 but defines a different set of C preprocessor macros to indicate which
16537 header file is found:
16539 @multitable {@file{sys/ndir.h}} {Old Symbol} {@code{HAVE_SYS_NDIR_H}}
16540 @item Header            @tab Old Symbol     @tab New Symbol
16541 @item @file{dirent.h}   @tab @code{DIRENT}  @tab @code{HAVE_DIRENT_H}
16542 @item @file{sys/ndir.h} @tab @code{SYSNDIR} @tab @code{HAVE_SYS_NDIR_H}
16543 @item @file{sys/dir.h}  @tab @code{SYSDIR}  @tab @code{HAVE_SYS_DIR_H}
16544 @item @file{ndir.h}     @tab @code{NDIR}    @tab @code{HAVE_NDIR_H}
16545 @end multitable
16546 @end defmac
16548 @defmac AC_DYNIX_SEQ
16549 @acindex{DYNIX_SEQ}
16550 If on DYNIX/ptx, add @option{-lseq} to output variable
16551 @code{LIBS}.  This macro used to be defined as
16553 @example
16554 AC_CHECK_LIB([seq], [getmntent], [LIBS="-lseq $LIBS"])
16555 @end example
16557 @noindent
16558 now it is just @code{AC_FUNC_GETMNTENT}.
16559 @end defmac
16561 @defmac AC_EXEEXT
16562 @acindex{EXEEXT}
16563 @ovindex EXEEXT
16564 Defined the output variable @code{EXEEXT} based on the output of the
16565 compiler, which is now done automatically.  Typically set to empty
16566 string if Posix and @samp{.exe} if a @acronym{DOS} variant.
16567 @end defmac
16569 @defmac AC_EMXOS2
16570 @acindex{EMXOS2}
16571 Similar to @code{AC_CYGWIN} but checks for the EMX environment on OS/2
16572 and sets @code{EMXOS2}.
16573 @end defmac
16575 @defmac AC_ERROR
16576 @acindex{ERROR}
16577 @code{AC_MSG_ERROR}
16578 @end defmac
16580 @defmac AC_FIND_X
16581 @acindex{FIND_X}
16582 @code{AC_PATH_X}
16583 @end defmac
16585 @defmac AC_FIND_XTRA
16586 @acindex{FIND_XTRA}
16587 @code{AC_PATH_XTRA}
16588 @end defmac
16590 @defmac AC_FOREACH
16591 @acindex{FOREACH}
16592 @code{m4_foreach_w}
16593 @end defmac
16595 @defmac AC_FUNC_CHECK
16596 @acindex{FUNC_CHECK}
16597 @code{AC_CHECK_FUNC}
16598 @end defmac
16600 @defmac AC_FUNC_SETVBUF_REVERSED
16601 @acindex{FUNC_SETVBUF_REVERSED}
16602 @cvindex SETVBUF_REVERSED
16603 @c @fuindex setvbuf
16604 @prindex @code{setvbuf}
16605 Do nothing.  Formerly, this macro checked whether @code{setvbuf} takes
16606 the buffering type as its second argument and the buffer pointer as the
16607 third, instead of the other way around, and defined
16608 @code{SETVBUF_REVERSED}.  However, the last systems to have the problem
16609 were those based on SVR2, which became obsolete in 1987, and the macro
16610 is no longer needed.
16611 @end defmac
16613 @defmac AC_FUNC_WAIT3
16614 @acindex{FUNC_WAIT3}
16615 @cvindex HAVE_WAIT3
16616 If @code{wait3} is found and fills in the contents of its third argument
16617 (a @samp{struct rusage *}), which @acronym{HP-UX} does not do, define
16618 @code{HAVE_WAIT3}.
16620 These days portable programs should use @code{waitpid}, not
16621 @code{wait3}, as @code{wait3} has been removed from Posix.
16622 @end defmac
16624 @defmac AC_GCC_TRADITIONAL
16625 @acindex{GCC_TRADITIONAL}
16626 @code{AC_PROG_GCC_TRADITIONAL}
16627 @end defmac
16629 @defmac AC_GETGROUPS_T
16630 @acindex{GETGROUPS_T}
16631 @code{AC_TYPE_GETGROUPS}
16632 @end defmac
16634 @defmac AC_GETLOADAVG
16635 @acindex{GETLOADAVG}
16636 @code{AC_FUNC_GETLOADAVG}
16637 @end defmac
16639 @defmac AC_HAVE_FUNCS
16640 @acindex{HAVE_FUNCS}
16641 @code{AC_CHECK_FUNCS}
16642 @end defmac
16644 @defmac AC_HAVE_HEADERS
16645 @acindex{HAVE_HEADERS}
16646 @code{AC_CHECK_HEADERS}
16647 @end defmac
16649 @defmac AC_HAVE_LIBRARY (@var{library}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
16650 @acindex{HAVE_LIBRARY}
16651 This macro is equivalent to calling @code{AC_CHECK_LIB} with a
16652 @var{function} argument of @code{main}.  In addition, @var{library} can
16653 be written as any of @samp{foo}, @option{-lfoo}, or @samp{libfoo.a}.  In
16654 all of those cases, the compiler is passed @option{-lfoo}.  However,
16655 @var{library} cannot be a shell variable; it must be a literal name.
16656 @end defmac
16658 @defmac AC_HAVE_POUNDBANG
16659 @acindex{HAVE_POUNDBANG}
16660 @code{AC_SYS_INTERPRETER} (different calling convention)
16661 @end defmac
16663 @defmac AC_HEADER_CHECK
16664 @acindex{HEADER_CHECK}
16665 @code{AC_CHECK_HEADER}
16666 @end defmac
16668 @defmac AC_HEADER_EGREP
16669 @acindex{HEADER_EGREP}
16670 @code{AC_EGREP_HEADER}
16671 @end defmac
16673 @defmac AC_HELP_STRING
16674 @acindex{HELP_STRING}
16675 @code{AS_HELP_STRING}
16676 @end defmac
16678 @defmac AC_INIT (@var{unique-file-in-source-dir})
16679 @acindex{INIT}
16680 Formerly @code{AC_INIT} used to have a single argument, and was
16681 equivalent to:
16683 @example
16684 AC_INIT
16685 AC_CONFIG_SRCDIR(@var{unique-file-in-source-dir})
16686 @end example
16687 @end defmac
16689 @defmac AC_INLINE
16690 @acindex{INLINE}
16691 @code{AC_C_INLINE}
16692 @end defmac
16694 @defmac AC_INT_16_BITS
16695 @acindex{INT_16_BITS}
16696 @cvindex INT_16_BITS
16697 If the C type @code{int} is 16 bits wide, define @code{INT_16_BITS}.
16698 Use @samp{AC_CHECK_SIZEOF(int)} instead.
16699 @end defmac
16701 @defmac AC_IRIX_SUN
16702 @acindex{IRIX_SUN}
16703 If on @sc{irix} (Silicon Graphics Unix), add @option{-lsun} to output
16704 @code{LIBS}.  If you were using it to get @code{getmntent}, use
16705 @code{AC_FUNC_GETMNTENT} instead.  If you used it for the NIS versions
16706 of the password and group functions, use @samp{AC_CHECK_LIB(sun,
16707 getpwnam)}.  Up to Autoconf 2.13, it used to be
16709 @example
16710 AC_CHECK_LIB([sun], [getmntent], [LIBS="-lsun $LIBS"])
16711 @end example
16713 @noindent
16714 now it is defined as
16716 @example
16717 AC_FUNC_GETMNTENT
16718 AC_CHECK_LIB([sun], [getpwnam])
16719 @end example
16720 @end defmac
16722 @defmac AC_LANG_C
16723 @acindex{LANG_C}
16724 Same as @samp{AC_LANG([C])}.
16725 @end defmac
16727 @defmac AC_LANG_CPLUSPLUS
16728 @acindex{LANG_CPLUSPLUS}
16729 Same as @samp{AC_LANG([C++])}.
16730 @end defmac
16732 @defmac AC_LANG_FORTRAN77
16733 @acindex{LANG_FORTRAN77}
16734 Same as @samp{AC_LANG([Fortran 77])}.
16735 @end defmac
16737 @defmac AC_LANG_RESTORE
16738 @acindex{LANG_RESTORE}
16739 Select the @var{language} that is saved on the top of the stack, as set
16740 by @code{AC_LANG_SAVE}, remove it from the stack, and call
16741 @code{AC_LANG(@var{language})}.
16742 @end defmac
16744 @defmac AC_LANG_SAVE
16745 @acindex{LANG_SAVE}
16746 Remember the current language (as set by @code{AC_LANG}) on a stack.
16747 The current language does not change.  @code{AC_LANG_PUSH} is preferred.
16748 @end defmac
16750 @defmac AC_LINK_FILES (@var{source}@dots{}, @var{dest}@dots{})
16751 @acindex{LINK_FILES}
16752 This is an obsolete version of @code{AC_CONFIG_LINKS}.  An updated
16753 version of:
16755 @example
16756 AC_LINK_FILES(config/$machine.h config/$obj_format.h,
16757               host.h            object.h)
16758 @end example
16760 @noindent
16763 @example
16764 AC_CONFIG_LINKS([host.h:config/$machine.h
16765                 object.h:config/$obj_format.h])
16766 @end example
16767 @end defmac
16769 @defmac AC_LN_S
16770 @acindex{LN_S}
16771 @code{AC_PROG_LN_S}
16772 @end defmac
16774 @defmac AC_LONG_64_BITS
16775 @acindex{LONG_64_BITS}
16776 @cvindex LONG_64_BITS
16777 Define @code{LONG_64_BITS} if the C type @code{long int} is 64 bits wide.
16778 Use the generic macro @samp{AC_CHECK_SIZEOF([long int])} instead.
16779 @end defmac
16781 @defmac AC_LONG_DOUBLE
16782 @acindex{LONG_DOUBLE}
16783 If the C compiler supports a working @code{long double} type with more
16784 range or precision than the @code{double} type, define
16785 @code{HAVE_LONG_DOUBLE}.
16787 You should use @code{AC_TYPE_LONG_DOUBLE} or
16788 @code{AC_TYPE_LONG_DOUBLE_WIDER} instead.  @xref{Particular Types}.
16789 @end defmac
16791 @defmac AC_LONG_FILE_NAMES
16792 @acindex{LONG_FILE_NAMES}
16793 @code{AC_SYS_LONG_FILE_NAMES}
16794 @end defmac
16796 @defmac AC_MAJOR_HEADER
16797 @acindex{MAJOR_HEADER}
16798 @code{AC_HEADER_MAJOR}
16799 @end defmac
16801 @defmac AC_MEMORY_H
16802 @acindex{MEMORY_H}
16803 @cvindex NEED_MEMORY_H
16804 Used to define @code{NEED_MEMORY_H} if the @code{mem} functions were
16805 defined in @file{memory.h}.  Today it is equivalent to
16806 @samp{AC_CHECK_HEADERS([memory.h])}.  Adjust your code to depend upon
16807 @code{HAVE_MEMORY_H}, not @code{NEED_MEMORY_H}; see @ref{Standard
16808 Symbols}.
16809 @end defmac
16811 @defmac AC_MINGW32
16812 @acindex{MINGW32}
16813 Similar to @code{AC_CYGWIN} but checks for the MinGW compiler
16814 environment and sets @code{MINGW32}.
16815 @end defmac
16817 @defmac AC_MINUS_C_MINUS_O
16818 @acindex{MINUS_C_MINUS_O}
16819 @code{AC_PROG_CC_C_O}
16820 @end defmac
16822 @defmac AC_MMAP
16823 @acindex{MMAP}
16824 @code{AC_FUNC_MMAP}
16825 @end defmac
16827 @defmac AC_MODE_T
16828 @acindex{MODE_T}
16829 @code{AC_TYPE_MODE_T}
16830 @end defmac
16832 @defmac AC_OBJEXT
16833 @acindex{OBJEXT}
16834 @ovindex OBJEXT
16835 Defined the output variable @code{OBJEXT} based on the output of the
16836 compiler, after .c files have been excluded.  Typically set to @samp{o}
16837 if Posix, @samp{obj} if a @acronym{DOS} variant.
16838 Now the compiler checking macros handle
16839 this automatically.
16840 @end defmac
16842 @defmac AC_OBSOLETE (@var{this-macro-name}, @ovar{suggestion})
16843 @acindex{OBSOLETE}
16844 Make M4 print a message to the standard error output warning that
16845 @var{this-macro-name} is obsolete, and giving the file and line number
16846 where it was called.  @var{this-macro-name} should be the name of the
16847 macro that is calling @code{AC_OBSOLETE}.  If @var{suggestion} is given,
16848 it is printed at the end of the warning message; for example, it can be
16849 a suggestion for what to use instead of @var{this-macro-name}.
16851 For instance
16853 @example
16854 AC_OBSOLETE([$0], [; use AC_CHECK_HEADERS(unistd.h) instead])dnl
16855 @end example
16857 You are encouraged to use @code{AU_DEFUN} instead, since it gives better
16858 services to the user.
16859 @end defmac
16861 @defmac AC_OFF_T
16862 @acindex{OFF_T}
16863 @code{AC_TYPE_OFF_T}
16864 @end defmac
16866 @defmac AC_OUTPUT (@ovar{file}@dots{}, @ovar{extra-cmds}, @ovar{init-cmds})
16867 @acindex{OUTPUT}
16868 The use of @code{AC_OUTPUT} with argument is deprecated.  This obsoleted
16869 interface is equivalent to:
16871 @example
16872 @group
16873 AC_CONFIG_FILES(@var{file}@dots{})
16874 AC_CONFIG_COMMANDS([default],
16875                    @var{extra-cmds}, @var{init-cmds})
16876 AC_OUTPUT
16877 @end group
16878 @end example
16879 @end defmac
16881 @defmac AC_OUTPUT_COMMANDS (@var{extra-cmds}, @ovar{init-cmds})
16882 @acindex{OUTPUT_COMMANDS}
16883 Specify additional shell commands to run at the end of
16884 @file{config.status}, and shell commands to initialize any variables
16885 from @command{configure}.  This macro may be called multiple times.  It is
16886 obsolete, replaced by @code{AC_CONFIG_COMMANDS}.
16888 Here is an unrealistic example:
16890 @example
16891 fubar=27
16892 AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.],
16893                    [fubar=$fubar])
16894 AC_OUTPUT_COMMANDS([echo this is another, extra, bit],
16895                    [echo init bit])
16896 @end example
16898 Aside from the fact that @code{AC_CONFIG_COMMANDS} requires an
16899 additional key, an important difference is that
16900 @code{AC_OUTPUT_COMMANDS} is quoting its arguments twice, unlike
16901 @code{AC_CONFIG_COMMANDS}.  This means that @code{AC_CONFIG_COMMANDS}
16902 can safely be given macro calls as arguments:
16904 @example
16905 AC_CONFIG_COMMANDS(foo, [my_FOO()])
16906 @end example
16908 @noindent
16909 Conversely, where one level of quoting was enough for literal strings
16910 with @code{AC_OUTPUT_COMMANDS}, you need two with
16911 @code{AC_CONFIG_COMMANDS}.  The following lines are equivalent:
16913 @example
16914 @group
16915 AC_OUTPUT_COMMANDS([echo "Square brackets: []"])
16916 AC_CONFIG_COMMANDS([default], [[echo "Square brackets: []"]])
16917 @end group
16918 @end example
16919 @end defmac
16921 @defmac AC_PID_T
16922 @acindex{PID_T}
16923 @code{AC_TYPE_PID_T}
16924 @end defmac
16926 @defmac AC_PREFIX
16927 @acindex{PREFIX}
16928 @code{AC_PREFIX_PROGRAM}
16929 @end defmac
16931 @defmac AC_PROGRAMS_CHECK
16932 @acindex{PROGRAMS_CHECK}
16933 @code{AC_CHECK_PROGS}
16934 @end defmac
16936 @defmac AC_PROGRAMS_PATH
16937 @acindex{PROGRAMS_PATH}
16938 @code{AC_PATH_PROGS}
16939 @end defmac
16941 @defmac AC_PROGRAM_CHECK
16942 @acindex{PROGRAM_CHECK}
16943 @code{AC_CHECK_PROG}
16944 @end defmac
16946 @defmac AC_PROGRAM_EGREP
16947 @acindex{PROGRAM_EGREP}
16948 @code{AC_EGREP_CPP}
16949 @end defmac
16951 @defmac AC_PROGRAM_PATH
16952 @acindex{PROGRAM_PATH}
16953 @code{AC_PATH_PROG}
16954 @end defmac
16956 @defmac AC_REMOTE_TAPE
16957 @acindex{REMOTE_TAPE}
16958 removed because of limited usefulness
16959 @end defmac
16961 @defmac AC_RESTARTABLE_SYSCALLS
16962 @acindex{RESTARTABLE_SYSCALLS}
16963 @code{AC_SYS_RESTARTABLE_SYSCALLS}
16964 @end defmac
16966 @defmac AC_RETSIGTYPE
16967 @acindex{RETSIGTYPE}
16968 @code{AC_TYPE_SIGNAL}
16969 @end defmac
16971 @defmac AC_RSH
16972 @acindex{RSH}
16973 removed because of limited usefulness
16974 @end defmac
16976 @defmac AC_SCO_INTL
16977 @acindex{SCO_INTL}
16978 @ovindex LIBS
16979 If on SCO Unix, add @option{-lintl} to output variable @code{LIBS}.  This
16980 macro used to do this:
16982 @example
16983 AC_CHECK_LIB([intl], [strftime], [LIBS="-lintl $LIBS"])
16984 @end example
16986 @noindent
16987 Now it just calls @code{AC_FUNC_STRFTIME} instead.
16988 @end defmac
16990 @defmac AC_SETVBUF_REVERSED
16991 @acindex{SETVBUF_REVERSED}
16992 @code{AC_FUNC_SETVBUF_REVERSED}
16993 @end defmac
16995 @defmac AC_SET_MAKE
16996 @acindex{SET_MAKE}
16997 @code{AC_PROG_MAKE_SET}
16998 @end defmac
17000 @defmac AC_SIZEOF_TYPE
17001 @acindex{SIZEOF_TYPE}
17002 @code{AC_CHECK_SIZEOF}
17003 @end defmac
17005 @defmac AC_SIZE_T
17006 @acindex{SIZE_T}
17007 @code{AC_TYPE_SIZE_T}
17008 @end defmac
17010 @defmac AC_STAT_MACROS_BROKEN
17011 @acindex{STAT_MACROS_BROKEN}
17012 @code{AC_HEADER_STAT}
17013 @end defmac
17015 @defmac AC_STDC_HEADERS
17016 @acindex{STDC_HEADERS}
17017 @code{AC_HEADER_STDC}
17018 @end defmac
17020 @defmac AC_STRCOLL
17021 @acindex{STRCOLL}
17022 @code{AC_FUNC_STRCOLL}
17023 @end defmac
17025 @defmac AC_ST_BLKSIZE
17026 @acindex{ST_BLKSIZE}
17027 @code{AC_CHECK_MEMBERS}
17028 @end defmac
17030 @defmac AC_ST_BLOCKS
17031 @acindex{ST_BLOCKS}
17032 @code{AC_STRUCT_ST_BLOCKS}
17033 @end defmac
17035 @defmac AC_ST_RDEV
17036 @acindex{ST_RDEV}
17037 @code{AC_CHECK_MEMBERS}
17038 @end defmac
17040 @defmac AC_SYS_RESTARTABLE_SYSCALLS
17041 @acindex{SYS_RESTARTABLE_SYSCALLS}
17042 @cvindex HAVE_RESTARTABLE_SYSCALLS
17043 If the system automatically restarts a system call that is interrupted
17044 by a signal, define @code{HAVE_RESTARTABLE_SYSCALLS}.  This macro does
17045 not check whether system calls are restarted in general---it checks whether a
17046 signal handler installed with @code{signal} (but not @code{sigaction})
17047 causes system calls to be restarted.  It does not check whether system calls
17048 can be restarted when interrupted by signals that have no handler.
17050 These days portable programs should use @code{sigaction} with
17051 @code{SA_RESTART} if they want restartable system calls.  They should
17052 not rely on @code{HAVE_RESTARTABLE_SYSCALLS}, since nowadays whether a
17053 system call is restartable is a dynamic issue, not a configuration-time
17054 issue.
17055 @end defmac
17057 @defmac AC_SYS_SIGLIST_DECLARED
17058 @acindex{SYS_SIGLIST_DECLARED}
17059 @code{AC_DECL_SYS_SIGLIST}
17060 @end defmac
17062 @defmac AC_TEST_CPP
17063 @acindex{TEST_CPP}
17064 @code{AC_TRY_CPP}, replaced by @code{AC_PREPROC_IFELSE}.
17065 @end defmac
17067 @defmac AC_TEST_PROGRAM
17068 @acindex{TEST_PROGRAM}
17069 @code{AC_TRY_RUN}, replaced by @code{AC_RUN_IFELSE}.
17070 @end defmac
17072 @defmac AC_TIMEZONE
17073 @acindex{TIMEZONE}
17074 @code{AC_STRUCT_TIMEZONE}
17075 @end defmac
17077 @defmac AC_TIME_WITH_SYS_TIME
17078 @acindex{TIME_WITH_SYS_TIME}
17079 @code{AC_HEADER_TIME}
17080 @end defmac
17082 @defmac AC_TRY_COMPILE (@var{includes}, @var{function-body}, @ovar{action-if-true}, @ovar{action-if-false})
17083 @acindex{TRY_COMPILE}
17084 Same as:
17086 @example
17087 AC_COMPILE_IFELSE(
17088   [AC_LANG_PROGRAM([[@var{includes}]],
17089      [[@var{function-body}]])],
17090   [@var{action-if-true}],
17091   [@var{action-if-false}])
17092 @end example
17094 @noindent
17095 @xref{Running the Compiler}.
17097 This macro double quotes both @var{includes} and @var{function-body}.
17099 For C and C++, @var{includes} is any @code{#include} statements needed
17100 by the code in @var{function-body} (@var{includes} is ignored if
17101 the currently selected language is Fortran or Fortran 77).  The compiler
17102 and compilation flags are determined by the current language
17103 (@pxref{Language Choice}).
17104 @end defmac
17106 @defmac AC_TRY_CPP (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
17107 @acindex{TRY_CPP}
17108 Same as:
17110 @example
17111 AC_PREPROC_IFELSE(
17112   [AC_LANG_SOURCE([[@var{input}]])],
17113   [@var{action-if-true}],
17114   [@var{action-if-false}])
17115 @end example
17117 @noindent
17118 @xref{Running the Preprocessor}.
17120 This macro double quotes the @var{input}.
17121 @end defmac
17123 @defmac AC_TRY_LINK (@var{includes}, @var{function-body}, @ovar{action-if-true}, @ovar{action-if-false})
17124 @acindex{TRY_LINK}
17125 Same as:
17127 @example
17128 AC_LINK_IFELSE(
17129   [AC_LANG_PROGRAM([[@var{includes}]],
17130      [[@var{function-body}]])],
17131   [@var{action-if-true}],
17132   [@var{action-if-false}])
17133 @end example
17135 @noindent
17136 @xref{Running the Compiler}.
17138 This macro double quotes both @var{includes} and @var{function-body}.
17140 Depending on the current language (@pxref{Language Choice}), create a
17141 test program to see whether a function whose body consists of
17142 @var{function-body} can be compiled and linked.  If the file compiles
17143 and links successfully, run shell commands @var{action-if-found},
17144 otherwise run @var{action-if-not-found}.
17146 This macro double quotes both @var{includes} and @var{function-body}.
17148 For C and C++, @var{includes} is any @code{#include} statements needed
17149 by the code in @var{function-body} (@var{includes} is ignored if
17150 the currently selected language is Fortran or Fortran 77).  The compiler
17151 and compilation flags are determined by the current language
17152 (@pxref{Language Choice}), and in addition @code{LDFLAGS} and
17153 @code{LIBS} are used for linking.
17154 @end defmac
17156 @defmac AC_TRY_LINK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
17157 @acindex{TRY_LINK_FUNC}
17158 This macro is equivalent to
17159 @samp{AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])],
17160 [@var{action-if-found}], [@var{action-if-not-found}])}.
17161 @end defmac
17163 @defmac AC_TRY_RUN (@var{program}, @ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-cross-compiling})
17164 @acindex{TRY_RUN}
17165 Same as:
17167 @example
17168 AC_RUN_IFELSE(
17169   [AC_LANG_SOURCE([[@var{program}]])],
17170   [@var{action-if-true}],
17171   [@var{action-if-false}],
17172   [@var{action-if-cross-compiling}])
17173 @end example
17175 @noindent
17176 @xref{Runtime}.
17177 @end defmac
17179 @defmac AC_UID_T
17180 @acindex{UID_T}
17181 @code{AC_TYPE_UID_T}
17182 @end defmac
17184 @defmac AC_UNISTD_H
17185 @acindex{UNISTD_H}
17186 Same as @samp{AC_CHECK_HEADERS([unistd.h])}.
17187 @end defmac
17189 @defmac AC_USG
17190 @acindex{USG}
17191 @cvindex USG
17192 Define @code{USG} if the @acronym{BSD} string functions are defined in
17193 @file{strings.h}.  You should no longer depend upon @code{USG}, but on
17194 @code{HAVE_STRING_H}; see @ref{Standard Symbols}.
17195 @end defmac
17197 @defmac AC_UTIME_NULL
17198 @acindex{UTIME_NULL}
17199 @code{AC_FUNC_UTIME_NULL}
17200 @end defmac
17202 @defmac AC_VALIDATE_CACHED_SYSTEM_TUPLE (@ovar{cmd})
17203 @acindex{VALIDATE_CACHED_SYSTEM_TUPLE}
17204 If the cache file is inconsistent with the current host, target and
17205 build system types, it used to execute @var{cmd} or print a default
17206 error message.  This is now handled by default.
17207 @end defmac
17209 @defmac AC_VERBOSE (@var{result-description})
17210 @acindex{VERBOSE}
17211 @code{AC_MSG_RESULT}.
17212 @end defmac
17214 @defmac AC_VFORK
17215 @acindex{VFORK}
17216 @code{AC_FUNC_VFORK}
17217 @end defmac
17219 @defmac AC_VPRINTF
17220 @acindex{VPRINTF}
17221 @code{AC_FUNC_VPRINTF}
17222 @end defmac
17224 @defmac AC_WAIT3
17225 @acindex{WAIT3}
17226 @code{AC_FUNC_WAIT3}
17227 @end defmac
17229 @defmac AC_WARN
17230 @acindex{WARN}
17231 @code{AC_MSG_WARN}
17232 @end defmac
17234 @defmac AC_WORDS_BIGENDIAN
17235 @acindex{WORDS_BIGENDIAN}
17236 @code{AC_C_BIGENDIAN}
17237 @end defmac
17239 @defmac AC_XENIX_DIR
17240 @acindex{XENIX_DIR}
17241 @ovindex LIBS
17242 This macro used to add @option{-lx} to output variable @code{LIBS} if on
17243 Xenix.  Also, if @file{dirent.h} is being checked for, added
17244 @option{-ldir} to @code{LIBS}.  Now it is merely an alias of
17245 @code{AC_HEADER_DIRENT} instead, plus some code to detect whether
17246 running @sc{xenix} on which you should not depend:
17248 @example
17249 AC_MSG_CHECKING([for Xenix])
17250 AC_EGREP_CPP([yes],
17251 [#if defined M_XENIX && !defined M_UNIX
17252   yes
17253 #endif],
17254              [AC_MSG_RESULT([yes]); XENIX=yes],
17255              [AC_MSG_RESULT([no]); XENIX=])
17256 @end example
17257 @end defmac
17259 @defmac AC_YYTEXT_POINTER
17260 @acindex{YYTEXT_POINTER}
17261 @code{AC_DECL_YYTEXT}
17262 @end defmac
17264 @node Autoconf 1
17265 @section Upgrading From Version 1
17266 @cindex Upgrading autoconf
17267 @cindex Autoconf upgrading
17269 Autoconf version 2 is mostly backward compatible with version 1.
17270 However, it introduces better ways to do some things, and doesn't
17271 support some of the ugly things in version 1.  So, depending on how
17272 sophisticated your @file{configure.ac} files are, you might have to do
17273 some manual work in order to upgrade to version 2.  This chapter points
17274 out some problems to watch for when upgrading.  Also, perhaps your
17275 @command{configure} scripts could benefit from some of the new features in
17276 version 2; the changes are summarized in the file @file{NEWS} in the
17277 Autoconf distribution.
17279 @menu
17280 * Changed File Names::          Files you might rename
17281 * Changed Makefiles::           New things to put in @file{Makefile.in}
17282 * Changed Macros::              Macro calls you might replace
17283 * Changed Results::             Changes in how to check test results
17284 * Changed Macro Writing::       Better ways to write your own macros
17285 @end menu
17287 @node Changed File Names
17288 @subsection Changed File Names
17290 If you have an @file{aclocal.m4} installed with Autoconf (as opposed to
17291 in a particular package's source directory), you must rename it to
17292 @file{acsite.m4}.  @xref{autoconf Invocation}.
17294 If you distribute @file{install.sh} with your package, rename it to
17295 @file{install-sh} so @code{make} builtin rules don't inadvertently
17296 create a file called @file{install} from it.  @code{AC_PROG_INSTALL}
17297 looks for the script under both names, but it is best to use the new name.
17299 If you were using @file{config.h.top}, @file{config.h.bot}, or
17300 @file{acconfig.h}, you still can, but you have less clutter if you
17301 use the @code{AH_} macros.  @xref{Autoheader Macros}.
17303 @node Changed Makefiles
17304 @subsection Changed Makefiles
17306 Add @samp{@@CFLAGS@@}, @samp{@@CPPFLAGS@@}, and @samp{@@LDFLAGS@@} in
17307 your @file{Makefile.in} files, so they can take advantage of the values
17308 of those variables in the environment when @command{configure} is run.
17309 Doing this isn't necessary, but it's a convenience for users.
17311 Also add @samp{@@configure_input@@} in a comment to each input file for
17312 @code{AC_OUTPUT}, so that the output files contain a comment saying
17313 they were produced by @command{configure}.  Automatically selecting the
17314 right comment syntax for all the kinds of files that people call
17315 @code{AC_OUTPUT} on became too much work.
17317 Add @file{config.log} and @file{config.cache} to the list of files you
17318 remove in @code{distclean} targets.
17320 If you have the following in @file{Makefile.in}:
17322 @example
17323 prefix = /usr/local
17324 exec_prefix = $(prefix)
17325 @end example
17327 @noindent
17328 you must change it to:
17330 @example
17331 prefix = @@prefix@@
17332 exec_prefix = @@exec_prefix@@
17333 @end example
17335 @noindent
17336 The old behavior of replacing those variables without @samp{@@}
17337 characters around them has been removed.
17339 @node Changed Macros
17340 @subsection Changed Macros
17342 Many of the macros were renamed in Autoconf version 2.  You can still
17343 use the old names, but the new ones are clearer, and it's easier to find
17344 the documentation for them.  @xref{Obsolete Macros}, for a table showing the
17345 new names for the old macros.  Use the @command{autoupdate} program to
17346 convert your @file{configure.ac} to using the new macro names.
17347 @xref{autoupdate Invocation}.
17349 Some macros have been superseded by similar ones that do the job better,
17350 but are not call-compatible.  If you get warnings about calling obsolete
17351 macros while running @command{autoconf}, you may safely ignore them, but
17352 your @command{configure} script generally works better if you follow
17353 the advice that is printed about what to replace the obsolete macros with.  In
17354 particular, the mechanism for reporting the results of tests has
17355 changed.  If you were using @command{echo} or @code{AC_VERBOSE} (perhaps
17356 via @code{AC_COMPILE_CHECK}), your @command{configure} script's output
17357 looks better if you switch to @code{AC_MSG_CHECKING} and
17358 @code{AC_MSG_RESULT}.  @xref{Printing Messages}.  Those macros work best
17359 in conjunction with cache variables.  @xref{Caching Results}.
17363 @node Changed Results
17364 @subsection Changed Results
17366 If you were checking the results of previous tests by examining the
17367 shell variable @code{DEFS}, you need to switch to checking the values of
17368 the cache variables for those tests.  @code{DEFS} no longer exists while
17369 @command{configure} is running; it is only created when generating output
17370 files.  This difference from version 1 is because properly quoting the
17371 contents of that variable turned out to be too cumbersome and
17372 inefficient to do every time @code{AC_DEFINE} is called.  @xref{Cache
17373 Variable Names}.
17375 For example, here is a @file{configure.ac} fragment written for Autoconf
17376 version 1:
17378 @example
17379 AC_HAVE_FUNCS(syslog)
17380 case "$DEFS" in
17381 *-DHAVE_SYSLOG*) ;;
17382 *) # syslog is not in the default libraries.  See if it's in some other.
17383   saved_LIBS="$LIBS"
17384   for lib in bsd socket inet; do
17385     AC_CHECKING(for syslog in -l$lib)
17386     LIBS="-l$lib $saved_LIBS"
17387     AC_HAVE_FUNCS(syslog)
17388     case "$DEFS" in
17389     *-DHAVE_SYSLOG*) break ;;
17390     *) ;;
17391     esac
17392     LIBS="$saved_LIBS"
17393   done ;;
17394 esac
17395 @end example
17397 Here is a way to write it for version 2:
17399 @example
17400 AC_CHECK_FUNCS([syslog])
17401 if test $ac_cv_func_syslog = no; then
17402   # syslog is not in the default libraries.  See if it's in some other.
17403   for lib in bsd socket inet; do
17404     AC_CHECK_LIB([$lib], [syslog], [AC_DEFINE([HAVE_SYSLOG])
17405       LIBS="-l$lib $LIBS"; break])
17406   done
17408 @end example
17410 If you were working around bugs in @code{AC_DEFINE_UNQUOTED} by adding
17411 backslashes before quotes, you need to remove them.  It now works
17412 predictably, and does not treat quotes (except back quotes) specially.
17413 @xref{Setting Output Variables}.
17415 All of the Boolean shell variables set by Autoconf macros now use
17416 @samp{yes} for the true value.  Most of them use @samp{no} for false,
17417 though for backward compatibility some use the empty string instead.  If
17418 you were relying on a shell variable being set to something like 1 or
17419 @samp{t} for true, you need to change your tests.
17421 @node Changed Macro Writing
17422 @subsection Changed Macro Writing
17424 When defining your own macros, you should now use @code{AC_DEFUN}
17425 instead of @code{define}.  @code{AC_DEFUN} automatically calls
17426 @code{AC_PROVIDE} and ensures that macros called via @code{AC_REQUIRE}
17427 do not interrupt other macros, to prevent nested @samp{checking@dots{}}
17428 messages on the screen.  There's no actual harm in continuing to use the
17429 older way, but it's less convenient and attractive.  @xref{Macro
17430 Definitions}.
17432 You probably looked at the macros that came with Autoconf as a guide for
17433 how to do things.  It would be a good idea to take a look at the new
17434 versions of them, as the style is somewhat improved and they take
17435 advantage of some new features.
17437 If you were doing tricky things with undocumented Autoconf internals
17438 (macros, variables, diversions), check whether you need to change
17439 anything to account for changes that have been made.  Perhaps you can
17440 even use an officially supported technique in version 2 instead of
17441 kludging.  Or perhaps not.
17443 To speed up your locally written feature tests, add caching to them.
17444 See whether any of your tests are of general enough usefulness to
17445 encapsulate them into macros that you can share.
17448 @node Autoconf 2.13
17449 @section Upgrading From Version 2.13
17450 @cindex Upgrading autoconf
17451 @cindex Autoconf upgrading
17453 The introduction of the previous section (@pxref{Autoconf 1}) perfectly
17454 suits this section@enddots{}
17456 @quotation
17457 Autoconf version 2.50 is mostly backward compatible with version 2.13.
17458 However, it introduces better ways to do some things, and doesn't
17459 support some of the ugly things in version 2.13.  So, depending on how
17460 sophisticated your @file{configure.ac} files are, you might have to do
17461 some manual work in order to upgrade to version 2.50.  This chapter
17462 points out some problems to watch for when upgrading.  Also, perhaps
17463 your @command{configure} scripts could benefit from some of the new
17464 features in version 2.50; the changes are summarized in the file
17465 @file{NEWS} in the Autoconf distribution.
17466 @end quotation
17468 @menu
17469 * Changed Quotation::           Broken code which used to work
17470 * New Macros::                  Interaction with foreign macros
17471 * Hosts and Cross-Compilation::  Bugward compatibility kludges
17472 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
17473 * AC_FOO_IFELSE vs AC_TRY_FOO::  A more generic scheme for testing sources
17474 @end menu
17476 @node Changed Quotation
17477 @subsection Changed Quotation
17479 The most important changes are invisible to you: the implementation of
17480 most macros have completely changed.  This allowed more factorization of
17481 the code, better error messages, a higher uniformity of the user's
17482 interface etc.  Unfortunately, as a side effect, some construct which
17483 used to (miraculously) work might break starting with Autoconf 2.50.
17484 The most common culprit is bad quotation.
17486 For instance, in the following example, the message is not properly
17487 quoted:
17489 @example
17490 AC_INIT
17491 AC_CHECK_HEADERS(foo.h, ,
17492   AC_MSG_ERROR(cannot find foo.h, bailing out))
17493 AC_OUTPUT
17494 @end example
17496 @noindent
17497 Autoconf 2.13 simply ignores it:
17499 @example
17500 $ @kbd{autoconf-2.13; ./configure --silent}
17501 creating cache ./config.cache
17502 configure: error: cannot find foo.h
17504 @end example
17506 @noindent
17507 while Autoconf 2.50 produces a broken @file{configure}:
17509 @example
17510 $ @kbd{autoconf-2.50; ./configure --silent}
17511 configure: error: cannot find foo.h
17512 ./configure: exit: bad non-numeric arg `bailing'
17513 ./configure: exit: bad non-numeric arg `bailing'
17515 @end example
17517 The message needs to be quoted, and the @code{AC_MSG_ERROR} invocation
17518 too!
17520 @example
17521 AC_INIT([Example], [1.0], [bug-example@@example.org])
17522 AC_CHECK_HEADERS([foo.h], [],
17523   [AC_MSG_ERROR([cannot find foo.h, bailing out])])
17524 AC_OUTPUT
17525 @end example
17527 Many many (and many more) Autoconf macros were lacking proper quotation,
17528 including no less than@dots{} @code{AC_DEFUN} itself!
17530 @example
17531 $ @kbd{cat configure.in}
17532 AC_DEFUN([AC_PROG_INSTALL],
17533 [# My own much better version
17535 AC_INIT
17536 AC_PROG_INSTALL
17537 AC_OUTPUT
17538 $ @kbd{autoconf-2.13}
17539 autoconf: Undefined macros:
17540 ***BUG in Autoconf--please report*** AC_FD_MSG
17541 ***BUG in Autoconf--please report*** AC_EPI
17542 configure.in:1:AC_DEFUN([AC_PROG_INSTALL],
17543 configure.in:5:AC_PROG_INSTALL
17544 $ @kbd{autoconf-2.50}
17546 @end example
17549 @node New Macros
17550 @subsection New Macros
17552 @cindex undefined macro
17553 @cindex @code{_m4_divert_diversion}
17555 While Autoconf was relatively dormant in the late 1990s, Automake
17556 provided Autoconf-like macros for a while.  Starting with Autoconf 2.50
17557 in 2001, Autoconf provided
17558 versions of these macros, integrated in the @code{AC_} namespace,
17559 instead of @code{AM_}.  But in order to ease the upgrading via
17560 @command{autoupdate}, bindings to such @code{AM_} macros are provided.
17562 Unfortunately older versions of Automake (e.g., Automake 1.4)
17563 did not quote the names of these macros.
17564 Therefore, when @command{m4} finds something like
17565 @samp{AC_DEFUN(AM_TYPE_PTRDIFF_T, @dots{})} in @file{aclocal.m4},
17566 @code{AM_TYPE_PTRDIFF_T} is
17567 expanded, replaced with its Autoconf definition.
17569 Fortunately Autoconf catches pre-@code{AC_INIT} expansions, and
17570 complains, in its own words:
17572 @example
17573 $ @kbd{cat configure.ac}
17574 AC_INIT([Example], [1.0], [bug-example@@example.org])
17575 AM_TYPE_PTRDIFF_T
17576 $ @kbd{aclocal-1.4}
17577 $ @kbd{autoconf}
17578 aclocal.m4:17: error: m4_defn: undefined macro: _m4_divert_diversion
17579 aclocal.m4:17: the top level
17580 autom4te: m4 failed with exit status: 1
17582 @end example
17584 Modern versions of Automake no longer define most of these
17585 macros, and properly quote the names of the remaining macros.
17586 If you must use an old Automake, do not depend upon macros from Automake
17587 as it is simply not its job
17588 to provide macros (but the one it requires itself):
17590 @example
17591 $ @kbd{cat configure.ac}
17592 AC_INIT([Example], [1.0], [bug-example@@example.org])
17593 AM_TYPE_PTRDIFF_T
17594 $ @kbd{rm aclocal.m4}
17595 $ @kbd{autoupdate}
17596 autoupdate: `configure.ac' is updated
17597 $ @kbd{cat configure.ac}
17598 AC_INIT([Example], [1.0], [bug-example@@example.org])
17599 AC_CHECK_TYPES([ptrdiff_t])
17600 $ @kbd{aclocal-1.4}
17601 $ @kbd{autoconf}
17603 @end example
17606 @node Hosts and Cross-Compilation
17607 @subsection Hosts and Cross-Compilation
17608 @cindex Cross compilation
17610 Based on the experience of compiler writers, and after long public
17611 debates, many aspects of the cross-compilation chain have changed:
17613 @itemize @minus
17614 @item
17615 the relationship between the build, host, and target architecture types,
17617 @item
17618 the command line interface for specifying them to @command{configure},
17620 @item
17621 the variables defined in @command{configure},
17623 @item
17624 the enabling of cross-compilation mode.
17625 @end itemize
17627 @sp 1
17629 The relationship between build, host, and target have been cleaned up:
17630 the chain of default is now simply: target defaults to host, host to
17631 build, and build to the result of @command{config.guess}.  Nevertheless,
17632 in order to ease the transition from 2.13 to 2.50, the following
17633 transition scheme is implemented.  @emph{Do not rely on it}, as it will
17634 be completely disabled in a couple of releases (we cannot keep it, as it
17635 proves to cause more problems than it cures).
17637 They all default to the result of running @command{config.guess}, unless
17638 you specify either @option{--build} or @option{--host}.  In this case,
17639 the default becomes the system type you specified.  If you specify both,
17640 and they're different, @command{configure} enters cross compilation
17641 mode, so it doesn't run any tests that require execution.
17643 Hint: if you mean to override the result of @command{config.guess},
17644 prefer @option{--build} over @option{--host}.  In the future,
17645 @option{--host} will not override the name of the build system type.
17646 Whenever you specify @option{--host}, be sure to specify @option{--build}
17647 too.
17649 @sp 1
17651 For backward compatibility, @command{configure} accepts a system
17652 type as an option by itself.  Such an option overrides the
17653 defaults for build, host, and target system types.  The following
17654 configure statement configures a cross toolchain that runs on
17655 Net@acronym{BSD}/alpha but generates code for @acronym{GNU} Hurd/sparc,
17656 which is also the build platform.
17658 @example
17659 ./configure --host=alpha-netbsd sparc-gnu
17660 @end example
17662 @sp 1
17664 In Autoconf 2.13 and before, the variables @code{build}, @code{host},
17665 and @code{target} had a different semantics before and after the
17666 invocation of @code{AC_CANONICAL_BUILD} etc.  Now, the argument of
17667 @option{--build} is strictly copied into @code{build_alias}, and is left
17668 empty otherwise.  After the @code{AC_CANONICAL_BUILD}, @code{build} is
17669 set to the canonicalized build type.  To ease the transition, before,
17670 its contents is the same as that of @code{build_alias}.  Do @emph{not}
17671 rely on this broken feature.
17673 For consistency with the backward compatibility scheme exposed above,
17674 when @option{--host} is specified but @option{--build} isn't, the build
17675 system is assumed to be the same as @option{--host}, and
17676 @samp{build_alias} is set to that value.  Eventually, this
17677 historically incorrect behavior will go away.
17679 @sp 1
17681 The former scheme to enable cross-compilation proved to cause more harm
17682 than good, in particular, it used to be triggered too easily, leaving
17683 regular end users puzzled in front of cryptic error messages.
17684 @command{configure} could even enter cross-compilation mode only
17685 because the compiler was not functional.  This is mainly because
17686 @command{configure} used to try to detect cross-compilation, instead of
17687 waiting for an explicit flag from the user.
17689 Now, @command{configure} enters cross-compilation mode if and only if
17690 @option{--host} is passed.
17692 That's the short documentation.  To ease the transition between 2.13 and
17693 its successors, a more complicated scheme is implemented.  @emph{Do not
17694 rely on the following}, as it will be removed in the near future.
17696 If you specify @option{--host}, but not @option{--build}, when
17697 @command{configure} performs the first compiler test it tries to run
17698 an executable produced by the compiler.  If the execution fails, it
17699 enters cross-compilation mode.  This is fragile.  Moreover, by the time
17700 the compiler test is performed, it may be too late to modify the
17701 build-system type: other tests may have already been performed.
17702 Therefore, whenever you specify @option{--host}, be sure to specify
17703 @option{--build} too.
17705 @example
17706 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
17707 @end example
17709 @noindent
17710 enters cross-compilation mode.  The former interface, which
17711 consisted in setting the compiler to a cross-compiler without informing
17712 @command{configure} is obsolete.  For instance, @command{configure}
17713 fails if it can't run the code generated by the specified compiler if you
17714 configure as follows:
17716 @example
17717 ./configure CC=m68k-coff-gcc
17718 @end example
17721 @node AC_LIBOBJ vs LIBOBJS
17722 @subsection @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}
17724 Up to Autoconf 2.13, the replacement of functions was triggered via the
17725 variable @code{LIBOBJS}.  Since Autoconf 2.50, the macro
17726 @code{AC_LIBOBJ} should be used instead (@pxref{Generic Functions}).
17727 Starting at Autoconf 2.53, the use of @code{LIBOBJS} is an error.
17729 This change is mandated by the unification of the @acronym{GNU} Build System
17730 components.  In particular, the various fragile techniques used to parse
17731 a @file{configure.ac} are all replaced with the use of traces.  As a
17732 consequence, any action must be traceable, which obsoletes critical
17733 variable assignments.  Fortunately, @code{LIBOBJS} was the only problem,
17734 and it can even be handled gracefully (read, ``without your having to
17735 change something'').
17737 There were two typical uses of @code{LIBOBJS}: asking for a replacement
17738 function, and adjusting @code{LIBOBJS} for Automake and/or Libtool.
17740 @sp 1
17742 As for function replacement, the fix is immediate: use
17743 @code{AC_LIBOBJ}.  For instance:
17745 @example
17746 LIBOBJS="$LIBOBJS fnmatch.o"
17747 LIBOBJS="$LIBOBJS malloc.$ac_objext"
17748 @end example
17750 @noindent
17751 should be replaced with:
17753 @example
17754 AC_LIBOBJ([fnmatch])
17755 AC_LIBOBJ([malloc])
17756 @end example
17758 @sp 1
17760 @ovindex LIBOBJDIR
17761 When used with Automake 1.10 or newer, a suitable value for
17762 @code{LIBOBJDIR} is set so that the @code{LIBOBJS} and @code{LTLIBOBJS}
17763 can be referenced from any @file{Makefile.am}.  Even without Automake,
17764 arranging for @code{LIBOBJDIR} to be set correctly enables
17765 referencing @code{LIBOBJS} and @code{LTLIBOBJS} in another directory.
17766 The @code{LIBOJBDIR} feature is experimental.
17769 @node AC_FOO_IFELSE vs AC_TRY_FOO
17770 @subsection @code{AC_FOO_IFELSE} vs.@: @code{AC_TRY_FOO}
17772 Since Autoconf 2.50, internal codes uses @code{AC_PREPROC_IFELSE},
17773 @code{AC_COMPILE_IFELSE}, @code{AC_LINK_IFELSE}, and
17774 @code{AC_RUN_IFELSE} on one hand and @code{AC_LANG_SOURCES},
17775 and @code{AC_LANG_PROGRAM} on the other hand instead of the deprecated
17776 @code{AC_TRY_CPP}, @code{AC_TRY_COMPILE}, @code{AC_TRY_LINK}, and
17777 @code{AC_TRY_RUN}.  The motivations where:
17778 @itemize @minus
17779 @item
17780 a more consistent interface: @code{AC_TRY_COMPILE} etc.@: were double
17781 quoting their arguments;
17783 @item
17784 the combinatoric explosion is solved by decomposing on the one hand the
17785 generation of sources, and on the other hand executing the program;
17787 @item
17788 this scheme helps supporting more languages than plain C and C++.
17789 @end itemize
17791 In addition to the change of syntax, the philosophy has changed too:
17792 while emphasis was put on speed at the expense of accuracy, today's
17793 Autoconf promotes accuracy of the testing framework at, ahem@dots{}, the
17794 expense of speed.
17797 As a perfect example of what is @emph{not} to be done, here is how to
17798 find out whether a header file contains a particular declaration, such
17799 as a typedef, a structure, a structure member, or a function.  Use
17800 @code{AC_EGREP_HEADER} instead of running @code{grep} directly on the
17801 header file; on some systems the symbol might be defined in another
17802 header file that the file you are checking includes.
17804 As a (bad) example, here is how you should not check for C preprocessor
17805 symbols, either defined by header files or predefined by the C
17806 preprocessor: using @code{AC_EGREP_CPP}:
17808 @example
17809 @group
17810 AC_EGREP_CPP(yes,
17811 [#ifdef _AIX
17812   yes
17813 #endif
17814 ], is_aix=yes, is_aix=no)
17815 @end group
17816 @end example
17818 The above example, properly written would (i) use
17819 @code{AC_LANG_PROGRAM}, and (ii) run the compiler:
17821 @example
17822 @group
17823 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
17824 [[#ifndef _AIX
17825  error: This isn't AIX!
17826 #endif
17827 ]])],
17828                    [is_aix=yes],
17829                    [is_aix=no])
17830 @end group
17831 @end example
17834 @c ============================= Generating Test Suites with Autotest
17836 @node Using Autotest
17837 @chapter Generating Test Suites with Autotest
17839 @cindex Autotest
17841 @display
17842 @strong{N.B.: This section describes an experimental feature which will
17843 be part of Autoconf in a forthcoming release.  Although we believe
17844 Autotest is stabilizing, this documentation describes an interface which
17845 might change in the future: do not depend upon Autotest without
17846 subscribing to the Autoconf mailing lists.}
17847 @end display
17849 It is paradoxical that portable projects depend on nonportable tools
17850 to run their test suite.  Autoconf by itself is the paragon of this
17851 problem: although it aims at perfectly portability, up to 2.13 its
17852 test suite was using Deja@acronym{GNU}, a rich and complex testing
17853 framework, but which is far from being standard on Posix systems.
17854 Worse yet, it was likely to be missing on the most fragile platforms,
17855 the very platforms that are most likely to torture Autoconf and
17856 exhibit deficiencies.
17858 To circumvent this problem, many package maintainers have developed their
17859 own testing framework, based on simple shell scripts whose sole outputs
17860 are exit status values describing whether the test succeeded.  Most of
17861 these tests share common patterns, and this can result in lots of
17862 duplicated code and tedious maintenance.
17864 Following exactly the same reasoning that yielded to the inception of
17865 Autoconf, Autotest provides a test suite generation framework, based on
17866 M4 macros building a portable shell script.  The suite itself is
17867 equipped with automatic logging and tracing facilities which greatly
17868 diminish the interaction with bug reporters, and simple timing reports.
17870 Autoconf itself has been using Autotest for years, and we do attest that
17871 it has considerably improved the strength of the test suite and the
17872 quality of bug reports.  Other projects are known to use some generation
17873 of Autotest, such as Bison, Free Recode, Free Wdiff, @acronym{GNU} Tar, each of
17874 them with different needs, and this usage has validated Autotest as a general
17875 testing framework.
17877 Nonetheless, compared to Deja@acronym{GNU}, Autotest is inadequate for
17878 interactive tool testing, which is probably its main limitation.
17880 @menu
17881 * Using an Autotest Test Suite::  Autotest and the user
17882 * Writing testsuite.at::        Autotest macros
17883 * testsuite Invocation::        Running @command{testsuite} scripts
17884 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
17885 @end menu
17887 @node Using an Autotest Test Suite
17888 @section Using an Autotest Test Suite
17890 @menu
17891 * testsuite Scripts::           The concepts of Autotest
17892 * Autotest Logs::               Their contents
17893 @end menu
17895 @node testsuite Scripts
17896 @subsection @command{testsuite} Scripts
17898 @cindex @command{testsuite}
17900 Generating testing or validation suites using Autotest is rather easy.
17901 The whole validation suite is held in a file to be processed through
17902 @command{autom4te}, itself using @acronym{GNU} M4 under the scene, to
17903 produce a stand-alone Bourne shell script which then gets distributed.
17904 Neither @command{autom4te} nor @acronym{GNU} M4 are needed at
17905 the installer's end.
17907 @cindex test group
17908 Each test of the validation suite should be part of some test group.  A
17909 @dfn{test group} is a sequence of interwoven tests that ought to be
17910 executed together, usually because one test in the group creates data
17911 files than a later test in the same group needs to read.  Complex test
17912 groups make later debugging more tedious.  It is much better to
17913 keep only a few tests per test group.  Ideally there is only one test
17914 per test group.
17916 For all but the simplest packages, some file such as @file{testsuite.at}
17917 does not fully hold all test sources, as these are often easier to
17918 maintain in separate files.  Each of these separate files holds a single
17919 test group, or a sequence of test groups all addressing some common
17920 functionality in the package.  In such cases, @file{testsuite.at}
17921 merely initializes the validation suite, and sometimes does elementary
17922 health checking, before listing include statements for all other test
17923 files.  The special file @file{package.m4}, containing the
17924 identification of the package, is automatically included if found.
17926 A convenient alternative consists in moving all the global issues
17927 (local Autotest macros, elementary health checking, and @code{AT_INIT}
17928 invocation) into the file @code{local.at}, and making
17929 @file{testsuite.at} be a simple list of @code{m4_include} of sub test
17930 suites.  In such case, generating the whole test suite or pieces of it
17931 is only a matter of choosing the @command{autom4te} command line
17932 arguments.
17934 The validation scripts that Autotest produces are by convention called
17935 @command{testsuite}.  When run, @command{testsuite} executes each test
17936 group in turn, producing only one summary line per test to say if that
17937 particular test succeeded or failed.  At end of all tests, summarizing
17938 counters get printed.  One debugging directory is left for each test
17939 group which failed, if any: such directories are named
17940 @file{testsuite.dir/@var{nn}}, where @var{nn} is the sequence number of
17941 the test group, and they include:
17943 @itemize @bullet
17944 @item a debugging script named @file{run} which reruns the test in
17945 @dfn{debug mode} (@pxref{testsuite Invocation}).  The automatic generation
17946 of debugging scripts has the purpose of easing the chase for bugs.
17948 @item all the files created with @code{AT_DATA}
17950 @item a log of the run, named @file{testsuite.log}
17951 @end itemize
17953 In the ideal situation, none of the tests fail, and consequently no
17954 debugging directory is left behind for validation.
17956 It often happens in practice that individual tests in the validation
17957 suite need to get information coming out of the configuration process.
17958 Some of this information, common for all validation suites, is provided
17959 through the file @file{atconfig}, automatically created by
17960 @code{AC_CONFIG_TESTDIR}.  For configuration informations which your
17961 testing environment specifically needs, you might prepare an optional
17962 file named @file{atlocal.in}, instantiated by @code{AC_CONFIG_FILES}.
17963 The configuration process produces @file{atconfig} and @file{atlocal}
17964 out of these two input files, and these two produced files are
17965 automatically read by the @file{testsuite} script.
17967 Here is a diagram showing the relationship between files.
17969 @noindent
17970 Files used in preparing a software package for distribution:
17972 @example
17973                 [package.m4] -->.
17974                                  \
17975 subfile-1.at ->.  [local.at] ---->+
17976     ...         \                  \
17977 subfile-i.at ---->-- testsuite.at -->-- autom4te* -->testsuite
17978     ...         /
17979 subfile-n.at ->'
17980 @end example
17982 @noindent
17983 Files used in configuring a software package:
17985 @example
17986                                      .--> atconfig
17987                                     /
17988 [atlocal.in] -->  config.status* --<
17989                                     \
17990                                      `--> [atlocal]
17991 @end example
17993 @noindent
17994 Files created during the test suite execution:
17996 @example
17997 atconfig -->.                    .--> testsuite.log
17998              \                  /
17999               >-- testsuite* --<
18000              /                  \
18001 [atlocal] ->'                    `--> [testsuite.dir]
18002 @end example
18005 @node Autotest Logs
18006 @subsection Autotest Logs
18008 When run, the test suite creates a log file named after itself, e.g., a
18009 test suite named @command{testsuite} creates @file{testsuite.log}.  It
18010 contains a lot of information, usually more than maintainers actually
18011 need, but therefore most of the time it contains all that is needed:
18013 @table @asis
18014 @item command line arguments
18015 @c akim s/to consist in/to consist of/
18016 A bad but unfortunately widespread habit consists of
18017 setting environment variables before the command, such as in
18018 @samp{CC=my-home-grown-cc ./testsuite}.  The test suite does not
18019 know this change, hence (i) it cannot report it to you, and (ii)
18020 it cannot preserve the value of @code{CC} for subsequent runs.
18021 Autoconf faced exactly the same problem, and solved it by asking
18022 users to pass the variable definitions as command line arguments.
18023 Autotest requires this rule, too, but has no means to enforce it; the log
18024 then contains a trace of the variables that were changed by the user.
18026 @item @file{ChangeLog} excerpts
18027 The topmost lines of all the @file{ChangeLog} files found in the source
18028 hierarchy.  This is especially useful when bugs are reported against
18029 development versions of the package, since the version string does not
18030 provide sufficient information to know the exact state of the sources
18031 the user compiled.  Of course, this relies on the use of a
18032 @file{ChangeLog}.
18034 @item build machine
18035 Running a test suite in a cross-compile environment is not an easy task,
18036 since it would mean having the test suite run on a machine @var{build},
18037 while running programs on a machine @var{host}.  It is much simpler to
18038 run both the test suite and the programs on @var{host}, but then, from
18039 the point of view of the test suite, there remains a single environment,
18040 @var{host} = @var{build}.  The log contains relevant information on the
18041 state of the build machine, including some important environment
18042 variables.
18043 @c FIXME: How about having an M4sh macro to say `hey, log the value
18044 @c of `@dots{}'?  This would help both Autoconf and Autotest.
18046 @item tested programs
18047 The absolute file name and answers to @option{--version} of the tested
18048 programs (see @ref{Writing testsuite.at}, @code{AT_TESTED}).
18050 @item configuration log
18051 The contents of @file{config.log}, as created by @command{configure},
18052 are appended.  It contains the configuration flags and a detailed report
18053 on the configuration itself.
18054 @end table
18057 @node Writing testsuite.at
18058 @section Writing @file{testsuite.at}
18060 The @file{testsuite.at} is a Bourne shell script making use of special
18061 Autotest M4 macros.  It often contains a call to @code{AT_INIT} near
18062 its beginning followed by one call to @code{m4_include} per source file
18063 for tests.  Each such included file, or the remainder of
18064 @file{testsuite.at} if include files are not used, contain a sequence of
18065 test groups.  Each test group begins with a call to @code{AT_SETUP},
18066 then an arbitrary number of shell commands or calls to @code{AT_CHECK},
18067 and then completes with a call to @code{AT_CLEANUP}.
18069 @defmac AT_INIT (@ovar{name})
18070 @atindex{INIT}
18071 @c FIXME: Not clear, plus duplication of the information.
18072 Initialize Autotest.  Giving a @var{name} to the test suite is
18073 encouraged if your package includes several test suites.  In any case,
18074 the test suite always displays the package name and version.  It also
18075 inherits the package bug report address.
18076 @end defmac
18078 @defmac AT_COPYRIGHT (@var{copyright-notice})
18079 @atindex{COPYRIGHT}
18080 @cindex Copyright Notice
18081 State that, in addition to the Free Software Foundation's copyright on
18082 the Autotest macros, parts of your test suite are covered by
18083 @var{copyright-notice}.
18085 The @var{copyright-notice} shows up in both the head of
18086 @command{testsuite} and in @samp{testsuite --version}.
18087 @end defmac
18089 @defmac AT_TESTED (@var{executables})
18090 @atindex{TESTED}
18091 Log the file name and answer to @option{--version} of each program in
18092 space-separated list @var{executables}.  Several invocations register
18093 new executables, in other words, don't fear registering one program
18094 several times.
18095 @end defmac
18097 Autotest test suites rely on @env{PATH} to find the tested program.
18098 This avoids the need to generate absolute names of the various tools, and
18099 makes it possible to test installed programs.  Therefore, knowing which
18100 programs are being exercised is crucial to understanding problems in
18101 the test suite itself, or its occasional misuses.  It is a good idea to
18102 also subscribe foreign programs you depend upon, to avoid incompatible
18103 diagnostics.
18105 @sp 1
18107 @defmac AT_SETUP (@var{test-group-name})
18108 @atindex{SETUP}
18109 This macro starts a group of related tests, all to be executed in the
18110 same subshell.  It accepts a single argument, which holds a few words
18111 (no more than about 30 or 40 characters) quickly describing the purpose
18112 of the test group being started.
18113 @end defmac
18115 @defmac AT_KEYWORDS (@var{keywords})
18116 @atindex{KEYWORDS}
18117 Associate the space-separated list of @var{keywords} to the enclosing
18118 test group.  This makes it possible to run ``slices'' of the test suite.
18119 For instance, if some of your test groups exercise some @samp{foo}
18120 feature, then using @samp{AT_KEYWORDS(foo)} lets you run
18121 @samp{./testsuite -k foo} to run exclusively these test groups.  The
18122 @var{title} of the test group is automatically recorded to
18123 @code{AT_KEYWORDS}.
18125 Several invocations within a test group accumulate new keywords.  In
18126 other words, don't fear registering the same keyword several times in a
18127 test group.
18128 @end defmac
18130 @defmac AT_CAPTURE_FILE (@var{file})
18131 @atindex{CAPTURE_FILE}
18132 If the current test group fails, log the contents of @var{file}.
18133 Several identical calls within one test group have no additional effect.
18134 @end defmac
18136 @defmac AT_XFAIL_IF (@var{shell-condition})
18137 @atindex{XFAIL_IF}
18138 Determine whether the test is expected to fail because it is a known
18139 bug (for unsupported features, you should skip the test).
18140 @var{shell-condition} is a shell expression such as a @code{test}
18141 command; you can instantiate this macro many times from within the
18142 same test group, and one of the conditions is enough to turn
18143 the test into an expected failure.
18144 @end defmac
18146 @defmac AT_CLEANUP
18147 @atindex{CLEANUP}
18148 End the current test group.
18149 @end defmac
18151 @sp 1
18153 @defmac AT_DATA (@var{file}, @var{contents})
18154 @atindex{DATA}
18155 Initialize an input data @var{file} with given @var{contents}.  Of
18156 course, the @var{contents} have to be properly quoted between square
18157 brackets to protect against included commas or spurious M4
18158 expansion.  The contents ought to end with an end of line.
18159 @end defmac
18161 @defmac AT_CHECK (@var{commands}, @dvar{status, 0}, @dvar{stdout, }, @dvar{stderr, }, @ovar{run-if-fail}, @ovar{run-if-pass})
18162 @atindex{CHECK}
18163 Execute a test by performing given shell @var{commands}.  These commands
18164 should normally exit with @var{status}, while producing expected
18165 @var{stdout} and @var{stderr} contents.  If @var{commands} exit with
18166 status 77, then the whole test group is skipped.  Otherwise, if this test
18167 fails, run shell commands @var{run-if-fail} or, if this test passes, run shell
18168 commands @var{run-if-pass}.
18170 The @var{commands} @emph{must not} redirect the standard output, nor the
18171 standard error.
18173 If @var{status}, or @var{stdout}, or @var{stderr} is @samp{ignore}, then
18174 the corresponding value is not checked.
18176 The special value @samp{expout} for @var{stdout} means the expected
18177 output of the @var{commands} is the content of the file @file{expout}.
18178 If @var{stdout} is @samp{stdout}, then the standard output of the
18179 @var{commands} is available for further tests in the file @file{stdout}.
18180 Similarly for @var{stderr} with @samp{experr} and @samp{stderr}.
18181 @end defmac
18184 @node testsuite Invocation
18185 @section Running @command{testsuite} Scripts
18186 @cindex @command{testsuite}
18188 Autotest test suites support the following arguments:
18190 @table @option
18191 @item --help
18192 @itemx -h
18193 Display the list of options and exit successfully.
18195 @item --version
18196 @itemx -V
18197 Display the version of the test suite and exit successfully.
18199 @item --clean
18200 @itemx -c
18201 Remove all the files the test suite might have created and exit.  Meant
18202 for @code{clean} Make targets.
18204 @item --list
18205 @itemx -l
18206 List all the tests (or only the selection), including their possible
18207 keywords.
18208 @end table
18210 @sp 1
18212 By default all tests are performed (or described with
18213 @option{--list}) in the default environment first silently, then
18214 verbosely, but the environment, set of tests, and verbosity level can be
18215 tuned:
18217 @table @samp
18218 @item @var{variable}=@var{value}
18219 Set the environment @var{variable} to @var{value}.  Use this rather
18220 than @samp{FOO=foo ./testsuite} as debugging scripts would then run in a
18221 different environment.
18223 @cindex @code{AUTOTEST_PATH}
18224 The variable @code{AUTOTEST_PATH} specifies the testing path to prepend
18225 to @env{PATH}.  Relative directory names (not starting with
18226 @samp{/}) are considered to be relative to the top level of the
18227 package being built.  All directories are made absolute, first
18228 starting from the top level @emph{build} tree, then from the
18229 @emph{source} tree.  For instance @samp{./testsuite
18230 AUTOTEST_PATH=tests:bin} for a @file{/src/foo-1.0} source package built
18231 in @file{/tmp/foo} results in @samp{/tmp/foo/tests:/tmp/foo/bin} and
18232 then @samp{/src/foo-1.0/tests:/src/foo-1.0/bin} being prepended to
18233 @env{PATH}.
18235 @item @var{number}
18236 @itemx @var{number}-@var{number}
18237 @itemx @var{number}-
18238 @itemx -@var{number}
18239 Add the corresponding test groups, with obvious semantics, to the
18240 selection.
18242 @item --keywords=@var{keywords}
18243 @itemx -k @var{keywords}
18244 Add to the selection the test groups with title or keywords (arguments
18245 to @code{AT_SETUP} or @code{AT_KEYWORDS}) that match @emph{all} keywords
18246 of the comma separated list @var{keywords}, case-insensitively.  Use
18247 @samp{!} immediately before the keyword to invert the selection for this
18248 keyword.  By default, the keywords match whole words; enclose them in
18249 @samp{.*} to also match parts of words.
18251 For example, running
18253 @example
18254 @kbd{./testsuite -k 'autoupdate,.*FUNC.*'}
18255 @end example
18257 @noindent
18258 selects all tests tagged @samp{autoupdate} @emph{and} with tags
18259 containing @samp{FUNC} (as in @samp{AC_CHECK_FUNC}, @samp{AC_FUNC_ALLOCA},
18260 etc.), while
18262 @example
18263 @kbd{./testsuite -k '!autoupdate' -k '.*FUNC.*'}
18264 @end example
18266 @noindent
18267 selects all tests not tagged @samp{autoupdate} @emph{or} with tags
18268 containing @samp{FUNC}.
18270 @item --errexit
18271 @itemx -e
18272 If any test fails, immediately abort testing.  It implies
18273 @option{--debug}: post test group clean up, and top-level logging
18274 are inhibited.  This option is meant for the full test
18275 suite, it is not really useful for generated debugging scripts.
18277 @item --verbose
18278 @itemx -v
18279 Force more verbosity in the detailed output of what is being done.  This
18280 is the default for debugging scripts.
18282 @item --debug
18283 @itemx -d
18284 Do not remove the files after a test group was performed ---but they are
18285 still removed @emph{before}, therefore using this option is sane when
18286 running several test groups.  Create debugging scripts.  Do not
18287 overwrite the top-level
18288 log (in order to preserve supposedly existing full log file).  This is
18289 the default for debugging scripts, but it can also be useful to debug
18290 the testsuite itself.
18292 @item --trace
18293 @itemx -x
18294 Trigger shell tracing of the test groups.
18295 @end table
18298 @node Making testsuite Scripts
18299 @section Making @command{testsuite} Scripts
18301 For putting Autotest into movement, you need some configuration and
18302 makefile machinery.  We recommend, at least if your package uses deep or
18303 shallow hierarchies, that you use @file{tests/} as the name of the
18304 directory holding all your tests and their makefile.  Here is a
18305 check list of things to do.
18307 @itemize @minus
18309 @item
18310 @cindex @file{package.m4}
18311 Make sure to create the file @file{package.m4}, which defines the
18312 identity of the package.  It must define @code{AT_PACKAGE_STRING}, the
18313 full signature of the package, and @code{AT_PACKAGE_BUGREPORT}, the
18314 address to which bug reports should be sent.  For sake of completeness,
18315 we suggest that you also define @code{AT_PACKAGE_NAME},
18316 @code{AT_PACKAGE_TARNAME}, and @code{AT_PACKAGE_VERSION}.
18317 @xref{Initializing configure}, for a description of these variables.  We
18318 suggest the following makefile excerpt:
18320 @smallexample
18321 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
18322         @{                                      \
18323           echo '# Signature of the current package.'; \
18324           echo 'm4_define([AT_PACKAGE_NAME],      [@@PACKAGE_NAME@@])'; \
18325           echo 'm4_define([AT_PACKAGE_TARNAME],   [@@PACKAGE_TARNAME@@])'; \
18326           echo 'm4_define([AT_PACKAGE_VERSION],   [@@PACKAGE_VERSION@@])'; \
18327           echo 'm4_define([AT_PACKAGE_STRING],    [@@PACKAGE_STRING@@])'; \
18328           echo 'm4_define([AT_PACKAGE_BUGREPORT], [@@PACKAGE_BUGREPORT@@])'; \
18329         @} >'$(srcdir)/package.m4'
18330 @end smallexample
18332 @noindent
18333 Be sure to distribute @file{package.m4} and to put it into the source
18334 hierarchy: the test suite ought to be shipped!
18336 @item
18337 Invoke @code{AC_CONFIG_TESTDIR}.
18339 @defmac AC_CONFIG_TESTDIR (@var{directory}, @dvar{test-path, directory})
18340 @acindex{CONFIG_TESTDIR}
18341 An Autotest test suite is to be configured in @var{directory}.  This
18342 macro requires the instantiation of @file{@var{directory}/atconfig} from
18343 @file{@var{directory}/atconfig.in}, and sets the default
18344 @code{AUTOTEST_PATH} to @var{test-path} (@pxref{testsuite Invocation}).
18345 @end defmac
18347 @item
18348 Still within @file{configure.ac}, as appropriate, ensure that some
18349 @code{AC_CONFIG_FILES} command includes substitution for
18350 @file{tests/atlocal}.
18352 @item
18353 The @file{tests/Makefile.in} should be modified so the validation in
18354 your package is triggered by @samp{make check}.  An example is provided
18355 below.
18356 @end itemize
18358 With Automake, here is a minimal example about how to link @samp{make
18359 check} with a validation suite.
18361 @example
18362 EXTRA_DIST = testsuite.at $(TESTSUITE) atlocal.in
18363 TESTSUITE = $(srcdir)/testsuite
18365 check-local: atconfig atlocal $(TESTSUITE)
18366         $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
18368 installcheck-local: atconfig atlocal $(TESTSUITE)
18369         $(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(bindir)' \
18370           $(TESTSUITEFLAGS)
18372 clean-local:
18373         test ! -f '$(TESTSUITE)' || \
18374          $(SHELL) '$(TESTSUITE)' --clean
18376 AUTOTEST = $(AUTOM4TE) --language=autotest
18377 $(TESTSUITE): $(srcdir)/testsuite.at
18378         $(AUTOTEST) -I '$(srcdir)' -o $@@.tmp $@@.at
18379         mv $@@.tmp $@@
18380 @end example
18382 You might want to list explicitly the dependencies, i.e., the list of
18383 the files @file{testsuite.at} includes.
18385 With strict Autoconf, you might need to add lines inspired from the
18386 following:
18388 @example
18389 subdir = tests
18391 atconfig: $(top_builddir)/config.status
18392         cd $(top_builddir) && \
18393            $(SHELL) ./config.status $(subdir)/$@@
18395 atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
18396         cd $(top_builddir) && \
18397            $(SHELL) ./config.status $(subdir)/$@@
18398 @end example
18400 @noindent
18401 and manage to have @file{atconfig.in} and @code{$(EXTRA_DIST)}
18402 distributed.
18404 With all this in place, and if you have not initialized @samp{TESTSUITEFLAGS}
18405 within your makefile, you can fine-tune test suite execution with this variable,
18406 for example:
18408 @example
18409 make check TESTSUITEFLAGS='-v -d -x 75 -k AC_PROG_CC CFLAGS=-g'
18410 @end example
18414 @c =============================== Frequent Autoconf Questions, with answers
18416 @node FAQ
18417 @chapter Frequent Autoconf Questions, with answers
18419 Several questions about Autoconf come up occasionally.  Here some of them
18420 are addressed.
18422 @menu
18423 * Distributing::                Distributing @command{configure} scripts
18424 * Why GNU M4::                  Why not use the standard M4?
18425 * Bootstrapping::               Autoconf and @acronym{GNU} M4 require each other?
18426 * Why Not Imake::               Why @acronym{GNU} uses @command{configure} instead of Imake
18427 * Defining Directories::        Passing @code{datadir} to program
18428 * autom4te.cache::              What is it?  Can I remove it?
18429 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
18430 @end menu
18432 @node Distributing
18433 @section Distributing @command{configure} Scripts
18434 @cindex License
18436 @display
18437 What are the restrictions on distributing @command{configure}
18438 scripts that Autoconf generates?  How does that affect my
18439 programs that use them?
18440 @end display
18442 There are no restrictions on how the configuration scripts that Autoconf
18443 produces may be distributed or used.  In Autoconf version 1, they were
18444 covered by the @acronym{GNU} General Public License.  We still encourage
18445 software authors to distribute their work under terms like those of the
18446 @acronym{GPL}, but doing so is not required to use Autoconf.
18448 Of the other files that might be used with @command{configure},
18449 @file{config.h.in} is under whatever copyright you use for your
18450 @file{configure.ac}.  @file{config.sub} and @file{config.guess} have an
18451 exception to the @acronym{GPL} when they are used with an Autoconf-generated
18452 @command{configure} script, which permits you to distribute them under the
18453 same terms as the rest of your package.  @file{install-sh} is from the X
18454 Consortium and is not copyrighted.
18456 @node Why GNU M4
18457 @section Why Require @acronym{GNU} M4?
18459 @display
18460 Why does Autoconf require @acronym{GNU} M4?
18461 @end display
18463 Many M4 implementations have hard-coded limitations on the size and
18464 number of macros that Autoconf exceeds.  They also lack several
18465 builtin macros that it would be difficult to get along without in a
18466 sophisticated application like Autoconf, including:
18468 @example
18469 m4_builtin
18470 m4_indir
18471 m4_bpatsubst
18472 __file__
18473 __line__
18474 @end example
18476 Autoconf requires version 1.4.7 or later of @acronym{GNU} M4.
18478 Since only software maintainers need to use Autoconf, and since @acronym{GNU}
18479 M4 is simple to configure and install, it seems reasonable to require
18480 @acronym{GNU} M4 to be installed also.  Many maintainers of @acronym{GNU} and
18481 other free software already have most of the @acronym{GNU} utilities
18482 installed, since they prefer them.
18484 @node Bootstrapping
18485 @section How Can I Bootstrap?
18486 @cindex Bootstrap
18488 @display
18489 If Autoconf requires @acronym{GNU} M4 and @acronym{GNU} M4 has an Autoconf
18490 @command{configure} script, how do I bootstrap?  It seems like a chicken
18491 and egg problem!
18492 @end display
18494 This is a misunderstanding.  Although @acronym{GNU} M4 does come with a
18495 @command{configure} script produced by Autoconf, Autoconf is not required
18496 in order to run the script and install @acronym{GNU} M4.  Autoconf is only
18497 required if you want to change the M4 @command{configure} script, which few
18498 people have to do (mainly its maintainer).
18500 @node Why Not Imake
18501 @section Why Not Imake?
18502 @cindex Imake
18504 @display
18505 Why not use Imake instead of @command{configure} scripts?
18506 @end display
18508 Several people have written addressing this question, so I include
18509 adaptations of their explanations here.
18511 The following answer is based on one written by Richard Pixley:
18513 @quotation
18514 Autoconf generated scripts frequently work on machines that it has
18515 never been set up to handle before.  That is, it does a good job of
18516 inferring a configuration for a new system.  Imake cannot do this.
18518 Imake uses a common database of host specific data.  For X11, this makes
18519 sense because the distribution is made as a collection of tools, by one
18520 central authority who has control over the database.
18522 @acronym{GNU} tools are not released this way.  Each @acronym{GNU} tool has a
18523 maintainer; these maintainers are scattered across the world.  Using a
18524 common database would be a maintenance nightmare.  Autoconf may appear
18525 to be this kind of database, but in fact it is not.  Instead of listing
18526 host dependencies, it lists program requirements.
18528 If you view the @acronym{GNU} suite as a collection of native tools, then the
18529 problems are similar.  But the @acronym{GNU} development tools can be
18530 configured as cross tools in almost any host+target permutation.  All of
18531 these configurations can be installed concurrently.  They can even be
18532 configured to share host independent files across hosts.  Imake doesn't
18533 address these issues.
18535 Imake templates are a form of standardization.  The @acronym{GNU} coding
18536 standards address the same issues without necessarily imposing the same
18537 restrictions.
18538 @end quotation
18541 Here is some further explanation, written by Per Bothner:
18543 @quotation
18544 One of the advantages of Imake is that it easy to generate large
18545 makefiles using the @samp{#include} and macro mechanisms of @command{cpp}.
18546 However, @code{cpp} is not programmable: it has limited conditional
18547 facilities, and no looping.  And @code{cpp} cannot inspect its
18548 environment.
18550 All of these problems are solved by using @code{sh} instead of
18551 @code{cpp}.  The shell is fully programmable, has macro substitution,
18552 can execute (or source) other shell scripts, and can inspect its
18553 environment.
18554 @end quotation
18557 Paul Eggert elaborates more:
18559 @quotation
18560 With Autoconf, installers need not assume that Imake itself is already
18561 installed and working well.  This may not seem like much of an advantage
18562 to people who are accustomed to Imake.  But on many hosts Imake is not
18563 installed or the default installation is not working well, and requiring
18564 Imake to install a package hinders the acceptance of that package on
18565 those hosts.  For example, the Imake template and configuration files
18566 might not be installed properly on a host, or the Imake build procedure
18567 might wrongly assume that all source files are in one big directory
18568 tree, or the Imake configuration might assume one compiler whereas the
18569 package or the installer needs to use another, or there might be a
18570 version mismatch between the Imake expected by the package and the Imake
18571 supported by the host.  These problems are much rarer with Autoconf,
18572 where each package comes with its own independent configuration
18573 processor.
18575 Also, Imake often suffers from unexpected interactions between
18576 @command{make} and the installer's C preprocessor.  The fundamental problem
18577 here is that the C preprocessor was designed to preprocess C programs,
18578 not makefiles.  This is much less of a problem with Autoconf,
18579 which uses the general-purpose preprocessor M4, and where the
18580 package's author (rather than the installer) does the preprocessing in a
18581 standard way.
18582 @end quotation
18585 Finally, Mark Eichin notes:
18587 @quotation
18588 Imake isn't all that extensible, either.  In order to add new features to
18589 Imake, you need to provide your own project template, and duplicate most
18590 of the features of the existing one.  This means that for a sophisticated
18591 project, using the vendor-provided Imake templates fails to provide any
18592 leverage---since they don't cover anything that your own project needs
18593 (unless it is an X11 program).
18595 On the other side, though:
18597 The one advantage that Imake has over @command{configure}:
18598 @file{Imakefile} files tend to be much shorter (likewise, less redundant)
18599 than @file{Makefile.in} files.  There is a fix to this, however---at least
18600 for the Kerberos V5 tree, we've modified things to call in common
18601 @file{post.in} and @file{pre.in} makefile fragments for the
18602 entire tree.  This means that a lot of common things don't have to be
18603 duplicated, even though they normally are in @command{configure} setups.
18604 @end quotation
18607 @node Defining Directories
18608 @section How Do I @code{#define} Installation Directories?
18610 @display
18611 My program needs library files, installed in @code{datadir} and
18612 similar.  If I use
18614 @example
18615 AC_DEFINE_UNQUOTED([DATADIR], [$datadir],
18616   [Define to the read-only architecture-independent
18617    data directory.])
18618 @end example
18620 @noindent
18621 I get
18623 @example
18624 #define DATADIR "$@{prefix@}/share"
18625 @end example
18626 @end display
18628 As already explained, this behavior is on purpose, mandated by the
18629 @acronym{GNU} Coding Standards, see @ref{Installation Directory
18630 Variables}.  There are several means to achieve a similar goal:
18632 @itemize @minus
18633 @item
18634 Do not use @code{AC_DEFINE} but use your makefile to pass the
18635 actual value of @code{datadir} via compilation flags.
18636 @xref{Installation Directory Variables}, for the details.
18638 @item
18639 This solution can be simplified when compiling a program: you may either
18640 extend the @code{CPPFLAGS}:
18642 @example
18643 CPPFLAGS = -DDATADIR='"$(datadir)"' @@CPPFLAGS@@
18644 @end example
18646 @noindent
18647 or create a dedicated header file:
18649 @example
18650 DISTCLEANFILES = datadir.h
18651 datadir.h: Makefile
18652         echo '#define DATADIR "$(datadir)"' >$@@
18653 @end example
18655 @item
18656 Use @code{AC_DEFINE} but have @command{configure} compute the literal
18657 value of @code{datadir} and others.  Many people have wrapped macros to
18658 automate this task.  For instance, the macro @code{AC_DEFINE_DIR} from
18659 the @uref{http://autoconf-archive.cryp.to/, Autoconf Macro
18660 Archive}.
18662 This solution does not conform to the @acronym{GNU} Coding Standards.
18664 @item
18665 Note that all the previous solutions hard wire the absolute name of
18666 these directories in the executables, which is not a good property.  You
18667 may try to compute the names relative to @code{prefix}, and try to
18668 find @code{prefix} at runtime, this way your package is relocatable.
18669 Some macros are already available to address this issue: see
18670 @code{adl_COMPUTE_RELATIVE_PATHS} and
18671 @code{adl_COMPUTE_STANDARD_RELATIVE_PATHS} on the
18672 @uref{http://autoconf-archive.cryp.to/,
18673 Autoconf Macro Archive}.
18674 @end itemize
18677 @node autom4te.cache
18678 @section What is @file{autom4te.cache}?
18680 @display
18681 What is this directory @file{autom4te.cache}?  Can I safely remove it?
18682 @end display
18684 In the @acronym{GNU} Build System, @file{configure.ac} plays a central
18685 role and is read by many tools: @command{autoconf} to create
18686 @file{configure}, @command{autoheader} to create @file{config.h.in},
18687 @command{automake} to create @file{Makefile.in}, @command{autoscan} to
18688 check the completeness of @file{configure.ac}, @command{autoreconf} to
18689 check the @acronym{GNU} Build System components that are used.  To
18690 ``read @file{configure.ac}'' actually means to compile it with M4,
18691 which can be a long process for complex @file{configure.ac}.
18693 This is why all these tools, instead of running directly M4, invoke
18694 @command{autom4te} (@pxref{autom4te Invocation}) which, while answering to
18695 a specific demand, stores additional information in
18696 @file{autom4te.cache} for future runs.  For instance, if you run
18697 @command{autoconf}, behind the scenes, @command{autom4te} also
18698 stores information for the other tools, so that when you invoke
18699 @command{autoheader} or @command{automake} etc., reprocessing
18700 @file{configure.ac} is not needed.  The speed up is frequently of 30%,
18701 and is increasing with the size of @file{configure.ac}.
18703 But it is and remains being simply a cache: you can safely remove it.
18705 @sp 1
18707 @display
18708 Can I permanently get rid of it?
18709 @end display
18711 The creation of this cache can be disabled from
18712 @file{~/.autom4te.cfg}, see @ref{Customizing autom4te}, for more
18713 details.  You should be aware that disabling the cache slows down the
18714 Autoconf test suite by 40%.  The more @acronym{GNU} Build System
18715 components are used, the more the cache is useful; for instance
18716 running @samp{autoreconf -f} on the Core Utilities is twice slower without
18717 the cache @emph{although @option{--force} implies that the cache is
18718 not fully exploited}, and eight times slower than without
18719 @option{--force}.
18722 @node Present But Cannot Be Compiled
18723 @section Header Present But Cannot Be Compiled
18725 The most important guideline to bear in mind when checking for
18726 features is to mimic as much as possible the intended use.
18727 Unfortunately, old versions of @code{AC_CHECK_HEADER} and
18728 @code{AC_CHECK_HEADERS} failed to follow this idea, and called
18729 the preprocessor, instead of the compiler, to check for headers.  As a
18730 result, incompatibilities between headers went unnoticed during
18731 configuration, and maintainers finally had to deal with this issue
18732 elsewhere.
18734 As of Autoconf 2.56 both checks are performed, and @code{configure}
18735 complains loudly if the compiler and the preprocessor do not agree.
18736 For the time being the result used is that of the preprocessor, to give
18737 maintainers time to adjust their @file{configure.ac}, but in the
18738 future, only the compiler will be considered.
18740 Consider the following example:
18742 @smallexample
18743 $ @kbd{cat number.h}
18744 typedef int number;
18745 $ @kbd{cat pi.h}
18746 const number pi = 3;
18747 $ @kbd{cat configure.ac}
18748 AC_INIT([Example], [1.0], [bug-example@@example.org])
18749 AC_CHECK_HEADERS([pi.h])
18750 $ @kbd{autoconf -Wall}
18751 $ @kbd{./configure}
18752 checking for gcc... gcc
18753 checking for C compiler default output file name... a.out
18754 checking whether the C compiler works... yes
18755 checking whether we are cross compiling... no
18756 checking for suffix of executables...
18757 checking for suffix of object files... o
18758 checking whether we are using the GNU C compiler... yes
18759 checking whether gcc accepts -g... yes
18760 checking for gcc option to accept ISO C89... none needed
18761 checking how to run the C preprocessor... gcc -E
18762 checking for grep that handles long lines and -e... grep
18763 checking for egrep... grep -E
18764 checking for ANSI C header files... yes
18765 checking for sys/types.h... yes
18766 checking for sys/stat.h... yes
18767 checking for stdlib.h... yes
18768 checking for string.h... yes
18769 checking for memory.h... yes
18770 checking for strings.h... yes
18771 checking for inttypes.h... yes
18772 checking for stdint.h... yes
18773 checking for unistd.h... yes
18774 checking pi.h usability... no
18775 checking pi.h presence... yes
18776 configure: WARNING: pi.h: present but cannot be compiled
18777 configure: WARNING: pi.h:     check for missing prerequisite headers?
18778 configure: WARNING: pi.h: see the Autoconf documentation
18779 configure: WARNING: pi.h:     section "Present But Cannot Be Compiled"
18780 configure: WARNING: pi.h: proceeding with the preprocessor's result
18781 configure: WARNING: pi.h: in the future, the compiler will take precedence
18782 configure: WARNING:     ## -------------------------------------- ##
18783 configure: WARNING:     ## Report this to bug-example@@example.org ##
18784 configure: WARNING:     ## -------------------------------------- ##
18785 checking for pi.h... yes
18786 @end smallexample
18788 @noindent
18789 The proper way the handle this case is using the fourth argument
18790 (@pxref{Generic Headers}):
18792 @example
18793 $ @kbd{cat configure.ac}
18794 AC_INIT([Example], [1.0], [bug-example@@example.org])
18795 AC_CHECK_HEADERS([number.h pi.h], [], [],
18796 [[#ifdef HAVE_NUMBER_H
18797 # include <number.h>
18798 #endif
18800 $ @kbd{autoconf -Wall}
18801 $ @kbd{./configure}
18802 checking for gcc... gcc
18803 checking for C compiler default output... a.out
18804 checking whether the C compiler works... yes
18805 checking whether we are cross compiling... no
18806 checking for suffix of executables...
18807 checking for suffix of object files... o
18808 checking whether we are using the GNU C compiler... yes
18809 checking whether gcc accepts -g... yes
18810 checking for gcc option to accept ANSI C... none needed
18811 checking for number.h... yes
18812 checking for pi.h... yes
18813 @end example
18815 See @ref{Particular Headers}, for a list of headers with their
18816 prerequisite.
18818 @c ===================================================== History of Autoconf.
18820 @node History
18821 @chapter History of Autoconf
18822 @cindex History of autoconf
18824 You may be wondering, Why was Autoconf originally written?  How did it
18825 get into its present form?  (Why does it look like gorilla spit?)  If
18826 you're not wondering, then this chapter contains no information useful
18827 to you, and you might as well skip it.  If you @emph{are} wondering,
18828 then let there be light@enddots{}
18830 @menu
18831 * Genesis::                     Prehistory and naming of @command{configure}
18832 * Exodus::                      The plagues of M4 and Perl
18833 * Leviticus::                   The priestly code of portability arrives
18834 * Numbers::                     Growth and contributors
18835 * Deuteronomy::                 Approaching the promises of easy configuration
18836 @end menu
18838 @node Genesis
18839 @section Genesis
18841 In June 1991 I was maintaining many of the @acronym{GNU} utilities for the
18842 Free Software Foundation.  As they were ported to more platforms and
18843 more programs were added, the number of @option{-D} options that users
18844 had to select in the makefile (around 20) became burdensome.
18845 Especially for me---I had to test each new release on a bunch of
18846 different systems.  So I wrote a little shell script to guess some of
18847 the correct settings for the fileutils package, and released it as part
18848 of fileutils 2.0.  That @command{configure} script worked well enough that
18849 the next month I adapted it (by hand) to create similar @command{configure}
18850 scripts for several other @acronym{GNU} utilities packages.  Brian Berliner
18851 also adapted one of my scripts for his @acronym{CVS} revision control system.
18853 Later that summer, I learned that Richard Stallman and Richard Pixley
18854 were developing similar scripts to use in the @acronym{GNU} compiler tools;
18855 so I adapted my @command{configure} scripts to support their evolving
18856 interface: using the file name @file{Makefile.in} as the templates;
18857 adding @samp{+srcdir}, the first option (of many); and creating
18858 @file{config.status} files.
18860 @node Exodus
18861 @section Exodus
18863 As I got feedback from users, I incorporated many improvements, using
18864 Emacs to search and replace, cut and paste, similar changes in each of
18865 the scripts.  As I adapted more @acronym{GNU} utilities packages to use
18866 @command{configure} scripts, updating them all by hand became impractical.
18867 Rich Murphey, the maintainer of the @acronym{GNU} graphics utilities, sent me
18868 mail saying that the @command{configure} scripts were great, and asking if
18869 I had a tool for generating them that I could send him.  No, I thought,
18870 but I should!  So I started to work out how to generate them.  And the
18871 journey from the slavery of hand-written @command{configure} scripts to the
18872 abundance and ease of Autoconf began.
18874 Cygnus @command{configure}, which was being developed at around that time,
18875 is table driven; it is meant to deal mainly with a discrete number of
18876 system types with a small number of mainly unguessable features (such as
18877 details of the object file format).  The automatic configuration system
18878 that Brian Fox had developed for Bash takes a similar approach.  For
18879 general use, it seems to me a hopeless cause to try to maintain an
18880 up-to-date database of which features each variant of each operating
18881 system has.  It's easier and more reliable to check for most features on
18882 the fly---especially on hybrid systems that people have hacked on
18883 locally or that have patches from vendors installed.
18885 I considered using an architecture similar to that of Cygnus
18886 @command{configure}, where there is a single @command{configure} script that
18887 reads pieces of @file{configure.in} when run.  But I didn't want to have
18888 to distribute all of the feature tests with every package, so I settled
18889 on having a different @command{configure} made from each
18890 @file{configure.in} by a preprocessor.  That approach also offered more
18891 control and flexibility.
18893 I looked briefly into using the Metaconfig package, by Larry Wall,
18894 Harlan Stenn, and Raphael Manfredi, but I decided not to for several
18895 reasons.  The @command{Configure} scripts it produces are interactive,
18896 which I find quite inconvenient; I didn't like the ways it checked for
18897 some features (such as library functions); I didn't know that it was
18898 still being maintained, and the @command{Configure} scripts I had
18899 seen didn't work on many modern systems (such as System V R4 and NeXT);
18900 it wasn't flexible in what it could do in response to a feature's
18901 presence or absence; I found it confusing to learn; and it was too big
18902 and complex for my needs (I didn't realize then how much Autoconf would
18903 eventually have to grow).
18905 I considered using Perl to generate my style of @command{configure}
18906 scripts, but decided that M4 was better suited to the job of simple
18907 textual substitutions: it gets in the way less, because output is
18908 implicit.  Plus, everyone already has it.  (Initially I didn't rely on
18909 the @acronym{GNU} extensions to M4.)  Also, some of my friends at the
18910 University of Maryland had recently been putting M4 front ends on
18911 several programs, including @code{tvtwm}, and I was interested in trying
18912 out a new language.
18914 @node Leviticus
18915 @section Leviticus
18917 Since my @command{configure} scripts determine the system's capabilities
18918 automatically, with no interactive user intervention, I decided to call
18919 the program that generates them Autoconfig.  But with a version number
18920 tacked on, that name would be too long for old Unix file systems,
18921 so I shortened it to Autoconf.
18923 In the fall of 1991 I called together a group of fellow questers after
18924 the Holy Grail of portability (er, that is, alpha testers) to give me
18925 feedback as I encapsulated pieces of my handwritten scripts in M4 macros
18926 and continued to add features and improve the techniques used in the
18927 checks.  Prominent among the testers were Fran@,{c}ois Pinard, who came up
18928 with the idea of making an Autoconf shell script to run M4
18929 and check for unresolved macro calls; Richard Pixley, who suggested
18930 running the compiler instead of searching the file system to find
18931 include files and symbols, for more accurate results; Karl Berry, who
18932 got Autoconf to configure @TeX{} and added the macro index to the
18933 documentation; and Ian Lance Taylor, who added support for creating a C
18934 header file as an alternative to putting @option{-D} options in a
18935 makefile, so he could use Autoconf for his @acronym{UUCP} package.
18936 The alpha testers cheerfully adjusted their files again and again as the
18937 names and calling conventions of the Autoconf macros changed from
18938 release to release.  They all contributed many specific checks, great
18939 ideas, and bug fixes.
18941 @node Numbers
18942 @section Numbers
18944 In July 1992, after months of alpha testing, I released Autoconf 1.0,
18945 and converted many @acronym{GNU} packages to use it.  I was surprised by how
18946 positive the reaction to it was.  More people started using it than I
18947 could keep track of, including people working on software that wasn't
18948 part of the @acronym{GNU} Project (such as TCL, FSP, and Kerberos V5).
18949 Autoconf continued to improve rapidly, as many people using the
18950 @command{configure} scripts reported problems they encountered.
18952 Autoconf turned out to be a good torture test for M4 implementations.
18953 Unix M4 started to dump core because of the length of the
18954 macros that Autoconf defined, and several bugs showed up in @acronym{GNU}
18955 M4 as well.  Eventually, we realized that we needed to use some
18956 features that only @acronym{GNU} M4 has.  4.3@acronym{BSD} M4, in
18957 particular, has an impoverished set of builtin macros; the System V
18958 version is better, but still doesn't provide everything we need.
18960 More development occurred as people put Autoconf under more stresses
18961 (and to uses I hadn't anticipated).  Karl Berry added checks for X11.
18962 david zuhn contributed C++ support.  Fran@,{c}ois Pinard made it diagnose
18963 invalid arguments.  Jim Blandy bravely coerced it into configuring
18964 @acronym{GNU} Emacs, laying the groundwork for several later improvements.
18965 Roland McGrath got it to configure the @acronym{GNU} C Library, wrote the
18966 @command{autoheader} script to automate the creation of C header file
18967 templates, and added a @option{--verbose} option to @command{configure}.
18968 Noah Friedman added the @option{--autoconf-dir} option and
18969 @code{AC_MACRODIR} environment variable.  (He also coined the term
18970 @dfn{autoconfiscate} to mean ``adapt a software package to use
18971 Autoconf''.)  Roland and Noah improved the quoting protection in
18972 @code{AC_DEFINE} and fixed many bugs, especially when I got sick of
18973 dealing with portability problems from February through June, 1993.
18975 @node Deuteronomy
18976 @section Deuteronomy
18978 A long wish list for major features had accumulated, and the effect of
18979 several years of patching by various people had left some residual
18980 cruft.  In April 1994, while working for Cygnus Support, I began a major
18981 revision of Autoconf.  I added most of the features of the Cygnus
18982 @command{configure} that Autoconf had lacked, largely by adapting the
18983 relevant parts of Cygnus @command{configure} with the help of david zuhn
18984 and Ken Raeburn.  These features include support for using
18985 @file{config.sub}, @file{config.guess}, @option{--host}, and
18986 @option{--target}; making links to files; and running @command{configure}
18987 scripts in subdirectories.  Adding these features enabled Ken to convert
18988 @acronym{GNU} @code{as}, and Rob Savoye to convert Deja@acronym{GNU}, to using
18989 Autoconf.
18991 I added more features in response to other peoples' requests.  Many
18992 people had asked for @command{configure} scripts to share the results of
18993 the checks between runs, because (particularly when configuring a large
18994 source tree, like Cygnus does) they were frustratingly slow.  Mike
18995 Haertel suggested adding site-specific initialization scripts.  People
18996 distributing software that had to unpack on MS-DOS asked for a way to
18997 override the @file{.in} extension on the file names, which produced file
18998 names like @file{config.h.in} containing two dots.  Jim Avera did an
18999 extensive examination of the problems with quoting in @code{AC_DEFINE}
19000 and @code{AC_SUBST}; his insights led to significant improvements.
19001 Richard Stallman asked that compiler output be sent to @file{config.log}
19002 instead of @file{/dev/null}, to help people debug the Emacs
19003 @command{configure} script.
19005 I made some other changes because of my dissatisfaction with the quality
19006 of the program.  I made the messages showing results of the checks less
19007 ambiguous, always printing a result.  I regularized the names of the
19008 macros and cleaned up coding style inconsistencies.  I added some
19009 auxiliary utilities that I had developed to help convert source code
19010 packages to use Autoconf.  With the help of Fran@,{c}ois Pinard, I made
19011 the macros not interrupt each others' messages.  (That feature revealed
19012 some performance bottlenecks in @acronym{GNU} M4, which he hastily
19013 corrected!)  I reorganized the documentation around problems people want
19014 to solve.  And I began a test suite, because experience had shown that
19015 Autoconf has a pronounced tendency to regress when we change it.
19017 Again, several alpha testers gave invaluable feedback, especially
19018 Fran@,{c}ois Pinard, Jim Meyering, Karl Berry, Rob Savoye, Ken Raeburn,
19019 and Mark Eichin.
19021 Finally, version 2.0 was ready.  And there was much rejoicing.  (And I
19022 have free time again.  I think.  Yeah, right.)
19025 @c ========================================================== Appendices
19027 @node Copying This Manual
19028 @appendix Copying This Manual
19029 @cindex License
19031 @menu
19032 * GNU Free Documentation License::  License for copying this manual
19033 @end menu
19035 @include fdl.texi
19037 @node Indices
19038 @appendix Indices
19040 @menu
19041 * Environment Variable Index::  Index of environment variables used
19042 * Output Variable Index::       Index of variables set in output files
19043 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
19044 * Autoconf Macro Index::        Index of Autoconf macros
19045 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
19046 * Autotest Macro Index::        Index of Autotest macros
19047 * Program & Function Index::    Index of those with portability problems
19048 * Concept Index::               General index
19049 @end menu
19051 @node Environment Variable Index
19052 @appendixsec Environment Variable Index
19054 This is an alphabetical list of the environment variables that Autoconf
19055 checks.
19057 @printindex ev
19059 @node Output Variable Index
19060 @appendixsec Output Variable Index
19062 This is an alphabetical list of the variables that Autoconf can
19063 substitute into files that it creates, typically one or more
19064 makefiles.  @xref{Setting Output Variables}, for more information
19065 on how this is done.
19067 @printindex ov
19069 @node Preprocessor Symbol Index
19070 @appendixsec Preprocessor Symbol Index
19072 This is an alphabetical list of the C preprocessor symbols that the
19073 Autoconf macros define.  To work with Autoconf, C source code needs to
19074 use these names in @code{#if} or @code{#ifdef} directives.
19076 @printindex cv
19078 @node Autoconf Macro Index
19079 @appendixsec Autoconf Macro Index
19081 This is an alphabetical list of the Autoconf macros.
19082 @ifset shortindexflag
19083 To make the list easier to use, the macros are listed without their
19084 preceding @samp{AC_}.
19085 @end ifset
19087 @printindex AC
19089 @node M4 Macro Index
19090 @appendixsec M4 Macro Index
19092 This is an alphabetical list of the M4, M4sugar, and M4sh macros.
19093 @ifset shortindexflag
19094 To make the list easier to use, the macros are listed without their
19095 preceding @samp{m4_} or @samp{AS_}.
19096 @end ifset
19098 @printindex MS
19100 @node Autotest Macro Index
19101 @appendixsec Autotest Macro Index
19103 This is an alphabetical list of the Autotest macros.
19104 @ifset shortindexflag
19105 To make the list easier to use, the macros are listed without their
19106 preceding @samp{AT_}.
19107 @end ifset
19109 @printindex AT
19111 @node Program & Function Index
19112 @appendixsec Program and Function Index
19114 This is an alphabetical list of the programs and functions which
19115 portability is discussed in this document.
19117 @printindex pr
19119 @node Concept Index
19120 @appendixsec Concept Index
19122 This is an alphabetical list of the files, tools, and concepts
19123 introduced in this document.
19125 @printindex cp
19127 @bye
19129 @c  LocalWords:  texinfo setfilename autoconf texi settitle setchapternewpage
19130 @c  LocalWords:  setcontentsaftertitlepage finalout ARG ovar varname dvar acx
19131 @c  LocalWords:  makeinfo dvi defcodeindex ev ov CPP cv Autotest mv defindex fn
19132 @c  LocalWords:  shortindexflag iftex ifset acindex ACindex ifclear ahindex fu
19133 @c  LocalWords:  asindex MSindex atindex ATindex auindex hdrindex prindex FIXME
19134 @c  LocalWords:  msindex alloca fnindex Aaarg indices FSF's dircategory ifnames
19135 @c  LocalWords:  direntry autoscan autoreconf autoheader autoupdate config FDs
19136 @c  LocalWords:  testsuite titlepage Elliston Demaille vskip filll ifnottex hmm
19137 @c  LocalWords:  insertcopying Autoconf's detailmenu Automake Libtool Posix ois
19138 @c  LocalWords:  Systemology Checkpointing Changequote INTERCAL changequote dfn
19139 @c  LocalWords:  Quadrigraphs builtins Shellology acconfig Bugward LIBOBJ Imake
19140 @c  LocalWords:  LIBOBJS IFELSE cindex flushright Pinard Metaconfig uref Simons
19141 @c  LocalWords:  distclean uninstall noindent versioning Tromey dir
19142 @c  LocalWords:  SAMS samp aclocal acsite underquoted emph itemx prepend SUBST
19143 @c  LocalWords:  evindex automake Gettext autopoint gettext symlink libtoolize
19144 @c  LocalWords:  defmac INIT tarname ovindex cvindex BUGREPORT PREREQ asis PROG
19145 @c  LocalWords:  SRCDIR srcdir globbing afterwards cmds foos fooo foooo init cd
19146 @c  LocalWords:  builddir timestamp src Imakefile chmod defvar CFLAGS CPPFLAGS
19147 @c  LocalWords:  CXXFLAGS DEFS DHAVE defvarx FCFLAGS FFLAGS LDFLAGS bindir GCC
19148 @c  LocalWords:  datadir datarootdir docdir dvidir htmldir libdir ifnothtml kbd
19149 @c  LocalWords:  includedir infodir libexecdir localedir localstatedir mandir
19150 @c  LocalWords:  oldincludedir pdfdir PDF psdir PostScript sbindir sysconfdir
19151 @c  LocalWords:  sharedstatedir DDATADIR sed tmp pkgdatadir VPATH conf unistd
19152 @c  LocalWords:  undef endif builtin FUNCS ifndef STACKSEG getb GETB YMP fubar
19153 @c  LocalWords:  PRE dest SUBDIRS subdirs fi struct STDC stdlib stddef INTTYPES
19154 @c  LocalWords:  inttypes STDINT stdint AWK AIX Solaris NeXT env EGREP FGREP yy
19155 @c  LocalWords:  LEXLIB YYTEXT lfl nonportable Automake's LN RANLIB byacc INETD
19156 @c  LocalWords:  inetd prog PROGS progs ranlib lmp lXt lX nsl gethostbyname UX
19157 @c  LocalWords:  NextStep isinf isnan glibc IRIX sunmath lm lsunmath pre sizeof
19158 @c  LocalWords:  ld inline malloc putenv setenv FreeBSD realloc SunOS MinGW
19159 @c  LocalWords:  snprintf vsnprintf sprintf vsprintf sscanf gcc strerror ifdef
19160 @c  LocalWords:  strnlen sysconf PAGESIZE unsetenv va fallback memcpy dst FUNC
19161 @c  LocalWords:  PowerPC GNUC libPW pragma Olibcalls CHOWN chown CLOSEDIR VFORK
19162 @c  LocalWords:  closedir FNMATCH fnmatch vfork FSEEKO LARGEFILE fseeko SVR sc
19163 @c  LocalWords:  largefile GETGROUPS getgroups GETLOADAVG DGUX UMAX NLIST KMEM
19164 @c  LocalWords:  GETLODAVG SETGID getloadavg nlist GETMNTENT irix
19165 @c  LocalWords:  getmntent UnixWare GETPGRP getpgid getpgrp Posix's pid LSTAT
19166 @c  LocalWords:  lstat rpl MEMCMP memcmp OpenStep MBRTOWC mbrtowc MKTIME mktime
19167 @c  LocalWords:  localtime MMAP mmap OBSTACK obstack obstacks ARGTYPES timeval
19168 @c  LocalWords:  SETPGRP setpgrp defmacx Hurd SETVBUF setvbuf STRCOLL strcoll
19169 @c  LocalWords:  STRTOD strtod DECL STRFTIME strftime SCO UTIME utime VPRINTF
19170 @c  LocalWords:  DOPRNT vprintf doprnt sp unfixable LIBSOURCE LIBSOURCES Eggert
19171 @c  LocalWords:  linux netinet ia Tru XFree DIRENT NDIR dirent ndir multitable
19172 @c  LocalWords:  NAMLEN strlen namlen MKDEV SYSMACROS makedev RESOLV resolv DNS
19173 @c  LocalWords:  inet structs NAMESER arpa NETDB netdb UTekV UTS autom GCC's kB
19174 @c  LocalWords:  STDBOOL BOOL stdbool conformant cplusplus bool Bool stdarg tm
19175 @c  LocalWords:  ctype strchr strrchr rindex bcopy memmove memchr WEXITSTATUS
19176 @c  LocalWords:  WIFEXITED TIOCGWINSZ GWINSZ termios preprocess preprocessable
19177 @c  LocalWords:  DECLS strdup calloc BLKSIZE blksize RDEV rdev TZNAME tzname pw
19178 @c  LocalWords:  passwd gecos pwd MBSTATE mbstate wchar RETSIGTYPE hup UID uid
19179 @c  LocalWords:  gid ptrdiff uintmax EXEEXT OBJEXT Ae Onolimit conftest AXP str
19180 @c  LocalWords:  ALIGNOF WERROR Werror cpp HP's WorkShop egcs un fied stdc CXX
19181 @c  LocalWords:  varargs BIGENDIAN Endianness SPARC endianness grep'ed CONST FC
19182 @c  LocalWords:  const STRINGIZE stringizing PARAMS unprotoize protos KCC cxx
19183 @c  LocalWords:  xlC aCC CXXCPP FREEFORM xlf FLIBS FCLIBS ish SRCEXT XTRA LFS
19184 @c  LocalWords:  ISC lcposix MINIX Minix conditionalized inlines hw dD confdefs
19185 @c  LocalWords:  fputs stdout PREPROC ar UFS HFS QNX realtime fstype STATVFS se
19186 @c  LocalWords:  statvfs STATFS statfs func machfile hdr lelf raboof DEFUN GTK
19187 @c  LocalWords:  GTKMM Grmph ified ine defn baz EOF qar Ahhh changecom algol io
19188 @c  LocalWords:  changeword quadrigraphs quadrigraph dnl SGI atoi overquoting
19189 @c  LocalWords:  Aas Wcross sep args namespace undefine bpatsubst popdef dquote
19190 @c  LocalWords:  bregexp Overquote overquotation meisch maisch meische maische
19191 @c  LocalWords:  miscian DIRNAME dirname MKDIR CATFILE XMKMF TRAVOLTA celsius
19192 @c  LocalWords:  EMX emxos Emacsen Korn DYNIX subshell posix Ksh ksh Pdksh Zsh
19193 @c  LocalWords:  pdksh zsh Allbery Lipe Kubota UWS zorglub stderr eval esac lfn
19194 @c  LocalWords:  drivespec Posixy DJGPP doschk prettybird LPT pfew Zsh's yu yaa
19195 @c  LocalWords:  yM uM aM firebird IP subdir misparses ok Unpatched abc bc zA
19196 @c  LocalWords:  CDPATH DUALCASE LINENO prepass Subshells lineno NULLCMD cmp wc
19197 @c  LocalWords:  MAILPATH scanset arg NetBSD Almquist printf expr cp
19198 @c  LocalWords:  Oliva awk Aaaaarg cmd regex xfoo GNV OpenVMS VM
19199 @c  LocalWords:  sparc Proulx SysV nbar nfoo maxdepth acdilrtu TWG mc
19200 @c  LocalWords:  mkdir exe uname OpenBSD Fileutils mktemp umask TMPDIR guid os
19201 @c  LocalWords:  fooXXXXXX Unicos parenthesization utimes hpux hppa unescaped
19202 @c  LocalWords:  pmake DOS's gmake ifoo DESTDIR autoconfiscated pc coff mips gg
19203 @c  LocalWords:  dec ultrix cpu wildcards rpcc rdtsc powerpc readline
19204 @c  LocalWords:  withval vxworks gless localcache usr LOFF loff CYGWIN Cygwin
19205 @c  LocalWords:  cygwin SIGLIST siglist SYSNDIR SYSDIR ptx lseq rusage elif MSC
19206 @c  LocalWords:  lfoo POUNDBANG lsun NIS getpwnam SYSCALLS RSH INTL lintl aix
19207 @c  LocalWords:  intl lx ldir syslog bsd EPI toolchain netbsd objext de KNR nn
19208 @c  LocalWords:  fication LTLIBOBJS Wdiff TESTDIR atconfig atlocal akim XFAIL
19209 @c  LocalWords:  ChangeLog prepended errexit smallexample TESTSUITEFLAGS GPL er
19210 @c  LocalWords:  installcheck autotest indir Pixley Bothner Eichin Kerberos adl
19211 @c  LocalWords:  DISTCLEANFILES preprocessor's fileutils Stallman Murphey Stenn
19212 @c  LocalWords:  Manfredi Autoconfig TCL FSP david zuhn Blandy MACRODIR Raeburn
19213 @c  LocalWords:  autoconfiscate Savoye Haertel Avera Meyering fdl appendixsec
19214 @c  LocalWords:  printindex american LIBOBJDIR LibdirTest ERLCFLAGS OBJCFLAGS
19215 @c  LocalWords:  VER Gnulib online xyes strcpy TYPEOF typeof OBJC objcc objc ln
19216 @c  LocalWords:  GOBJC OBJCCPP OTP ERLC erl valloc decr dumpdef errprint incr
19217 @c  LocalWords:  esyscmd len maketemp pushdef substr syscmd sysval translit txt
19218 @c  LocalWords:  sinclude foreach myvar tolower toupper uniq BASENAME STDIN
19219 @c  LocalWords:  Dynix descrips basename aname cname macroexpands xno xcheck
19220 @c  LocalWords:  LIBREADLINE lreadline lncurses libreadline
19222 @c Local Variables:
19223 @c fill-column: 72
19224 @c ispell-local-dictionary: "american"
19225 @c indent-tabs-mode: nil
19226 @c whitespace-check-buffer-indent: nil
19227 @c End: