manual: compiler flags -D and -L should not be followed by space
[autoconf.git] / doc / autoconf.texi
blob4202108f9487a4c49b3e5e1e58f517fef2c60a3b
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)
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{]}@c
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{]}@c
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 a cache variable index.
56 @defcodeindex CA
57 @c Define an Autoconf macro index that @defmac doesn't write to.
58 @defcodeindex AC
59 @c Define an Autotest macro index that @defmac doesn't write to.
60 @defcodeindex AT
61 @c Define an M4sugar macro index that @defmac doesn't write to.
62 @defcodeindex MS
63 @c Define an index for *foreign* programs: `mv' etc.  Used for the
64 @c portability sections and so on.
65 @defindex pr
67 @c shortindexflag
68 @c --------------
69 @c Shall we factor AC_ out of the Autoconf macro index etc.?
70 @iftex
71 @set shortindexflag
72 @end iftex
74 @c @acindex{MACRO}
75 @c ---------------
76 @c Registering an AC_\MACRO\.
77 @ifset shortindexflag
78 @macro acindex{macro}
79 @ACindex \macro\
81 @end macro
82 @end ifset
83 @ifclear shortindexflag
84 @macro acindex{macro}
85 @ACindex AC_\macro\
86 @end macro
87 @end ifclear
89 @c @ahindex{MACRO}
90 @c ---------------
91 @c Registering an AH_\MACRO\.
92 @macro ahindex{macro}
93 @ACindex AH_\macro\
95 @end macro
97 @c @asindex{MACRO}
98 @c ---------------
99 @c Registering an AS_\MACRO\.
100 @ifset shortindexflag
101 @macro asindex{macro}
102 @MSindex \macro\
104 @end macro
105 @end ifset
106 @ifclear shortindexflag
107 @macro asindex{macro}
108 @MSindex AS_\macro\
109 @end macro
110 @end ifclear
112 @c @atindex{MACRO}
113 @c ---------------
114 @c Registering an AT_\MACRO\.
115 @ifset shortindexflag
116 @macro atindex{macro}
117 @ATindex \macro\
119 @end macro
120 @end ifset
121 @ifclear shortindexflag
122 @macro atindex{macro}
123 @ATindex AT_\macro\
124 @end macro
125 @end ifclear
127 @c @auindex{MACRO}
128 @c ---------------
129 @c Registering an AU_\MACRO\.
130 @macro auindex{macro}
131 @ACindex AU_\macro\
133 @end macro
135 @c @hdrindex{MACRO}
136 @c ----------------
137 @c Indexing a header.
138 @macro hdrindex{macro}
139 @prindex @file{\macro\}
141 @end macro
143 @c @msindex{MACRO}
144 @c ---------------
145 @c Registering an m4_\MACRO\.
146 @ifset shortindexflag
147 @macro msindex{macro}
148 @MSindex \macro\
150 @end macro
151 @end ifset
152 @ifclear shortindexflag
153 @macro msindex{macro}
154 @MSindex m4_\macro\
155 @end macro
156 @end ifclear
159 @c @caindex{VARIABLE}
160 @c ------------------
161 @c Registering an ac_cv_\VARIABLE\ cache variable.
162 @ifset shortindexflag
163 @macro caindex{macro}
164 @CAindex \macro\
165 @end macro
166 @end ifset
167 @ifclear shortindexflag
168 @macro caindex{macro}
169 @CAindex ac_cv_\macro\
170 @end macro
171 @end ifclear
173 @c Define an index for functions: `alloca' etc.  Used for the
174 @c portability sections and so on.  We can't use `fn' (aka `fnindex),
175 @c since `@defmac' goes into it => we'd get all the macros too.
177 @c   FIXME: Aaarg!  It seems there are too many indices for TeX :(
179 @c   ! No room for a new @write .
180 @c   l.112 @defcodeindex fu
182 @c   so don't define yet another one :(  Just put some tags before each
183 @c   @prindex which is actually a @funindex.
185 @c   @defcodeindex fu
188 @c   @c Put the programs and functions into their own index.
189 @c   @syncodeindex fu pr
191 @comment %**end of header
192 @comment ========================================================
194 @copying
196 This manual (@value{UPDATED}) is for GNU Autoconf
197 (version @value{VERSION}),
198 a package for creating scripts to configure source code packages using
199 templates and an M4 macro package.
201 Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
202 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
203 Foundation, Inc.
205 @quotation
206 Permission is granted to copy, distribute and/or modify this document
207 under the terms of the GNU Free Documentation License,
208 Version 1.3 or any later version published by the Free Software
209 Foundation; with no Invariant Sections, with the Front-Cover texts
210 being ``A GNU Manual,'' and with the Back-Cover Texts as in
211 (a) below.  A copy of the license is included in the section entitled
212 ``GNU Free Documentation License.''
214 (a) The FSF's Back-Cover Text is: ``You have the freedom to copy and
215 modify this GNU manual.  Buying copies from the FSF
216 supports it in developing GNU and promoting software
217 freedom.''
218 @end quotation
219 @end copying
223 @dircategory Software development
224 @direntry
225 * Autoconf: (autoconf).         Create source code configuration scripts.
226 @end direntry
228 @dircategory Individual utilities
229 @direntry
230 * autoscan: (autoconf)autoscan Invocation.
231                                 Semi-automatic @file{configure.ac} writing
232 * ifnames: (autoconf)ifnames Invocation.        Listing conditionals in source.
233 * autoconf-invocation: (autoconf)autoconf Invocation.
234                                 How to create configuration scripts
235 * autoreconf: (autoconf)autoreconf Invocation.
236                                 Remaking multiple @command{configure} scripts
237 * autoheader: (autoconf)autoheader Invocation.
238                                 How to create configuration templates
239 * autom4te: (autoconf)autom4te Invocation.
240                                 The Autoconf executables backbone
241 * configure: (autoconf)configure Invocation.    Configuring a package.
242 * autoupdate: (autoconf)autoupdate Invocation.
243                                 Automatic update of @file{configure.ac}
244 * config.status: (autoconf)config.status Invocation. Recreating configurations.
245 * testsuite: (autoconf)testsuite Invocation.    Running an Autotest test suite.
246 @end direntry
248 @titlepage
249 @title Autoconf
250 @subtitle Creating Automatic Configuration Scripts
251 @subtitle for version @value{VERSION}, @value{UPDATED}
252 @author David MacKenzie
253 @author Ben Elliston
254 @author Akim Demaille
255 @page
256 @vskip 0pt plus 1filll
257 @insertcopying
258 @end titlepage
260 @contents
263 @ifnottex
264 @node Top
265 @top Autoconf
266 @insertcopying
267 @end ifnottex
269 @c The master menu, created with texinfo-master-menu, goes here.
271 @menu
272 * Introduction::                Autoconf's purpose, strengths, and weaknesses
273 * The GNU Build System::        A set of tools for portable software packages
274 * Making configure Scripts::    How to organize and produce Autoconf scripts
275 * Setup::                       Initialization and output
276 * Existing Tests::              Macros that check for particular features
277 * Writing Tests::               How to write new feature checks
278 * Results::                     What to do with results from feature checks
279 * Programming in M4::           Layers on top of which Autoconf is written
280 * Programming in M4sh::         Shell portability layer
281 * Writing Autoconf Macros::     Adding new macros to Autoconf
282 * Portable Shell::              Shell script portability pitfalls
283 * Portable Make::               Makefile portability pitfalls
284 * Portable C and C++::          C and C++ portability pitfalls
285 * Manual Configuration::        Selecting features that can't be guessed
286 * Site Configuration::          Local defaults for @command{configure}
287 * Running configure Scripts::   How to use the Autoconf output
288 * config.status Invocation::    Recreating a configuration
289 * Obsolete Constructs::         Kept for backward compatibility
290 * Using Autotest::              Creating portable test suites
291 * FAQ::                         Frequent Autoconf Questions, with answers
292 * History::                     History of Autoconf
293 * GNU Free Documentation License::  License for copying this manual
294 * Indices::                     Indices of symbols, concepts, etc.
296 @detailmenu
297  --- The Detailed Node Listing ---
299 The GNU Build System
301 * Automake::                    Escaping makefile hell
302 * Gnulib::                      The GNU portability library
303 * Libtool::                     Building libraries portably
304 * Pointers::                    More info on the GNU build system
306 Making @command{configure} Scripts
308 * Writing Autoconf Input::      What to put in an Autoconf input file
309 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
310 * ifnames Invocation::          Listing the conditionals in source code
311 * autoconf Invocation::         How to create configuration scripts
312 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
314 Writing @file{configure.ac}
316 * Shell Script Compiler::       Autoconf as solution of a problem
317 * Autoconf Language::           Programming in Autoconf
318 * Autoconf Input Layout::       Standard organization of @file{configure.ac}
320 Initialization and Output Files
322 * Initializing configure::      Option processing etc.
323 * Versioning::                  Dealing with Autoconf versions
324 * Notices::                     Copyright, version numbers in @command{configure}
325 * Input::                       Where Autoconf should find files
326 * Output::                      Outputting results from the configuration
327 * Configuration Actions::       Preparing the output based on results
328 * Configuration Files::         Creating output files
329 * Makefile Substitutions::      Using output variables in makefiles
330 * Configuration Headers::       Creating a configuration header file
331 * Configuration Commands::      Running arbitrary instantiation commands
332 * Configuration Links::         Links depending on the configuration
333 * Subdirectories::              Configuring independent packages together
334 * Default Prefix::              Changing the default installation prefix
336 Substitutions in Makefiles
338 * Preset Output Variables::     Output variables that are always set
339 * Installation Directory Variables::  Other preset output variables
340 * Changed Directory Variables:: Warnings about @file{datarootdir}
341 * Build Directories::           Supporting multiple concurrent compiles
342 * Automatic Remaking::          Makefile rules for configuring
344 Configuration Header Files
346 * Header Templates::            Input for the configuration headers
347 * autoheader Invocation::       How to create configuration templates
348 * Autoheader Macros::           How to specify CPP templates
350 Existing Tests
352 * Common Behavior::             Macros' standard schemes
353 * Alternative Programs::        Selecting between alternative programs
354 * Files::                       Checking for the existence of files
355 * Libraries::                   Library archives that might be missing
356 * Library Functions::           C library functions that might be missing
357 * Header Files::                Header files that might be missing
358 * Declarations::                Declarations that may be missing
359 * Structures::                  Structures or members that might be missing
360 * Types::                       Types that might be missing
361 * Compilers and Preprocessors::  Checking for compiling programs
362 * System Services::             Operating system services
363 * Posix Variants::              Special kludges for specific Posix variants
364 * Erlang Libraries::            Checking for the existence of Erlang libraries
366 Common Behavior
368 * Standard Symbols::            Symbols defined by the macros
369 * Default Includes::            Includes used by the generic macros
371 Alternative Programs
373 * Particular Programs::         Special handling to find certain programs
374 * Generic Programs::            How to find other programs
376 Library Functions
378 * Function Portability::        Pitfalls with usual functions
379 * Particular Functions::        Special handling to find certain functions
380 * Generic Functions::           How to find other functions
382 Header Files
384 * Header Portability::          Collected knowledge on common headers
385 * Particular Headers::          Special handling to find certain headers
386 * Generic Headers::             How to find other headers
388 Declarations
390 * Particular Declarations::     Macros to check for certain declarations
391 * Generic Declarations::        How to find other declarations
393 Structures
395 * Particular Structures::       Macros to check for certain structure members
396 * Generic Structures::          How to find other structure members
398 Types
400 * Particular Types::            Special handling to find certain types
401 * Generic Types::               How to find other types
403 Compilers and Preprocessors
405 * Specific Compiler Characteristics::  Some portability issues
406 * Generic Compiler Characteristics::  Language independent tests and features
407 * C Compiler::                  Checking its characteristics
408 * C++ Compiler::                Likewise
409 * Objective C Compiler::        Likewise
410 * Objective C++ Compiler::      Likewise
411 * Erlang Compiler and Interpreter::  Likewise
412 * Fortran Compiler::            Likewise
414 Writing Tests
416 * Language Choice::             Selecting which language to use for testing
417 * Writing Test Programs::       Forging source files for compilers
418 * Running the Preprocessor::    Detecting preprocessor symbols
419 * Running the Compiler::        Detecting language or header features
420 * Running the Linker::          Detecting library features
421 * Runtime::                     Testing for runtime features
422 * Systemology::                 A zoology of operating systems
423 * Multiple Cases::              Tests for several possible values
425 Writing Test Programs
427 * Guidelines::                  General rules for writing test programs
428 * Test Functions::              Avoiding pitfalls in test programs
429 * Generating Sources::          Source program boilerplate
431 Results of Tests
433 * Defining Symbols::            Defining C preprocessor symbols
434 * Setting Output Variables::    Replacing variables in output files
435 * Special Chars in Variables::  Characters to beware of in variables
436 * Caching Results::             Speeding up subsequent @command{configure} runs
437 * Printing Messages::           Notifying @command{configure} users
439 Caching Results
441 * Cache Variable Names::        Shell variables used in caches
442 * Cache Files::                 Files @command{configure} uses for caching
443 * Cache Checkpointing::         Loading and saving the cache file
445 Programming in M4
447 * M4 Quotation::                Protecting macros from unwanted expansion
448 * Using autom4te::              The Autoconf executables backbone
449 * Programming in M4sugar::      Convenient pure M4 macros
450 * Debugging via autom4te::      Figuring out what M4 was doing
452 Programming in M4sh
454 * Common Shell Constructs::     Portability layer for common shell constructs
455 * Polymorphic Variables::       Support for indirect variable names
456 * Initialization Macros::       Macros to establish a sane shell environment
457 * File Descriptor Macros::      File descriptor macros for input and output
459 M4 Quotation
461 * Active Characters::           Characters that change the behavior of M4
462 * One Macro Call::              Quotation and one macro call
463 * Quoting and Parameters::      M4 vs. shell parameters
464 * Quotation and Nested Macros::  Macros calling macros
465 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
466 * Quadrigraphs::                Another way to escape special characters
467 * Balancing Parentheses::       Dealing with unbalanced parentheses
468 * Quotation Rule Of Thumb::     One parenthesis, one quote
470 Using @command{autom4te}
472 * autom4te Invocation::         A GNU M4 wrapper
473 * Customizing autom4te::        Customizing the Autoconf package
475 Programming in M4sugar
477 * Redefined M4 Macros::         M4 builtins changed in M4sugar
478 * Diagnostic Macros::           Diagnostic messages from M4sugar
479 * Diversion support::           Diversions in M4sugar
480 * Conditional constructs::      Conditions in M4
481 * Looping constructs::          Iteration in M4
482 * Evaluation Macros::           More quotation and evaluation control
483 * Text processing Macros::      String manipulation in M4
484 * Number processing Macros::    Arithmetic computation in M4
485 * Set manipulation Macros::     Set manipulation in M4
486 * Forbidden Patterns::          Catching unexpanded macros
488 Writing Autoconf Macros
490 * Macro Definitions::           Basic format of an Autoconf macro
491 * Macro Names::                 What to call your new macros
492 * Reporting Messages::          Notifying @command{autoconf} users
493 * Dependencies Between Macros::  What to do when macros depend on other macros
494 * Obsoleting Macros::           Warning about old ways of doing things
495 * Coding Style::                Writing Autoconf macros @`a la Autoconf
497 Dependencies Between Macros
499 * Prerequisite Macros::         Ensuring required information
500 * Suggested Ordering::          Warning about possible ordering problems
501 * One-Shot Macros::             Ensuring a macro is called only once
503 Portable Shell Programming
505 * Shellology::                  A zoology of shells
506 * Here-Documents::              Quirks and tricks
507 * File Descriptors::            FDs and redirections
508 * File System Conventions::     File names
509 * Shell Pattern Matching::      Pattern matching
510 * Shell Substitutions::         Variable and command expansions
511 * Assignments::                 Varying side effects of assignments
512 * Parentheses::                 Parentheses in shell scripts
513 * Slashes::                     Slashes in shell scripts
514 * Special Shell Variables::     Variables you should not change
515 * Shell Functions::             What to look out for if you use them
516 * Limitations of Builtins::     Portable use of not so portable /bin/sh
517 * Limitations of Usual Tools::  Portable use of portable tools
519 Portable Make Programming
521 * $< in Ordinary Make Rules::   $< in ordinary rules
522 * Failure in Make Rules::       Failing portably in rules
523 * Special Chars in Names::      Special Characters in Macro Names
524 * Backslash-Newline-Newline::   Empty last lines in macro definitions
525 * Backslash-Newline Comments::  Spanning comments across line boundaries
526 * Long Lines in Makefiles::     Line length limitations
527 * Macros and Submakes::         @code{make macro=value} and submakes
528 * The Make Macro MAKEFLAGS::    @code{$(MAKEFLAGS)} portability issues
529 * The Make Macro SHELL::        @code{$(SHELL)} portability issues
530 * Parallel Make::               Parallel @command{make} quirks
531 * Comments in Make Rules::      Other problems with Make comments
532 * Newlines in Make Rules::      Using literal newlines in rules
533 * obj/ and Make::               Don't name a subdirectory @file{obj}
534 * make -k Status::              Exit status of @samp{make -k}
535 * VPATH and Make::              @code{VPATH} woes
536 * Single Suffix Rules::         Single suffix rules and separated dependencies
537 * Timestamps and Make::         Subsecond timestamp resolution
539 @code{VPATH} and Make
541 * Variables listed in VPATH::   @code{VPATH} must be literal on ancient hosts
542 * VPATH and Double-colon::      Problems with @samp{::} on ancient hosts
543 * $< in Explicit Rules::        @code{$<} does not work in ordinary rules
544 * Automatic Rule Rewriting::    @code{VPATH} goes wild on Solaris
545 * Tru64 Directory Magic::       @command{mkdir} goes wild on Tru64
546 * Make Target Lookup::          More details about @code{VPATH} lookup
548 Portable C and C++ Programming
550 * Varieties of Unportability::  How to make your programs unportable
551 * Integer Overflow::            When integers get too large
552 * Preprocessor Arithmetic::     @code{#if} expression problems
553 * Null Pointers::               Properties of null pointers
554 * Buffer Overruns::             Subscript errors and the like
555 * Volatile Objects::            @code{volatile} and signals
556 * Floating Point Portability::  Portable floating-point arithmetic
557 * Exiting Portably::            Exiting and the exit status
559 Manual Configuration
561 * Specifying Target Triplets::  Specifying target triplets
562 * Canonicalizing::              Getting the canonical system type
563 * Using System Type::           What to do with the system type
565 Site Configuration
567 * Help Formatting::             Customizing @samp{configure --help}
568 * External Software::           Working with other optional software
569 * Package Options::             Selecting optional features
570 * Pretty Help Strings::         Formatting help string
571 * Option Checking::             Controlling checking of @command{configure} options
572 * Site Details::                Configuring site details
573 * Transforming Names::          Changing program names when installing
574 * Site Defaults::               Giving @command{configure} local defaults
576 Transforming Program Names When Installing
578 * Transformation Options::      @command{configure} options to transform names
579 * Transformation Examples::     Sample uses of transforming names
580 * Transformation Rules::        Makefile uses of transforming names
582 Running @command{configure} Scripts
584 * Basic Installation::          Instructions for typical cases
585 * Compilers and Options::       Selecting compilers and optimization
586 * Multiple Architectures::      Compiling for multiple architectures at once
587 * Installation Names::          Installing in different directories
588 * Optional Features::           Selecting optional features
589 * Particular Systems::          Particular systems
590 * System Type::                 Specifying the system type
591 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
592 * Defining Variables::          Specifying the compiler etc.
593 * configure Invocation::        Changing how @command{configure} runs
595 Obsolete Constructs
597 * Obsolete config.status Use::  Obsolete convention for @command{config.status}
598 * acconfig Header::             Additional entries in @file{config.h.in}
599 * autoupdate Invocation::       Automatic update of @file{configure.ac}
600 * Obsolete Macros::             Backward compatibility macros
601 * Autoconf 1::                  Tips for upgrading your files
602 * Autoconf 2.13::               Some fresher tips
604 Upgrading From Version 1
606 * Changed File Names::          Files you might rename
607 * Changed Makefiles::           New things to put in @file{Makefile.in}
608 * Changed Macros::              Macro calls you might replace
609 * Changed Results::             Changes in how to check test results
610 * Changed Macro Writing::       Better ways to write your own macros
612 Upgrading From Version 2.13
614 * Changed Quotation::           Broken code which used to work
615 * New Macros::                  Interaction with foreign macros
616 * Hosts and Cross-Compilation::  Bugward compatibility kludges
617 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
618 * AC_ACT_IFELSE vs AC_TRY_ACT::  A more generic scheme for testing sources
620 Generating Test Suites with Autotest
622 * Using an Autotest Test Suite::  Autotest and the user
623 * Writing Testsuites::          Autotest macros
624 * testsuite Invocation::        Running @command{testsuite} scripts
625 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
627 Using an Autotest Test Suite
629 * testsuite Scripts::           The concepts of Autotest
630 * Autotest Logs::               Their contents
632 Frequent Autoconf Questions, with answers
634 * Distributing::                Distributing @command{configure} scripts
635 * Why GNU M4::                  Why not use the standard M4?
636 * Bootstrapping::               Autoconf and GNU M4 require each other?
637 * Why Not Imake::               Why GNU uses @command{configure} instead of Imake
638 * Defining Directories::        Passing @code{datadir} to program
639 * Autom4te Cache::              What is it?  Can I remove it?
640 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
641 * Expanded Before Required::    Expanded Before Required
642 * Debugging::                   Debugging @command{configure} scripts
644 History of Autoconf
646 * Genesis::                     Prehistory and naming of @command{configure}
647 * Exodus::                      The plagues of M4 and Perl
648 * Leviticus::                   The priestly code of portability arrives
649 * Numbers::                     Growth and contributors
650 * Deuteronomy::                 Approaching the promises of easy configuration
652 Indices
654 * Environment Variable Index::  Index of environment variables used
655 * Output Variable Index::       Index of variables set in output files
656 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
657 * Cache Variable Index::        Index of documented cache variables
658 * Autoconf Macro Index::        Index of Autoconf macros
659 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
660 * Autotest Macro Index::        Index of Autotest macros
661 * Program & Function Index::    Index of those with portability problems
662 * Concept Index::               General index
664 @end detailmenu
665 @end menu
667 @c ============================================================= Introduction.
669 @node Introduction
670 @chapter Introduction
671 @cindex Introduction
673 @flushright
674 A physicist, an engineer, and a computer scientist were discussing the
675 nature of God.  ``Surely a Physicist,'' said the physicist, ``because
676 early in the Creation, God made Light; and you know, Maxwell's
677 equations, the dual nature of electromagnetic waves, the relativistic
678 consequences@enddots{}'' ``An Engineer!,'' said the engineer, ``because
679 before making Light, God split the Chaos into Land and Water; it takes a
680 hell of an engineer to handle that big amount of mud, and orderly
681 separation of solids from liquids@enddots{}'' The computer scientist
682 shouted: ``And the Chaos, where do you think it was coming from, hmm?''
684 ---Anonymous
685 @end flushright
686 @c (via Franc,ois Pinard)
688 Autoconf is a tool for producing shell scripts that automatically
689 configure software source code packages to adapt to many kinds of
690 Posix-like systems.  The configuration scripts produced by Autoconf
691 are independent of Autoconf when they are run, so their users do not
692 need to have Autoconf.
694 The configuration scripts produced by Autoconf require no manual user
695 intervention when run; they do not normally even need an argument
696 specifying the system type.  Instead, they individually test for the
697 presence of each feature that the software package they are for might need.
698 (Before each check, they print a one-line message stating what they are
699 checking for, so the user doesn't get too bored while waiting for the
700 script to finish.)  As a result, they deal well with systems that are
701 hybrids or customized from the more common Posix variants.  There is
702 no need to maintain files that list the features supported by each
703 release of each variant of Posix.
705 For each software package that Autoconf is used with, it creates a
706 configuration script from a template file that lists the system features
707 that the package needs or can use.  After the shell code to recognize
708 and respond to a system feature has been written, Autoconf allows it to
709 be shared by many software packages that can use (or need) that feature.
710 If it later turns out that the shell code needs adjustment for some
711 reason, it needs to be changed in only one place; all of the
712 configuration scripts can be regenerated automatically to take advantage
713 of the updated code.
715 @c "Those who do not understand Unix are condemned to reinvent it, poorly."
716 @c --Henry Spencer, 1987 (see http://en.wikipedia.org/wiki/Unix_philosophy)
717 Those who do not understand Autoconf are condemned to reinvent it, poorly.
718 The primary goal of Autoconf is making the @emph{user's} life easier;
719 making the @emph{maintainer's} life easier is only a secondary goal.
720 Put another way, the primary goal is not to make the generation of
721 @file{configure} automatic for package maintainers (although patches
722 along that front are welcome, since package maintainers form the user
723 base of Autoconf); rather, the goal is to make @file{configure}
724 painless, portable, and predictable for the end user of each
725 @dfn{autoconfiscated} package.  And to this degree, Autoconf is highly
726 successful at its goal --- most complaints to the Autoconf list are
727 about difficulties in writing Autoconf input, and not in the behavior of
728 the resulting @file{configure}.  Even packages that don't use Autoconf
729 will generally provide a @file{configure} script, and the most common
730 complaint about these alternative home-grown scripts is that they fail
731 to meet one or more of the GNU Coding Standards that users
732 have come to expect from Autoconf-generated @file{configure} scripts.
734 The Metaconfig package is similar in purpose to Autoconf, but the
735 scripts it produces require manual user intervention, which is quite
736 inconvenient when configuring large source trees.  Unlike Metaconfig
737 scripts, Autoconf scripts can support cross-compiling, if some care is
738 taken in writing them.
740 Autoconf does not solve all problems related to making portable
741 software packages---for a more complete solution, it should be used in
742 concert with other GNU build tools like Automake and
743 Libtool.  These other tools take on jobs like the creation of a
744 portable, recursive makefile with all of the standard targets,
745 linking of shared libraries, and so on.  @xref{The GNU Build System},
746 for more information.
748 Autoconf imposes some restrictions on the names of macros used with
749 @code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
751 Autoconf requires GNU M4 version 1.4.6 or later in order to
752 generate the scripts.  It uses features that some versions of M4,
753 including GNU M4 1.3, do not have.  Autoconf works better
754 with GNU M4 version 1.4.14 or later, though this is not
755 required.
757 @xref{Autoconf 1}, for information about upgrading from version 1.
758 @xref{History}, for the story of Autoconf's development.  @xref{FAQ},
759 for answers to some common questions about Autoconf.
761 See the @uref{http://@/www.gnu.org/@/software/@/autoconf/,
762 Autoconf web page} for up-to-date information, details on the mailing
763 lists, pointers to a list of known bugs, etc.
765 Mail suggestions to @email{autoconf@@gnu.org, the Autoconf mailing
766 list}.  Past suggestions are
767 @uref{http://@/lists.gnu.org/@/archive/@/html/@/autoconf/, archived}.
769 Mail bug reports to @email{bug-autoconf@@gnu.org, the
770 Autoconf Bugs mailing list}.  Past bug reports are
771 @uref{http://@/lists.gnu.org/@/archive/@/html/@/bug-autoconf/, archived}.
773 If possible, first check that your bug is
774 not already solved in current development versions, and that it has not
775 been reported yet.  Be sure to include all the needed information and a
776 short @file{configure.ac} that demonstrates the problem.
778 Autoconf's development tree is accessible via @command{git}; see the
779 @uref{http://@/savannah.gnu.org/@/projects/@/autoconf/, Autoconf
780 Summary} for details, or view
781 @uref{http://@/git.sv.gnu.org/@/gitweb/@/?p=autoconf.git, the actual
782 repository}.  Anonymous CVS access is also available, see
783 @file{README} for more details.  Patches relative to the
784 current @command{git} version can be sent for review to the
785 @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}, with
786 discussion on prior patches
787 @uref{http://@/lists.gnu.org/@/archive/@/html/@/autoconf-@/patches/,
788 archived}; and all commits are posted in the read-only
789 @email{autoconf-commit@@gnu.org, Autoconf Commit mailing list}, which is
790 also @uref{http://@/lists.gnu.org/@/archive/@/html/@/autoconf-commit/,
791 archived}.
793 Because of its mission, the Autoconf package itself
794 includes only a set of often-used
795 macros that have already demonstrated their usefulness.  Nevertheless,
796 if you wish to share your macros, or find existing ones, see the
797 @uref{http://@/www.gnu.org/@/software/@/autoconf-archive/, Autoconf Macro
798 Archive}, which is kindly run by @email{simons@@cryp.to,
799 Peter Simons}.
802 @c ================================================= The GNU Build System
804 @node The GNU Build System
805 @chapter The GNU Build System
806 @cindex GNU build system
808 Autoconf solves an important problem---reliable discovery of
809 system-specific build and runtime information---but this is only one
810 piece of the puzzle for the development of portable software.  To this
811 end, the GNU project has developed a suite of integrated
812 utilities to finish the job Autoconf started: the GNU build
813 system, whose most important components are Autoconf, Automake, and
814 Libtool.  In this chapter, we introduce you to those tools, point you
815 to sources of more information, and try to convince you to use the
816 entire GNU build system for your software.
818 @menu
819 * Automake::                    Escaping makefile hell
820 * Gnulib::                      The GNU portability library
821 * Libtool::                     Building libraries portably
822 * Pointers::                    More info on the GNU build system
823 @end menu
825 @node Automake
826 @section Automake
828 The ubiquity of @command{make} means that a makefile is almost the
829 only viable way to distribute automatic build rules for software, but
830 one quickly runs into its numerous limitations.  Its lack of
831 support for automatic dependency tracking, recursive builds in
832 subdirectories, reliable timestamps (e.g., for network file systems), and
833 so on, mean that developers must painfully (and often incorrectly)
834 reinvent the wheel for each project.  Portability is non-trivial, thanks
835 to the quirks of @command{make} on many systems.  On top of all this is the
836 manual labor required to implement the many standard targets that users
837 have come to expect (@code{make install}, @code{make distclean},
838 @code{make uninstall}, etc.).  Since you are, of course, using Autoconf,
839 you also have to insert repetitive code in your @file{Makefile.in} to
840 recognize @code{@@CC@@}, @code{@@CFLAGS@@}, and other substitutions
841 provided by @command{configure}.  Into this mess steps @dfn{Automake}.
842 @cindex Automake
844 Automake allows you to specify your build needs in a @file{Makefile.am}
845 file with a vastly simpler and more powerful syntax than that of a plain
846 makefile, and then generates a portable @file{Makefile.in} for
847 use with Autoconf.  For example, the @file{Makefile.am} to build and
848 install a simple ``Hello world'' program might look like:
850 @example
851 bin_PROGRAMS = hello
852 hello_SOURCES = hello.c
853 @end example
855 @noindent
856 The resulting @file{Makefile.in} (~400 lines) automatically supports all
857 the standard targets, the substitutions provided by Autoconf, automatic
858 dependency tracking, @code{VPATH} building, and so on.  @command{make}
859 builds the @code{hello} program, and @code{make install} installs it
860 in @file{/usr/local/bin} (or whatever prefix was given to
861 @command{configure}, if not @file{/usr/local}).
863 The benefits of Automake increase for larger packages (especially ones
864 with subdirectories), but even for small programs the added convenience
865 and portability can be substantial.  And that's not all@enddots{}
867 @node Gnulib
868 @section Gnulib
870 GNU software has a well-deserved reputation for running on
871 many different types of systems.  While our primary goal is to write
872 software for the GNU system, many users and developers have
873 been introduced to us through the systems that they were already using.
875 @cindex Gnulib
876 Gnulib is a central location for common GNU code, intended to
877 be shared among free software packages.  Its components are typically
878 shared at the source level, rather than being a library that gets built,
879 installed, and linked against.  The idea is to copy files from Gnulib
880 into your own source tree.  There is no distribution tarball; developers
881 should just grab source modules from the repository.  The source files
882 are available online, under various licenses, mostly GNU
883 GPL or GNU LGPL.
885 Gnulib modules typically contain C source code along with Autoconf
886 macros used to configure the source code.  For example, the Gnulib
887 @code{stdbool} module implements a @file{stdbool.h} header that nearly
888 conforms to C99, even on old-fashioned hosts that lack @file{stdbool.h}.
889 This module contains a source file for the replacement header, along
890 with an Autoconf macro that arranges to use the replacement header on
891 old-fashioned systems.
893 @node Libtool
894 @section Libtool
896 Often, one wants to build not only programs, but libraries, so that
897 other programs can benefit from the fruits of your labor.  Ideally, one
898 would like to produce @emph{shared} (dynamically linked) libraries,
899 which can be used by multiple programs without duplication on disk or in
900 memory and can be updated independently of the linked programs.
901 Producing shared libraries portably, however, is the stuff of
902 nightmares---each system has its own incompatible tools, compiler flags,
903 and magic incantations.  Fortunately, GNU provides a solution:
904 @dfn{Libtool}.
905 @cindex Libtool
907 Libtool handles all the requirements of building shared libraries for
908 you, and at this time seems to be the @emph{only} way to do so with any
909 portability.  It also handles many other headaches, such as: the
910 interaction of Make rules with the variable suffixes of
911 shared libraries, linking reliably with shared libraries before they are
912 installed by the superuser, and supplying a consistent versioning system
913 (so that different versions of a library can be installed or upgraded
914 without breaking binary compatibility).  Although Libtool, like
915 Autoconf, can be used without Automake, it is most simply utilized in
916 conjunction with Automake---there, Libtool is used automatically
917 whenever shared libraries are needed, and you need not know its syntax.
919 @node Pointers
920 @section Pointers
922 Developers who are used to the simplicity of @command{make} for small
923 projects on a single system might be daunted at the prospect of
924 learning to use Automake and Autoconf.  As your software is
925 distributed to more and more users, however, you otherwise
926 quickly find yourself putting lots of effort into reinventing the
927 services that the GNU build tools provide, and making the
928 same mistakes that they once made and overcame.  (Besides, since
929 you're already learning Autoconf, Automake is a piece of cake.)
931 There are a number of places that you can go to for more information on
932 the GNU build tools.
934 @itemize @minus
936 @item Web
938 The project home pages for
939 @uref{http://@/www@/.gnu@/.org/@/software/@/autoconf/, Autoconf},
940 @uref{http://@/www@/.gnu@/.org/@/software/@/automake/, Automake},
941 @uref{http://@/www@/.gnu@/.org/@/software/@/gnulib/, Gnulib}, and
942 @uref{http://@/www@/.gnu@/.org/@/software/@/libtool/, Libtool}.
944 @item Automake Manual
946 @xref{Top, , Automake, automake, GNU Automake}, for more
947 information on Automake.
949 @item Books
951 The book @cite{GNU Autoconf, Automake and
952 Libtool}@footnote{@cite{GNU Autoconf, Automake and Libtool},
953 by G. V. Vaughan, B. Elliston, T. Tromey, and I. L. Taylor.  SAMS (originally
954 New Riders), 2000, ISBN 1578701902.} describes the complete GNU
955 build environment.  You can also find
956 @uref{http://@/sources.redhat.com/@/autobook/, the entire book on-line}.
958 @end itemize
960 @c ================================================= Making configure Scripts.
962 @node Making configure Scripts
963 @chapter Making @command{configure} Scripts
964 @cindex @file{aclocal.m4}
965 @cindex @command{configure}
967 The configuration scripts that Autoconf produces are by convention
968 called @command{configure}.  When run, @command{configure} creates several
969 files, replacing configuration parameters in them with appropriate
970 values.  The files that @command{configure} creates are:
972 @itemize @minus
973 @item
974 one or more @file{Makefile} files, usually one in each subdirectory of the
975 package (@pxref{Makefile Substitutions});
977 @item
978 optionally, a C header file, the name of which is configurable,
979 containing @code{#define} directives (@pxref{Configuration Headers});
981 @item
982 a shell script called @file{config.status} that, when run, recreates
983 the files listed above (@pxref{config.status Invocation});
985 @item
986 an optional shell script normally called @file{config.cache}
987 (created when using @samp{configure --config-cache}) that
988 saves the results of running many of the tests (@pxref{Cache Files});
990 @item
991 a file called @file{config.log} containing any messages produced by
992 compilers, to help debugging if @command{configure} makes a mistake.
993 @end itemize
995 @cindex @file{configure.in}
996 @cindex @file{configure.ac}
997 To create a @command{configure} script with Autoconf, you need to write an
998 Autoconf input file @file{configure.ac} (or @file{configure.in}) and run
999 @command{autoconf} on it.  If you write your own feature tests to
1000 supplement those that come with Autoconf, you might also write files
1001 called @file{aclocal.m4} and @file{acsite.m4}.  If you use a C header
1002 file to contain @code{#define} directives, you might also run
1003 @command{autoheader}, and you can distribute the generated file
1004 @file{config.h.in} with the package.
1006 Here is a diagram showing how the files that can be used in
1007 configuration are produced.  Programs that are executed are suffixed by
1008 @samp{*}.  Optional files are enclosed in square brackets (@samp{[]}).
1009 @command{autoconf} and @command{autoheader} also read the installed Autoconf
1010 macro files (by reading @file{autoconf.m4}).
1012 @noindent
1013 Files used in preparing a software package for distribution, when using
1014 just Autoconf:
1015 @example
1016 your source files --> [autoscan*] --> [configure.scan] --> configure.ac
1018 @group
1019 configure.ac --.
1020                |   .------> autoconf* -----> configure
1021 [aclocal.m4] --+---+
1022                |   `-----> [autoheader*] --> [config.h.in]
1023 [acsite.m4] ---'
1024 @end group
1026 Makefile.in
1027 @end example
1029 @noindent
1030 Additionally, if you use Automake, the following additional productions
1031 come into play:
1033 @example
1034 @group
1035 [acinclude.m4] --.
1036                  |
1037 [local macros] --+--> aclocal* --> aclocal.m4
1038                  |
1039 configure.ac ----'
1040 @end group
1042 @group
1043 configure.ac --.
1044                +--> automake* --> Makefile.in
1045 Makefile.am ---'
1046 @end group
1047 @end example
1049 @noindent
1050 Files used in configuring a software package:
1051 @example
1052 @group
1053                        .-------------> [config.cache]
1054 configure* ------------+-------------> config.log
1055                        |
1056 [config.h.in] -.       v            .-> [config.h] -.
1057                +--> config.status* -+               +--> make*
1058 Makefile.in ---'                    `-> Makefile ---'
1059 @end group
1060 @end example
1062 @menu
1063 * Writing Autoconf Input::      What to put in an Autoconf input file
1064 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
1065 * ifnames Invocation::          Listing the conditionals in source code
1066 * autoconf Invocation::         How to create configuration scripts
1067 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
1068 @end menu
1070 @node Writing Autoconf Input
1071 @section Writing @file{configure.ac}
1073 To produce a @command{configure} script for a software package, create a
1074 file called @file{configure.ac} that contains invocations of the
1075 Autoconf macros that test the system features your package needs or can
1076 use.  Autoconf macros already exist to check for many features; see
1077 @ref{Existing Tests}, for their descriptions.  For most other features,
1078 you can use Autoconf template macros to produce custom checks; see
1079 @ref{Writing Tests}, for information about them.  For especially tricky
1080 or specialized features, @file{configure.ac} might need to contain some
1081 hand-crafted shell commands; see @ref{Portable Shell, , Portable Shell
1082 Programming}.  The @command{autoscan} program can give you a good start
1083 in writing @file{configure.ac} (@pxref{autoscan Invocation}, for more
1084 information).
1086 Previous versions of Autoconf promoted the name @file{configure.in},
1087 which is somewhat ambiguous (the tool needed to process this file is not
1088 described by its extension), and introduces a slight confusion with
1089 @file{config.h.in} and so on (for which @samp{.in} means ``to be
1090 processed by @command{configure}'').  Using @file{configure.ac} is now
1091 preferred.
1093 @menu
1094 * Shell Script Compiler::       Autoconf as solution of a problem
1095 * Autoconf Language::           Programming in Autoconf
1096 * Autoconf Input Layout::       Standard organization of @file{configure.ac}
1097 @end menu
1099 @node Shell Script Compiler
1100 @subsection A Shell Script Compiler
1102 Just as for any other computer language, in order to properly program
1103 @file{configure.ac} in Autoconf you must understand @emph{what} problem
1104 the language tries to address and @emph{how} it does so.
1106 The problem Autoconf addresses is that the world is a mess.  After all,
1107 you are using Autoconf in order to have your package compile easily on
1108 all sorts of different systems, some of them being extremely hostile.
1109 Autoconf itself bears the price for these differences: @command{configure}
1110 must run on all those systems, and thus @command{configure} must limit itself
1111 to their lowest common denominator of features.
1113 Naturally, you might then think of shell scripts; who needs
1114 @command{autoconf}?  A set of properly written shell functions is enough to
1115 make it easy to write @command{configure} scripts by hand.  Sigh!
1116 Unfortunately, even in 2008, where shells without any function support are
1117 far and few between, there are pitfalls to avoid when making use of them.
1118 Also, finding a Bourne shell that accepts shell functions is not trivial,
1119 even though there is almost always one on interesting porting targets.
1121 So, what is really needed is some kind of compiler, @command{autoconf},
1122 that takes an Autoconf program, @file{configure.ac}, and transforms it
1123 into a portable shell script, @command{configure}.
1125 How does @command{autoconf} perform this task?
1127 There are two obvious possibilities: creating a brand new language or
1128 extending an existing one.  The former option is attractive: all
1129 sorts of optimizations could easily be implemented in the compiler and
1130 many rigorous checks could be performed on the Autoconf program
1131 (e.g., rejecting any non-portable construct).  Alternatively, you can
1132 extend an existing language, such as the @code{sh} (Bourne shell)
1133 language.
1135 Autoconf does the latter: it is a layer on top of @code{sh}.  It was
1136 therefore most convenient to implement @command{autoconf} as a macro
1137 expander: a program that repeatedly performs @dfn{macro expansions} on
1138 text input, replacing macro calls with macro bodies and producing a pure
1139 @code{sh} script in the end.  Instead of implementing a dedicated
1140 Autoconf macro expander, it is natural to use an existing
1141 general-purpose macro language, such as M4, and implement the extensions
1142 as a set of M4 macros.
1145 @node Autoconf Language
1146 @subsection The Autoconf Language
1147 @cindex quotation
1149 The Autoconf language differs from many other computer
1150 languages because it treats actual code the same as plain text.  Whereas
1151 in C, for instance, data and instructions have different syntactic
1152 status, in Autoconf their status is rigorously the same.  Therefore, we
1153 need a means to distinguish literal strings from text to be expanded:
1154 quotation.
1156 When calling macros that take arguments, there must not be any white
1157 space between the macro name and the open parenthesis.
1159 @example
1160 AC_INIT ([oops], [1.0]) # incorrect
1161 AC_INIT([hello], [1.0]) # good
1162 @end example
1164 Arguments should
1165 be enclosed within the quote characters @samp{[} and @samp{]}, and be
1166 separated by commas.  Any leading blanks or newlines in arguments are ignored,
1167 unless they are quoted.  You should always quote an argument that
1168 might contain a macro name, comma, parenthesis, or a leading blank or
1169 newline.  This rule applies recursively for every macro
1170 call, including macros called from other macros.  For more details on
1171 quoting rules, see @ref{Programming in M4}.
1173 For instance:
1175 @example
1176 AC_CHECK_HEADER([stdio.h],
1177                 [AC_DEFINE([HAVE_STDIO_H], [1],
1178                    [Define to 1 if you have <stdio.h>.])],
1179                 [AC_MSG_ERROR([sorry, can't do anything for you])])
1180 @end example
1182 @noindent
1183 is quoted properly.  You may safely simplify its quotation to:
1185 @example
1186 AC_CHECK_HEADER([stdio.h],
1187                 [AC_DEFINE([HAVE_STDIO_H], 1,
1188                    [Define to 1 if you have <stdio.h>.])],
1189                 [AC_MSG_ERROR([sorry, can't do anything for you])])
1190 @end example
1192 @noindent
1193 because @samp{1} cannot contain a macro call.  Here, the argument of
1194 @code{AC_MSG_ERROR} must be quoted; otherwise, its comma would be
1195 interpreted as an argument separator.  Also, the second and third arguments
1196 of @samp{AC_CHECK_HEADER} must be quoted, since they contain
1197 macro calls.  The three arguments @samp{HAVE_STDIO_H}, @samp{stdio.h},
1198 and @samp{Define to 1 if you have <stdio.h>.} do not need quoting, but
1199 if you unwisely defined a macro with a name like @samp{Define} or
1200 @samp{stdio} then they would need quoting.  Cautious Autoconf users
1201 would keep the quotes, but many Autoconf users find such precautions
1202 annoying, and would rewrite the example as follows:
1204 @example
1205 AC_CHECK_HEADER(stdio.h,
1206                 [AC_DEFINE(HAVE_STDIO_H, 1,
1207                    [Define to 1 if you have <stdio.h>.])],
1208                 [AC_MSG_ERROR([sorry, can't do anything for you])])
1209 @end example
1211 @noindent
1212 This is safe, so long as you adopt good naming conventions and do not
1213 define macros with names like @samp{HAVE_STDIO_H}, @samp{stdio}, or
1214 @samp{h}.  Though it is also safe here to omit the quotes around
1215 @samp{Define to 1 if you have <stdio.h>.} this is not recommended, as
1216 message strings are more likely to inadvertently contain commas.
1218 The following example is wrong and dangerous, as it is underquoted:
1220 @example
1221 AC_CHECK_HEADER(stdio.h,
1222                 AC_DEFINE(HAVE_STDIO_H, 1,
1223                    Define to 1 if you have <stdio.h>.),
1224                 AC_MSG_ERROR([sorry, can't do anything for you]))
1225 @end example
1227 In other cases, you may have to use text that also resembles a macro
1228 call.  You must quote that text even when it is not passed as a macro
1229 argument.  For example, these two approaches in @file{configure.ac}
1230 (quoting just the potential problems, or quoting the entire line) will
1231 protect your script in case autoconf ever adds a macro @code{AC_DC}:
1233 @example
1234 echo "Hard rock was here!  --[AC_DC]"
1235 [echo "Hard rock was here!  --AC_DC"]
1236 @end example
1238 @noindent
1239 which results in this text in @file{configure}:
1241 @example
1242 echo "Hard rock was here!  --AC_DC"
1243 echo "Hard rock was here!  --AC_DC"
1244 @end example
1246 @noindent
1247 When you use the same text in a macro argument, you must therefore have
1248 an extra quotation level (since one is stripped away by the macro
1249 substitution).  In general, then, it is a good idea to @emph{use double
1250 quoting for all literal string arguments}, either around just the
1251 problematic portions, or over the entire argument:
1253 @example
1254 AC_MSG_WARN([[AC_DC] stinks  --Iron Maiden])
1255 AC_MSG_WARN([[AC_DC stinks  --Iron Maiden]])
1256 @end example
1258 However, the above example triggers a warning about a possibly
1259 unexpanded macro when running @command{autoconf}, because it collides
1260 with the namespace of macros reserved for the Autoconf language.  To be
1261 really safe, you can use additional escaping (either a quadrigraph, or
1262 creative shell constructs) to silence that particular warning:
1264 @example
1265 echo "Hard rock was here!  --AC""_DC"
1266 AC_MSG_WARN([[AC@@&t@@_DC stinks  --Iron Maiden]])
1267 @end example
1269 You are now able to understand one of the constructs of Autoconf that
1270 has been continually misunderstood@enddots{}  The rule of thumb is that
1271 @emph{whenever you expect macro expansion, expect quote expansion};
1272 i.e., expect one level of quotes to be lost.  For instance:
1274 @example
1275 AC_COMPILE_IFELSE([char b[10];], [], [AC_MSG_ERROR([you lose])])
1276 @end example
1278 @noindent
1279 is incorrect: here, the first argument of @code{AC_COMPILE_IFELSE} is
1280 @samp{char b[10];} and is expanded once, which results in
1281 @samp{char b10;}.  (There was an idiom common in Autoconf's past to
1282 address this issue via the M4 @code{changequote} primitive, but do not
1283 use it!)  Let's take a closer look: the author meant the first argument
1284 to be understood as a literal, and therefore it must be quoted twice:
1286 @example
1287 AC_COMPILE_IFELSE([[char b[10];]], [], [AC_MSG_ERROR([you lose])])
1288 @end example
1290 @noindent
1291 Voil@`a, you actually produce @samp{char b[10];} this time!
1293 On the other hand, descriptions (e.g., the last parameter of
1294 @code{AC_DEFINE} or @code{AS_HELP_STRING}) are not literals---they
1295 are subject to line breaking, for example---and should not be double quoted.
1296 Even if these descriptions are short and are not actually broken, double
1297 quoting them yields weird results.
1299 Some macros take optional arguments, which this documentation represents
1300 as @ovar{arg} (not to be confused with the quote characters).  You may
1301 just leave them empty, or use @samp{[]} to make the emptiness of the
1302 argument explicit, or you may simply omit the trailing commas.  The
1303 three lines below are equivalent:
1305 @example
1306 AC_CHECK_HEADERS([stdio.h], [], [], [])
1307 AC_CHECK_HEADERS([stdio.h],,,)
1308 AC_CHECK_HEADERS([stdio.h])
1309 @end example
1311 It is best to put each macro call on its own line in
1312 @file{configure.ac}.  Most of the macros don't add extra newlines; they
1313 rely on the newline after the macro call to terminate the commands.
1314 This approach makes the generated @command{configure} script a little
1315 easier to read by not inserting lots of blank lines.  It is generally
1316 safe to set shell variables on the same line as a macro call, because
1317 the shell allows assignments without intervening newlines.
1319 You can include comments in @file{configure.ac} files by starting them
1320 with the @samp{#}.  For example, it is helpful to begin
1321 @file{configure.ac} files with a line like this:
1323 @example
1324 # Process this file with autoconf to produce a configure script.
1325 @end example
1327 @node Autoconf Input Layout
1328 @subsection Standard @file{configure.ac} Layout
1330 The order in which @file{configure.ac} calls the Autoconf macros is not
1331 important, with a few exceptions.  Every @file{configure.ac} must
1332 contain a call to @code{AC_INIT} before the checks, and a call to
1333 @code{AC_OUTPUT} at the end (@pxref{Output}).  Additionally, some macros
1334 rely on other macros having been called first, because they check
1335 previously set values of some variables to decide what to do.  These
1336 macros are noted in the individual descriptions (@pxref{Existing
1337 Tests}), and they also warn you when @command{configure} is created if they
1338 are called out of order.
1340 To encourage consistency, here is a suggested order for calling the
1341 Autoconf macros.  Generally speaking, the things near the end of this
1342 list are those that could depend on things earlier in it.  For example,
1343 library functions could be affected by types and libraries.
1345 @display
1346 @group
1347 Autoconf requirements
1348 @code{AC_INIT(@var{package}, @var{version}, @var{bug-report-address})}
1349 information on the package
1350 checks for programs
1351 checks for libraries
1352 checks for header files
1353 checks for types
1354 checks for structures
1355 checks for compiler characteristics
1356 checks for library functions
1357 checks for system services
1358 @code{AC_CONFIG_FILES(@r{[}@var{file@dots{}}@r{]})}
1359 @code{AC_OUTPUT}
1360 @end group
1361 @end display
1364 @node autoscan Invocation
1365 @section Using @command{autoscan} to Create @file{configure.ac}
1366 @cindex @command{autoscan}
1368 The @command{autoscan} program can help you create and/or maintain a
1369 @file{configure.ac} file for a software package.  @command{autoscan}
1370 examines source files in the directory tree rooted at a directory given
1371 as a command line argument, or the current directory if none is given.
1372 It searches the source files for common portability problems and creates
1373 a file @file{configure.scan} which is a preliminary @file{configure.ac}
1374 for that package, and checks a possibly existing @file{configure.ac} for
1375 completeness.
1377 When using @command{autoscan} to create a @file{configure.ac}, you
1378 should manually examine @file{configure.scan} before renaming it to
1379 @file{configure.ac}; it probably needs some adjustments.
1380 Occasionally, @command{autoscan} outputs a macro in the wrong order
1381 relative to another macro, so that @command{autoconf} produces a warning;
1382 you need to move such macros manually.  Also, if you want the package to
1383 use a configuration header file, you must add a call to
1384 @code{AC_CONFIG_HEADERS} (@pxref{Configuration Headers}).  You might
1385 also have to change or add some @code{#if} directives to your program in
1386 order to make it work with Autoconf (@pxref{ifnames Invocation}, for
1387 information about a program that can help with that job).
1389 When using @command{autoscan} to maintain a @file{configure.ac}, simply
1390 consider adding its suggestions.  The file @file{autoscan.log}
1391 contains detailed information on why a macro is requested.
1393 @command{autoscan} uses several data files (installed along with Autoconf)
1394 to determine which macros to output when it finds particular symbols in
1395 a package's source files.  These data files all have the same format:
1396 each line consists of a symbol, one or more blanks, and the Autoconf macro to
1397 output if that symbol is encountered.  Lines starting with @samp{#} are
1398 comments.
1400 @command{autoscan} accepts the following options:
1402 @table @option
1403 @item --help
1404 @itemx -h
1405 Print a summary of the command line options and exit.
1407 @item --version
1408 @itemx -V
1409 Print the version number of Autoconf and exit.
1411 @item --verbose
1412 @itemx -v
1413 Print the names of the files it examines and the potentially interesting
1414 symbols it finds in them.  This output can be voluminous.
1416 @item --debug
1417 @itemx -d
1418 Don't remove temporary files.
1420 @item --include=@var{dir}
1421 @itemx -I @var{dir}
1422 Append @var{dir} to the include path.  Multiple invocations accumulate.
1424 @item --prepend-include=@var{dir}
1425 @itemx -B @var{dir}
1426 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1427 @end table
1429 @node ifnames Invocation
1430 @section Using @command{ifnames} to List Conditionals
1431 @cindex @command{ifnames}
1433 @command{ifnames} can help you write @file{configure.ac} for a software
1434 package.  It prints the identifiers that the package already uses in C
1435 preprocessor conditionals.  If a package has already been set up to have
1436 some portability, @command{ifnames} can thus help you figure out what its
1437 @command{configure} needs to check for.  It may help fill in some gaps in a
1438 @file{configure.ac} generated by @command{autoscan} (@pxref{autoscan
1439 Invocation}).
1441 @command{ifnames} scans all of the C source files named on the command line
1442 (or the standard input, if none are given) and writes to the standard
1443 output a sorted list of all the identifiers that appear in those files
1444 in @code{#if}, @code{#elif}, @code{#ifdef}, or @code{#ifndef}
1445 directives.  It prints each identifier on a line, followed by a
1446 space-separated list of the files in which that identifier occurs.
1448 @noindent
1449 @command{ifnames} accepts the following options:
1451 @table @option
1452 @item --help
1453 @itemx -h
1454 Print a summary of the command line options and exit.
1456 @item --version
1457 @itemx -V
1458 Print the version number of Autoconf and exit.
1459 @end table
1461 @node autoconf Invocation
1462 @section Using @command{autoconf} to Create @command{configure}
1463 @cindex @command{autoconf}
1465 To create @command{configure} from @file{configure.ac}, run the
1466 @command{autoconf} program with no arguments.  @command{autoconf} processes
1467 @file{configure.ac} with the M4 macro processor, using the
1468 Autoconf macros.  If you give @command{autoconf} an argument, it reads that
1469 file instead of @file{configure.ac} and writes the configuration script
1470 to the standard output instead of to @command{configure}.  If you give
1471 @command{autoconf} the argument @option{-}, it reads from the standard
1472 input instead of @file{configure.ac} and writes the configuration script
1473 to the standard output.
1475 The Autoconf macros are defined in several files.  Some of the files are
1476 distributed with Autoconf; @command{autoconf} reads them first.  Then it
1477 looks for the optional file @file{acsite.m4} in the directory that
1478 contains the distributed Autoconf macro files, and for the optional file
1479 @file{aclocal.m4} in the current directory.  Those files can contain
1480 your site's or the package's own Autoconf macro definitions
1481 (@pxref{Writing Autoconf Macros}, for more information).  If a macro is
1482 defined in more than one of the files that @command{autoconf} reads, the
1483 last definition it reads overrides the earlier ones.
1485 @command{autoconf} accepts the following options:
1487 @table @option
1488 @item --help
1489 @itemx -h
1490 Print a summary of the command line options and exit.
1492 @item --version
1493 @itemx -V
1494 Print the version number of Autoconf and exit.
1496 @item --verbose
1497 @itemx -v
1498 Report processing steps.
1500 @item --debug
1501 @itemx -d
1502 Don't remove the temporary files.
1504 @item --force
1505 @itemx -f
1506 Remake @file{configure} even if newer than its input files.
1508 @item --include=@var{dir}
1509 @itemx -I @var{dir}
1510 Append @var{dir} to the include path.  Multiple invocations accumulate.
1512 @item --prepend-include=@var{dir}
1513 @itemx -B @var{dir}
1514 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1516 @item --output=@var{file}
1517 @itemx -o @var{file}
1518 Save output (script or trace) to @var{file}.  The file @option{-} stands
1519 for the standard output.
1521 @item --warnings=@var{category}
1522 @itemx -W @var{category}
1523 @evindex WARNINGS
1524 Report the warnings related to @var{category} (which can actually be a
1525 comma separated list).  @xref{Reporting Messages}, macro
1526 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
1527 values include:
1529 @table @samp
1530 @item all
1531 report all the warnings
1533 @item none
1534 report none
1536 @item error
1537 treats warnings as errors
1539 @item no-@var{category}
1540 disable warnings falling into @var{category}
1541 @end table
1543 Warnings about @samp{syntax} are enabled by default, and the environment
1544 variable @env{WARNINGS}, a comma separated list of categories, is
1545 honored as well.  Passing @option{-W @var{category}} actually behaves as if
1546 you had passed @option{--warnings syntax,$WARNINGS,@var{category}}.  To
1547 disable the defaults and @env{WARNINGS}, and then
1548 enable warnings about obsolete constructs, use @option{-W
1549 none,obsolete}.
1551 @cindex Back trace
1552 @cindex Macro invocation stack
1553 Because @command{autoconf} uses @command{autom4te} behind the scenes, it
1554 displays a back trace for errors, but not for warnings; if you want
1555 them, just pass @option{-W error}.  @xref{autom4te Invocation}, for some
1556 examples.
1558 @item --trace=@var{macro}[:@var{format}]
1559 @itemx -t @var{macro}[:@var{format}]
1560 Do not create the @command{configure} script, but list the calls to
1561 @var{macro} according to the @var{format}.  Multiple @option{--trace}
1562 arguments can be used to list several macros.  Multiple @option{--trace}
1563 arguments for a single macro are not cumulative; instead, you should
1564 just make @var{format} as long as needed.
1566 The @var{format} is a regular string, with newlines if desired, and
1567 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}; see
1568 @ref{autom4te Invocation}, for details on the @var{format}.
1570 @item --initialization
1571 @itemx -i
1572 By default, @option{--trace} does not trace the initialization of the
1573 Autoconf macros (typically the @code{AC_DEFUN} definitions).  This
1574 results in a noticeable speedup, but can be disabled by this option.
1575 @end table
1578 It is often necessary to check the content of a @file{configure.ac}
1579 file, but parsing it yourself is extremely fragile and error-prone.  It
1580 is suggested that you rely upon @option{--trace} to scan
1581 @file{configure.ac}.  For instance, to find the list of variables that
1582 are substituted, use:
1584 @example
1585 @group
1586 $ @kbd{autoconf -t AC_SUBST}
1587 configure.ac:2:AC_SUBST:ECHO_C
1588 configure.ac:2:AC_SUBST:ECHO_N
1589 configure.ac:2:AC_SUBST:ECHO_T
1590 @i{More traces deleted}
1591 @end group
1592 @end example
1594 @noindent
1595 The example below highlights the difference between @samp{$@@},
1596 @samp{$*}, and @samp{$%}.
1598 @example
1599 @group
1600 $ @kbd{cat configure.ac}
1601 AC_DEFINE(This, is, [an
1602 [example]])
1603 $ @kbd{autoconf -t 'AC_DEFINE:@@: $@@}
1604 *: $*
1605 %: $%'
1606 @@: [This],[is],[an
1607 [example]]
1608 *: This,is,an
1609 [example]
1610 %: This:is:an [example]
1611 @end group
1612 @end example
1614 @noindent
1615 The @var{format} gives you a lot of freedom:
1617 @example
1618 @group
1619 $ @kbd{autoconf -t 'AC_SUBST:$$ac_subst@{"$1"@} = "$f:$l";'}
1620 $ac_subst@{"ECHO_C"@} = "configure.ac:2";
1621 $ac_subst@{"ECHO_N"@} = "configure.ac:2";
1622 $ac_subst@{"ECHO_T"@} = "configure.ac:2";
1623 @i{More traces deleted}
1624 @end group
1625 @end example
1627 @noindent
1628 A long @var{separator} can be used to improve the readability of complex
1629 structures, and to ease their parsing (for instance when no single
1630 character is suitable as a separator):
1632 @example
1633 @group
1634 $ @kbd{autoconf -t 'AM_MISSING_PROG:$@{|:::::|@}*'}
1635 ACLOCAL|:::::|aclocal|:::::|$missing_dir
1636 AUTOCONF|:::::|autoconf|:::::|$missing_dir
1637 AUTOMAKE|:::::|automake|:::::|$missing_dir
1638 @i{More traces deleted}
1639 @end group
1640 @end example
1642 @node autoreconf Invocation
1643 @section Using @command{autoreconf} to Update @command{configure} Scripts
1644 @cindex @command{autoreconf}
1646 Installing the various components of the GNU Build System can be
1647 tedious: running @command{autopoint} for Gettext, @command{automake} for
1648 @file{Makefile.in} etc.@: in each directory.  It may be needed either
1649 because some tools such as @command{automake} have been updated on your
1650 system, or because some of the sources such as @file{configure.ac} have
1651 been updated, or finally, simply in order to install the GNU Build
1652 System in a fresh tree.
1654 @command{autoreconf} runs @command{autoconf}, @command{autoheader},
1655 @command{aclocal}, @command{automake}, @command{libtoolize}, and
1656 @command{autopoint} (when appropriate) repeatedly to update the
1657 GNU Build System in the specified directories and their
1658 subdirectories (@pxref{Subdirectories}).  By default, it only remakes
1659 those files that are older than their sources.  The environment variables
1660 @env{AUTOCONF}, @env{AUTOHEADER}, @env{AUTOMAKE}, @env{ACLOCAL},
1661 @env{AUTOPOINT}, @env{LIBTOOLIZE}, @env{M4}, and @env{MAKE} may be used
1662 to override the invocation of the respective tools.
1664 If you install a new version of some tool, you can make
1665 @command{autoreconf} remake @emph{all} of the files by giving it the
1666 @option{--force} option.
1668 @xref{Automatic Remaking}, for Make rules to automatically
1669 rebuild @command{configure} scripts when their source files change.  That
1670 method handles the timestamps of configuration header templates
1671 properly, but does not pass @option{--autoconf-dir=@var{dir}} or
1672 @option{--localdir=@var{dir}}.
1674 @cindex Gettext
1675 @cindex @command{autopoint}
1676 Gettext supplies the @command{autopoint} command to add translation
1677 infrastructure to a source package.  If you use @command{autopoint},
1678 your @file{configure.ac} should invoke both @code{AM_GNU_GETTEXT} and
1679 @code{AM_GNU_GETTEXT_VERSION(@var{gettext-version})}.  @xref{autopoint
1680 Invocation, , Invoking the @code{autopoint} Program, gettext,
1681 GNU @code{gettext} utilities}, for further details.
1683 @noindent
1684 @command{autoreconf} accepts the following options:
1686 @table @option
1687 @item --help
1688 @itemx -h
1689 Print a summary of the command line options and exit.
1691 @item --version
1692 @itemx -V
1693 Print the version number of Autoconf and exit.
1695 @item --verbose
1696 @itemx -V
1697 Print the name of each directory @command{autoreconf} examines and the
1698 commands it runs.  If given two or more times, pass @option{--verbose}
1699 to subordinate tools that support it.
1701 @item --debug
1702 @itemx -d
1703 Don't remove the temporary files.
1705 @item --force
1706 @itemx -f
1707 Remake even @file{configure} scripts and configuration headers that are
1708 newer than their input files (@file{configure.ac} and, if present,
1709 @file{aclocal.m4}).
1711 @item --install
1712 @itemx -i
1713 Install the missing auxiliary files in the package.  By default, files
1714 are copied; this can be changed with @option{--symlink}.
1716 If deemed appropriate, this option triggers calls to
1717 @samp{automake --add-missing},
1718 @samp{libtoolize}, @samp{autopoint}, etc.
1720 @item --no-recursive
1721 Do not rebuild files in subdirectories to configure (see @ref{Subdirectories},
1722 macro @code{AC_CONFIG_SUBDIRS}).
1724 @item --symlink
1725 @itemx -s
1726 When used with @option{--install}, install symbolic links to the missing
1727 auxiliary files instead of copying them.
1729 @item --make
1730 @itemx -m
1731 When the directories were configured, update the configuration by
1732 running @samp{./config.status --recheck && ./config.status}, and then
1733 run @samp{make}.
1735 @item --include=@var{dir}
1736 @itemx -I @var{dir}
1737 Append @var{dir} to the include path.  Multiple invocations accumulate.
1738 Passed on to @command{aclocal}, @command{autoconf} and
1739 @command{autoheader} internally.
1741 @item --prepend-include=@var{dir}
1742 @itemx -B @var{dir}
1743 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1744 Passed on to @command{autoconf} and @command{autoheader} internally.
1746 @item --warnings=@var{category}
1747 @itemx -W @var{category}
1748 @evindex WARNINGS
1749 Report the warnings related to @var{category} (which can actually be a
1750 comma separated list).
1752 @table @samp
1753 @item cross
1754 related to cross compilation issues.
1756 @item obsolete
1757 report the uses of obsolete constructs.
1759 @item portability
1760 portability issues
1762 @item syntax
1763 dubious syntactic constructs.
1765 @item all
1766 report all the warnings
1768 @item none
1769 report none
1771 @item error
1772 treats warnings as errors
1774 @item no-@var{category}
1775 disable warnings falling into @var{category}
1776 @end table
1778 Warnings about @samp{syntax} are enabled by default, and the environment
1779 variable @env{WARNINGS}, a comma separated list of categories, is
1780 honored as well.  Passing @option{-W @var{category}} actually behaves as if
1781 you had passed @option{--warnings syntax,$WARNINGS,@var{category}}.  To
1782 disable the defaults and @env{WARNINGS}, and then
1783 enable warnings about obsolete constructs, use @option{-W
1784 none,obsolete}.
1785 @end table
1787 If you want @command{autoreconf} to pass flags that are not listed here
1788 on to @command{aclocal}, set @code{ACLOCAL_AMFLAGS} in your @file{Makefile.am}.
1789 Due to a limitation in the Autoconf implementation these flags currently
1790 must be set on a single line in @file{Makefile.am}, without any
1791 backslash-newlines.
1793 @c ========================================= Initialization and Output Files.
1795 @node Setup
1796 @chapter Initialization and Output Files
1798 Autoconf-generated @command{configure} scripts need some information about
1799 how to initialize, such as how to find the package's source files and
1800 about the output files to produce.  The following sections describe the
1801 initialization and the creation of output files.
1803 @menu
1804 * Initializing configure::      Option processing etc.
1805 * Versioning::                  Dealing with Autoconf versions
1806 * Notices::                     Copyright, version numbers in @command{configure}
1807 * Input::                       Where Autoconf should find files
1808 * Output::                      Outputting results from the configuration
1809 * Configuration Actions::       Preparing the output based on results
1810 * Configuration Files::         Creating output files
1811 * Makefile Substitutions::      Using output variables in makefiles
1812 * Configuration Headers::       Creating a configuration header file
1813 * Configuration Commands::      Running arbitrary instantiation commands
1814 * Configuration Links::         Links depending on the configuration
1815 * Subdirectories::              Configuring independent packages together
1816 * Default Prefix::              Changing the default installation prefix
1817 @end menu
1819 @node Initializing configure
1820 @section Initializing @command{configure}
1822 Every @command{configure} script must call @code{AC_INIT} before doing
1823 anything else that produces output.  Calls to silent macros, such as
1824 @code{AC_DEFUN}, may also occur prior to @code{AC_INIT}, although these
1825 are generally used via @file{aclocal.m4}, since that is implicitly
1826 included before the start of @file{configure.ac}.  The only other
1827 required macro is @code{AC_OUTPUT} (@pxref{Output}).
1829 @anchor{AC_INIT}
1830 @defmac AC_INIT (@var{package}, @var{version}, @ovar{bug-report}, @
1831   @ovar{tarname}, @ovar{url})
1832 @acindex{INIT}
1833 Process any command-line arguments and perform various initializations
1834 and verifications.
1836 Set the name of the @var{package} and its @var{version}.  These are
1837 typically used in @option{--version} support, including that of
1838 @command{configure}.  The optional argument @var{bug-report} should be
1839 the email to which users should send bug reports.  The package
1840 @var{tarname} differs from @var{package}: the latter designates the full
1841 package name (e.g., @samp{GNU Autoconf}), while the former is meant for
1842 distribution tar ball names (e.g., @samp{autoconf}).  It defaults to
1843 @var{package} with @samp{GNU } stripped, lower-cased, and all characters
1844 other than alphanumerics and underscores are changed to @samp{-}.  If
1845 provided, @var{url} should be the home page for the package.
1847 It is preferable that the arguments of @code{AC_INIT} be static, i.e.,
1848 there should not be any shell computation, but they can be computed by
1851 The following M4 macros (e.g., @code{AC_PACKAGE_NAME}), output variables
1852 (e.g., @code{PACKAGE_NAME}), and preprocessor symbols (e.g.,
1853 @code{PACKAGE_NAME}), are defined by @code{AC_INIT}:
1855 @table @asis
1856 @item @code{AC_PACKAGE_NAME}, @code{PACKAGE_NAME}
1857 @acindex{PACKAGE_NAME}
1858 @ovindex PACKAGE_NAME
1859 @cvindex PACKAGE_NAME
1860 Exactly @var{package}.
1862 @item @code{AC_PACKAGE_TARNAME}, @code{PACKAGE_TARNAME}
1863 @acindex{PACKAGE_TARNAME}
1864 @ovindex PACKAGE_TARNAME
1865 @cvindex PACKAGE_TARNAME
1866 Exactly @var{tarname}, possibly generated from @var{package}.
1868 @item @code{AC_PACKAGE_VERSION}, @code{PACKAGE_VERSION}
1869 @acindex{PACKAGE_VERSION}
1870 @ovindex PACKAGE_VERSION
1871 @cvindex PACKAGE_VERSION
1872 Exactly @var{version}.
1874 @item @code{AC_PACKAGE_STRING}, @code{PACKAGE_STRING}
1875 @acindex{PACKAGE_STRING}
1876 @ovindex PACKAGE_STRING
1877 @cvindex PACKAGE_STRING
1878 Exactly @samp{@var{package} @var{version}}.
1880 @item @code{AC_PACKAGE_BUGREPORT}, @code{PACKAGE_BUGREPORT}
1881 @acindex{PACKAGE_BUGREPORT}
1882 @ovindex PACKAGE_BUGREPORT
1883 @cvindex PACKAGE_BUGREPORT
1884 Exactly @var{bug-report}, if one was provided.
1886 @item @code{AC_PACKAGE_URL}, @code{PACKAGE_URL}
1887 @acindex{PACKAGE_URL}
1888 @ovindex PACKAGE_URL
1889 @cvindex PACKAGE_URL
1890 Exactly @var{url}, if one was provided.  If @var{url} was empty, but
1891 @var{package} begins with @samp{GNU }, then this defaults to
1892 @samp{http://@/www.gnu.org/@/software/@/@var{tarname}/}, otherwise, no URL is
1893 assumed.
1894 @end table
1895 @end defmac
1897 If your @command{configure} script does its own option processing, it
1898 should inspect @samp{$@@} or @samp{$*} immediately after calling
1899 @code{AC_INIT}, because other Autoconf macros liberally use the
1900 @command{set} command to process strings, and this has the side effect
1901 of updating @samp{$@@} and @samp{$*}.  However, we suggest that you use
1902 standard macros like @code{AC_ARG_ENABLE} instead of attempting to
1903 implement your own option processing.  @xref{Site Configuration}.
1905 @node Versioning
1906 @section Dealing with Autoconf versions
1907 @cindex Autoconf version
1908 @cindex version, Autoconf
1910 The following optional macros can be used to help choose the minimum
1911 version of Autoconf that can successfully compile a given
1912 @file{configure.ac}.
1914 @defmac AC_PREREQ (@var{version})
1915 @acindex{PREREQ}
1916 @cindex Version
1917 Ensure that a recent enough version of Autoconf is being used.  If the
1918 version of Autoconf being used to create @command{configure} is
1919 earlier than @var{version}, print an error message to the standard
1920 error output and exit with failure (exit status is 63).  For example:
1922 @example
1923 AC_PREREQ([@value{VERSION}])
1924 @end example
1926 This macro may be used before @code{AC_INIT}.
1927 @end defmac
1929 @defmac AC_AUTOCONF_VERSION
1930 @acindex{AUTOCONF_VERSION}
1931 This macro was introduced in Autoconf 2.62.  It identifies the version
1932 of Autoconf that is currently parsing the input file, in a format
1933 suitable for @code{m4_version_compare} (@pxref{m4_version_compare}); in
1934 other words, for this release of Autoconf, its value is
1935 @samp{@value{VERSION}}.  One potential use of this macro is for writing
1936 conditional fallbacks based on when a feature was added to Autoconf,
1937 rather than using @code{AC_PREREQ} to require the newer version of
1938 Autoconf.  However, remember that the Autoconf philosophy favors feature
1939 checks over version checks.
1941 You should not expand this macro directly; use
1942 @samp{m4_defn([AC_AUTOCONF_VERSION])} instead.  This is because some
1943 users might
1944 have a beta version of Autoconf installed, with arbitrary letters
1945 included in its version string.  This means it is possible for the
1946 version string to contain the name of a defined macro, such that
1947 expanding @code{AC_AUTOCONF_VERSION} would trigger the expansion of that
1948 macro during rescanning, and change the version string to be different
1949 than what you intended to check.
1950 @end defmac
1952 @node Notices
1953 @section Notices in @command{configure}
1954 @cindex Notices in @command{configure}
1956 The following macros manage version numbers for @command{configure}
1957 scripts.  Using them is optional.
1959 @defmac AC_COPYRIGHT (@var{copyright-notice})
1960 @acindex{COPYRIGHT}
1961 @cindex Copyright Notice
1962 State that, in addition to the Free Software Foundation's copyright on
1963 the Autoconf macros, parts of your @command{configure} are covered by the
1964 @var{copyright-notice}.
1966 The @var{copyright-notice} shows up in both the head of
1967 @command{configure} and in @samp{configure --version}.
1968 @end defmac
1971 @defmac AC_REVISION (@var{revision-info})
1972 @acindex{REVISION}
1973 @cindex Revision
1974 Copy revision stamp @var{revision-info} into the @command{configure}
1975 script, with any dollar signs or double-quotes removed.  This macro lets
1976 you put a revision stamp from @file{configure.ac} into @command{configure}
1977 without RCS or CVS changing it when you check in
1978 @command{configure}.  That way, you can determine easily which revision of
1979 @file{configure.ac} a particular @command{configure} corresponds to.
1981 For example, this line in @file{configure.ac}:
1983 @c The @w prevents RCS from changing the example in the manual.
1984 @example
1985 AC_REVISION([@w{$}Revision: 1.30 $])
1986 @end example
1988 @noindent
1989 produces this in @command{configure}:
1991 @example
1992 #!/bin/sh
1993 # From configure.ac Revision: 1.30
1994 @end example
1995 @end defmac
1998 @node Input
1999 @section Finding @command{configure} Input
2001 @anchor{AC_CONFIG_SRCDIR}
2002 @defmac AC_CONFIG_SRCDIR (@var{unique-file-in-source-dir})
2003 @acindex{CONFIG_SRCDIR}
2004 @var{unique-file-in-source-dir} is some file that is in the package's
2005 source directory; @command{configure} checks for this file's existence to
2006 make sure that the directory that it is told contains the source code in
2007 fact does.  Occasionally people accidentally specify the wrong directory
2008 with @option{--srcdir}; this is a safety check.  @xref{configure
2009 Invocation}, for more information.
2010 @end defmac
2013 @c FIXME: Remove definitively once --install explained.
2015 @c Small packages may store all their macros in @code{aclocal.m4}.  As the
2016 @c set of macros grows, or for maintenance reasons, a maintainer may prefer
2017 @c to split the macros in several files.  In this case, Autoconf must be
2018 @c told which files to load, and in which order.
2020 @c @defmac AC_INCLUDE (@var{file}@dots{})
2021 @c @acindex{INCLUDE}
2022 @c @c FIXME: There is no longer shell globbing.
2023 @c Read the macro definitions that appear in the listed files.  A list of
2024 @c space-separated file names or shell globbing patterns is expected.  The
2025 @c files are read in the order they're listed.
2027 @c Because the order of definition of macros is important (only the last
2028 @c definition of a macro is used), beware that it is @code{AC_INIT} that
2029 @c loads @file{acsite.m4} and @file{aclocal.m4}.  Note that
2030 @c @code{AC_INCLUDE}ing a file before @code{AC_INIT} or within
2031 @c @file{aclocal.m4} is different from doing so after @code{AC_INIT}: in
2032 @c the latter case, non-macro lines from included files may end up in the
2033 @c @file{configure} script, whereas in the former case, they'd be discarded
2034 @c just like any text that appear before @code{AC_INIT}.
2035 @c @end defmac
2037 Packages that do manual configuration or use the @command{install} program
2038 might need to tell @command{configure} where to find some other shell
2039 scripts by calling @code{AC_CONFIG_AUX_DIR}, though the default places
2040 it looks are correct for most cases.
2042 @defmac AC_CONFIG_AUX_DIR (@var{dir})
2043 @acindex{CONFIG_AUX_DIR}
2044 Use the auxiliary build tools (e.g., @file{install-sh},
2045 @file{config.sub}, @file{config.guess}, Cygnus @command{configure},
2046 Automake and Libtool scripts, etc.)@: that are in directory @var{dir}.
2047 These are auxiliary files used in configuration.  @var{dir} can be
2048 either absolute or relative to @file{@var{srcdir}}.  The default is
2049 @file{@var{srcdir}} or @file{@var{srcdir}/..} or
2050 @file{@var{srcdir}/../..}, whichever is the first that contains
2051 @file{install-sh}.  The other files are not checked for, so that using
2052 @code{AC_PROG_INSTALL} does not automatically require distributing the
2053 other auxiliary files.  It checks for @file{install.sh} also, but that
2054 name is obsolete because some @command{make} have a rule that creates
2055 @file{install} from it if there is no makefile.
2057 The auxiliary directory is commonly named @file{build-aux}.
2058 If you need portability to DOS variants, do not name the
2059 auxiliary directory @file{aux}.  @xref{File System Conventions}.
2060 @end defmac
2062 @defmac AC_REQUIRE_AUX_FILE (@var{file})
2063 @acindex{REQUIRE_AUX_FILE}
2064 Declares that @var{file} is expected in the directory defined above.  In
2065 Autoconf proper, this macro does nothing: its sole purpose is to be
2066 traced by third-party tools to produce a list of expected auxiliary
2067 files.  For instance it is called by macros like @code{AC_PROG_INSTALL}
2068 (@pxref{Particular Programs}) or @code{AC_CANONICAL_BUILD}
2069 (@pxref{Canonicalizing}) to register the auxiliary files they need.
2070 @end defmac
2072 Similarly, packages that use @command{aclocal} should declare where
2073 local macros can be found using @code{AC_CONFIG_MACRO_DIR}.
2075 @defmac AC_CONFIG_MACRO_DIR (@var{dir})
2076 @acindex{CONFIG_MACRO_DIR}
2077 Specify @var{dir} as the location of additional local Autoconf macros.
2078 This macro is intended for use by future versions of commands like
2079 @command{autoreconf} that trace macro calls.  It should be called
2080 directly from @file{configure.ac} so that tools that install macros for
2081 @command{aclocal} can find the macros' declarations.
2083 Note that if you use @command{aclocal} from Automake to generate
2084 @file{aclocal.m4}, you must also set @code{ACLOCAL_AMFLAGS = -I
2085 @var{dir}} in your top-level @file{Makefile.am}.  Due to a limitation in
2086 the Autoconf implementation of @command{autoreconf}, these include
2087 directives currently must be set on a single line in @file{Makefile.am},
2088 without any backslash-newlines.
2089 @end defmac
2092 @node Output
2093 @section Outputting Files
2094 @cindex Outputting files
2096 Every Autoconf script, e.g., @file{configure.ac}, should finish by
2097 calling @code{AC_OUTPUT}.  That is the macro that generates and runs
2098 @file{config.status}, which in turn creates the makefiles and any
2099 other files resulting from configuration.  This is the only required
2100 macro besides @code{AC_INIT} (@pxref{Input}).
2102 @anchor{AC_OUTPUT}
2103 @defmac AC_OUTPUT
2104 @acindex{OUTPUT}
2105 @cindex Instantiation
2106 Generate @file{config.status} and launch it.  Call this macro once, at
2107 the end of @file{configure.ac}.
2109 @file{config.status} performs all the configuration actions: all the
2110 output files (see @ref{Configuration Files}, macro
2111 @code{AC_CONFIG_FILES}), header files (see @ref{Configuration Headers},
2112 macro @code{AC_CONFIG_HEADERS}), commands (see @ref{Configuration
2113 Commands}, macro @code{AC_CONFIG_COMMANDS}), links (see
2114 @ref{Configuration Links}, macro @code{AC_CONFIG_LINKS}), subdirectories
2115 to configure (see @ref{Subdirectories}, macro @code{AC_CONFIG_SUBDIRS})
2116 are honored.
2118 The location of your @code{AC_OUTPUT} invocation is the exact point
2119 where configuration actions are taken: any code afterwards is
2120 executed by @command{configure} once @command{config.status} was run.  If
2121 you want to bind actions to @command{config.status} itself
2122 (independently of whether @command{configure} is being run), see
2123 @ref{Configuration Commands, , Running Arbitrary Configuration
2124 Commands}.
2125 @end defmac
2127 Historically, the usage of @code{AC_OUTPUT} was somewhat different.
2128 @xref{Obsolete Macros}, for a description of the arguments that
2129 @code{AC_OUTPUT} used to support.
2132 If you run @command{make} in subdirectories, you should run it using the
2133 @command{make} variable @code{MAKE}.  Most versions of @command{make} set
2134 @code{MAKE} to the name of the @command{make} program plus any options it
2135 was given.  (But many do not include in it the values of any variables
2136 set on the command line, so those are not passed on automatically.)
2137 Some old versions of @command{make} do not set this variable.  The
2138 following macro allows you to use it even with those versions.
2140 @anchor{AC_PROG_MAKE_SET}
2141 @defmac AC_PROG_MAKE_SET
2142 @acindex{PROG_MAKE_SET}
2143 @ovindex SET_MAKE
2144 If the Make command, @code{$MAKE} if set or else @samp{make}, predefines
2145 @code{$(MAKE)}, define output variable @code{SET_MAKE} to be empty.
2146 Otherwise, define @code{SET_MAKE} to a macro definition that sets
2147 @code{$(MAKE)}, such as @samp{MAKE=make}.  Calls @code{AC_SUBST} for
2148 @code{SET_MAKE}.
2149 @end defmac
2151 If you use this macro, place a line like this in each @file{Makefile.in}
2152 that runs @command{MAKE} on other directories:
2154 @example
2155 @@SET_MAKE@@
2156 @end example
2160 @node Configuration Actions
2161 @section Performing Configuration Actions
2162 @cindex Configuration actions
2164 @file{configure} is designed so that it appears to do everything itself,
2165 but there is actually a hidden slave: @file{config.status}.
2166 @file{configure} is in charge of examining your system, but it is
2167 @file{config.status} that actually takes the proper actions based on the
2168 results of @file{configure}.  The most typical task of
2169 @file{config.status} is to @emph{instantiate} files.
2171 @acindex{CONFIG_@var{ITEMS}}
2172 This section describes the common behavior of the four standard
2173 instantiating macros: @code{AC_CONFIG_FILES}, @code{AC_CONFIG_HEADERS},
2174 @code{AC_CONFIG_COMMANDS} and @code{AC_CONFIG_LINKS}.  They all
2175 have this prototype:
2177 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
2178 @c awful.
2179 @example
2180 AC_CONFIG_@var{ITEMS}(@var{tag}@dots{}, @r{[}@var{commands}@r{]}, @r{[}@var{init-cmds}@r{]})
2181 @end example
2183 @noindent
2184 where the arguments are:
2186 @table @var
2187 @item tag@dots{}
2188 A blank-or-newline-separated list of tags, which are typically the names of
2189 the files to instantiate.
2191 You are encouraged to use literals as @var{tags}.  In particular, you
2192 should avoid
2194 @example
2195 @dots{} && my_foos="$my_foos fooo"
2196 @dots{} && my_foos="$my_foos foooo"
2197 AC_CONFIG_@var{ITEMS}([$my_foos])
2198 @end example
2200 @noindent
2201 and use this instead:
2203 @example
2204 @dots{} && AC_CONFIG_@var{ITEMS}([fooo])
2205 @dots{} && AC_CONFIG_@var{ITEMS}([foooo])
2206 @end example
2208 The macros @code{AC_CONFIG_FILES} and @code{AC_CONFIG_HEADERS} use
2209 special @var{tag} values: they may have the form @samp{@var{output}} or
2210 @samp{@var{output}:@var{inputs}}.  The file @var{output} is instantiated
2211 from its templates, @var{inputs} (defaulting to @samp{@var{output}.in}).
2213 @samp{AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk)]},
2214 for example, asks for
2215 the creation of the file @file{Makefile} that contains the expansion of the
2216 output variables in the concatenation of @file{boiler/top.mk} and
2217 @file{boiler/bot.mk}.
2219 The special value @samp{-} might be used to denote the standard output
2220 when used in @var{output}, or the standard input when used in the
2221 @var{inputs}.  You most probably don't need to use this in
2222 @file{configure.ac}, but it is convenient when using the command line
2223 interface of @file{./config.status}, see @ref{config.status Invocation},
2224 for more details.
2226 The @var{inputs} may be absolute or relative file names.  In the latter
2227 case they are first looked for in the build tree, and then in the source
2228 tree.  Input files should be text files, and a line length below 2000
2229 bytes should be safe.
2231 @item commands
2232 Shell commands output literally into @file{config.status}, and
2233 associated with a tag that the user can use to tell @file{config.status}
2234 which commands to run.  The commands are run each time a @var{tag}
2235 request is given to @file{config.status}, typically each time the file
2236 @file{@var{tag}} is created.
2238 The variables set during the execution of @command{configure} are
2239 @emph{not} available here: you first need to set them via the
2240 @var{init-cmds}.  Nonetheless the following variables are precomputed:
2242 @table @code
2243 @item srcdir
2244 The name of the top source directory, assuming that the working
2245 directory is the top build directory.  This
2246 is what the @command{configure} option @option{--srcdir} sets.
2248 @item ac_top_srcdir
2249 The name of the top source directory, assuming that the working
2250 directory is the current build directory.
2252 @item ac_top_build_prefix
2253 The name of the top build directory, assuming that the working
2254 directory is the current build directory.
2255 It can be empty, or else ends with a slash, so that you may concatenate
2258 @item ac_srcdir
2259 The name of the corresponding source directory, assuming that the
2260 working directory is the current build directory.
2262 @item tmp
2263 The name of a temporary directory within the build tree, which you
2264 can use if you need to create additional temporary files.  The
2265 directory is cleaned up when @command{config.status} is done or
2266 interrupted.  Please use package-specific file name prefixes to
2267 avoid clashing with files that @command{config.status} may use
2268 internally.
2269 @end table
2271 @noindent
2272 The @dfn{current} directory refers to the directory (or
2273 pseudo-directory) containing the input part of @var{tags}.  For
2274 instance, running
2276 @example
2277 AC_CONFIG_COMMANDS([deep/dir/out:in/in.in], [@dots{}], [@dots{}])
2278 @end example
2280 @noindent
2281  with @option{--srcdir=../package} produces the following values:
2283 @example
2284 # Argument of --srcdir
2285 srcdir='../package'
2286 # Reversing deep/dir
2287 ac_top_build_prefix='../../'
2288 # Concatenation of $ac_top_build_prefix and srcdir
2289 ac_top_srcdir='../../../package'
2290 # Concatenation of $ac_top_srcdir and deep/dir
2291 ac_srcdir='../../../package/deep/dir'
2292 @end example
2294 @noindent
2295 independently of @samp{in/in.in}.
2297 @item init-cmds
2298 Shell commands output @emph{unquoted} near the beginning of
2299 @file{config.status}, and executed each time @file{config.status} runs
2300 (regardless of the tag).  Because they are unquoted, for example,
2301 @samp{$var} is output as the value of @code{var}.  @var{init-cmds}
2302 is typically used by @file{configure} to give @file{config.status} some
2303 variables it needs to run the @var{commands}.
2305 You should be extremely cautious in your variable names: all the
2306 @var{init-cmds} share the same name space and may overwrite each other
2307 in unpredictable ways.  Sorry@enddots{}
2308 @end table
2310 All these macros can be called multiple times, with different
2311 @var{tag} values, of course!
2314 @node Configuration Files
2315 @section Creating Configuration Files
2316 @cindex Creating configuration files
2317 @cindex Configuration file creation
2319 Be sure to read the previous section, @ref{Configuration Actions}.
2321 @anchor{AC_CONFIG_FILES}
2322 @defmac AC_CONFIG_FILES (@var{file}@dots{}, @ovar{cmds}, @ovar{init-cmds})
2323 @acindex{CONFIG_FILES}
2324 Make @code{AC_OUTPUT} create each @file{@var{file}} by copying an input
2325 file (by default @file{@var{file}.in}), substituting the output variable
2326 values.
2327 @c Before we used to have this feature, which was later rejected
2328 @c because it complicates the writing of makefiles:
2329 @c If the file would be unchanged, it is left untouched, to preserve
2330 @c timestamp.
2331 This macro is one of the instantiating macros; see @ref{Configuration
2332 Actions}.  @xref{Makefile Substitutions}, for more information on using
2333 output variables.  @xref{Setting Output Variables}, for more information
2334 on creating them.  This macro creates the directory that the file is in
2335 if it doesn't exist.  Usually, makefiles are created this way,
2336 but other files, such as @file{.gdbinit}, can be specified as well.
2338 Typical calls to @code{AC_CONFIG_FILES} look like this:
2340 @example
2341 AC_CONFIG_FILES([Makefile src/Makefile man/Makefile X/Imakefile])
2342 AC_CONFIG_FILES([autoconf], [chmod +x autoconf])
2343 @end example
2345 You can override an input file name by appending to @var{file} a
2346 colon-separated list of input files.  Examples:
2348 @example
2349 AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk]
2350                 [lib/Makefile:boiler/lib.mk])
2351 @end example
2353 @noindent
2354 Doing this allows you to keep your file names acceptable to
2355 DOS variants, or
2356 to prepend and/or append boilerplate to the file.
2357 @end defmac
2361 @node Makefile Substitutions
2362 @section Substitutions in Makefiles
2363 @cindex Substitutions in makefiles
2364 @cindex Makefile substitutions
2366 Each subdirectory in a distribution that contains something to be
2367 compiled or installed should come with a file @file{Makefile.in}, from
2368 which @command{configure} creates a file @file{Makefile} in that directory.
2369 To create @file{Makefile}, @command{configure} performs a simple variable
2370 substitution, replacing occurrences of @samp{@@@var{variable}@@} in
2371 @file{Makefile.in} with the value that @command{configure} has determined
2372 for that variable.  Variables that are substituted into output files in
2373 this way are called @dfn{output variables}.  They are ordinary shell
2374 variables that are set in @command{configure}.  To make @command{configure}
2375 substitute a particular variable into the output files, the macro
2376 @code{AC_SUBST} must be called with that variable name as an argument.
2377 Any occurrences of @samp{@@@var{variable}@@} for other variables are
2378 left unchanged.  @xref{Setting Output Variables}, for more information
2379 on creating output variables with @code{AC_SUBST}.
2381 A software package that uses a @command{configure} script should be
2382 distributed with a file @file{Makefile.in}, but no makefile; that
2383 way, the user has to properly configure the package for the local system
2384 before compiling it.
2386 @xref{Makefile Conventions, , Makefile Conventions, standards, The
2387 GNU Coding Standards}, for more information on what to put in
2388 makefiles.
2390 @menu
2391 * Preset Output Variables::     Output variables that are always set
2392 * Installation Directory Variables::  Other preset output variables
2393 * Changed Directory Variables:: Warnings about @file{datarootdir}
2394 * Build Directories::           Supporting multiple concurrent compiles
2395 * Automatic Remaking::          Makefile rules for configuring
2396 @end menu
2398 @node Preset Output Variables
2399 @subsection Preset Output Variables
2400 @cindex Output variables
2402 Some output variables are preset by the Autoconf macros.  Some of the
2403 Autoconf macros set additional output variables, which are mentioned in
2404 the descriptions for those macros.  @xref{Output Variable Index}, for a
2405 complete list of output variables.  @xref{Installation Directory
2406 Variables}, for the list of the preset ones related to installation
2407 directories.  Below are listed the other preset ones, many of which are
2408 precious variables (@pxref{Setting Output Variables},
2409 @code{AC_ARG_VAR}).
2411 The preset variables which are available during @file{config.status}
2412 (@pxref{Configuration Actions}) may also be used during
2413 @command{configure} tests.  For example, it is permissible to reference
2414 @samp{$srcdir} when constructing a list of directories to pass via
2415 option @option{-I} during a compiler feature check.  When used in this
2416 manner, coupled with the fact that @command{configure} is always run
2417 from the top build directory, it is sufficient to use just
2418 @samp{$srcdir} instead of @samp{$top_srcdir}.
2420 @c Just say no to ASCII sorting!  We're humans, not computers.
2421 @c These variables are listed as they would be in a dictionary:
2422 @c actor
2423 @c Actress
2424 @c actress
2426 @defvar CFLAGS
2427 @evindex CFLAGS
2428 @ovindex CFLAGS
2429 Debugging and optimization options for the C compiler.  If it is not set
2430 in the environment when @command{configure} runs, the default value is set
2431 when you call @code{AC_PROG_CC} (or empty if you don't).  @command{configure}
2432 uses this variable when compiling or linking programs to test for C features.
2434 If a compiler option affects only the behavior of the preprocessor
2435 (e.g., @option{-D@var{name}}), it should be put into @code{CPPFLAGS}
2436 instead.  If it affects only the linker (e.g., @option{-L@var{directory}}),
2437 it should be put into @code{LDFLAGS} instead.  If it
2438 affects only the compiler proper, @code{CFLAGS} is the natural home for
2439 it.  If an option affects multiple phases of the compiler, though,
2440 matters get tricky.  One approach to put such options directly into
2441 @code{CC}, e.g., @code{CC='gcc -m64'}.  Another is to put them into both
2442 @code{CPPFLAGS} and @code{LDFLAGS}, but not into @code{CFLAGS}.
2444 However, remember that some @file{Makefile} variables are reserved by
2445 the GNU Coding Standards for the use of the ``user''---the person
2446 building the package.  For instance, @code{CFLAGS} is one such variable.
2448 Sometimes package developers are tempted to set user variables such as
2449 @code{CFLAGS} because it appears to make their job easier.  However, the
2450 package itself should never set a user variable, particularly not to
2451 include switches that are required for proper compilation of the
2452 package.  Since these variables are documented as being for the package
2453 builder, that person rightfully expects to be able to override any of
2454 these variables at build time.  If the package developer needs to add
2455 switches without interfering with the user, the proper way to do that is
2456 to introduce an additional variable.  Automake makes this easy by
2457 introducing @code{AM_CFLAGS} (@pxref{Flag Variables Ordering, , ,
2458 automake, GNU Automake}), but the concept is the same even if
2459 Automake is not used.
2460 @end defvar
2462 @defvar configure_input
2463 @ovindex configure_input
2464 A comment saying that the file was generated automatically by
2465 @command{configure} and giving the name of the input file.
2466 @code{AC_OUTPUT} adds a comment line containing this variable to the top
2467 of every makefile it creates.  For other files, you should
2468 reference this variable in a comment at the top of each input file.  For
2469 example, an input shell script should begin like this:
2471 @example
2472 #!/bin/sh
2473 # @@configure_input@@
2474 @end example
2476 @noindent
2477 The presence of that line also reminds people editing the file that it
2478 needs to be processed by @command{configure} in order to be used.
2479 @end defvar
2481 @defvar CPPFLAGS
2482 @evindex CPPFLAGS
2483 @ovindex CPPFLAGS
2484 Preprocessor options for the C, C++, Objective C, and Objective C++
2485 preprocessors and compilers.  If
2486 it is not set in the environment when @command{configure} runs, the default
2487 value is empty.  @command{configure} uses this variable when preprocessing
2488 or compiling programs to test for C, C++, Objective C, and Objective C++
2489 features.
2491 This variable's contents should contain options like @option{-I},
2492 @option{-D}, and @option{-U} that affect only the behavior of the
2493 preprocessor.  Please see the explanation of @code{CFLAGS} for what you
2494 can do if an option affects other phases of the compiler as well.
2496 Currently, @command{configure} always links as part of a single
2497 invocation of the compiler that also preprocesses and compiles, so it
2498 uses this variable also when linking programs.  However, it is unwise to
2499 depend on this behavior because the GNU Coding Standards do
2500 not require it and many packages do not use @code{CPPFLAGS} when linking
2501 programs.
2503 @xref{Special Chars in Variables}, for limitations that @code{CPPFLAGS}
2504 might run into.
2505 @end defvar
2507 @defvar CXXFLAGS
2508 @evindex CXXFLAGS
2509 @ovindex CXXFLAGS
2510 Debugging and optimization options for the C++ compiler.  It acts like
2511 @code{CFLAGS}, but for C++ instead of C.
2512 @end defvar
2514 @defvar DEFS
2515 @ovindex DEFS
2516 @option{-D} options to pass to the C compiler.  If @code{AC_CONFIG_HEADERS}
2517 is called, @command{configure} replaces @samp{@@DEFS@@} with
2518 @option{-DHAVE_CONFIG_H} instead (@pxref{Configuration Headers}).  This
2519 variable is not defined while @command{configure} is performing its tests,
2520 only when creating the output files.  @xref{Setting Output Variables}, for
2521 how to check the results of previous tests.
2522 @end defvar
2524 @defvar ECHO_C
2525 @defvarx ECHO_N
2526 @defvarx ECHO_T
2527 @ovindex ECHO_C
2528 @ovindex ECHO_N
2529 @ovindex ECHO_T
2530 How does one suppress the trailing newline from @command{echo} for
2531 question-answer message pairs?  These variables provide a way:
2533 @example
2534 echo $ECHO_N "And the winner is... $ECHO_C"
2535 sleep 100000000000
2536 echo "$@{ECHO_T@}dead."
2537 @end example
2539 @noindent
2540 Some old and uncommon @command{echo} implementations offer no means to
2541 achieve this, in which case @code{ECHO_T} is set to tab.  You might not
2542 want to use it.
2543 @end defvar
2545 @defvar ERLCFLAGS
2546 @evindex ERLCFLAGS
2547 @ovindex ERLCFLAGS
2548 Debugging and optimization options for the Erlang compiler.  If it is not set
2549 in the environment when @command{configure} runs, the default value is empty.
2550 @command{configure} uses this variable when compiling
2551 programs to test for Erlang features.
2552 @end defvar
2554 @defvar FCFLAGS
2555 @evindex FCFLAGS
2556 @ovindex FCFLAGS
2557 Debugging and optimization options for the Fortran compiler.  If it
2558 is not set in the environment when @command{configure} runs, the default
2559 value is set when you call @code{AC_PROG_FC} (or empty if you don't).
2560 @command{configure} uses this variable when compiling or linking
2561 programs to test for Fortran features.
2562 @end defvar
2564 @defvar FFLAGS
2565 @evindex FFLAGS
2566 @ovindex FFLAGS
2567 Debugging and optimization options for the Fortran 77 compiler.  If it
2568 is not set in the environment when @command{configure} runs, the default
2569 value is set when you call @code{AC_PROG_F77} (or empty if you don't).
2570 @command{configure} uses this variable when compiling or linking
2571 programs to test for Fortran 77 features.
2572 @end defvar
2574 @defvar LDFLAGS
2575 @evindex LDFLAGS
2576 @ovindex LDFLAGS
2577 Options for the linker.  If it is not set
2578 in the environment when @command{configure} runs, the default value is empty.
2579 @command{configure} uses this variable when linking programs to test for
2580 C, C++, Objective C, Objective C++, and Fortran features.
2582 This variable's contents should contain options like @option{-s} and
2583 @option{-L} that affect only the behavior of the linker.  Please see the
2584 explanation of @code{CFLAGS} for what you can do if an option also
2585 affects other phases of the compiler.
2587 Don't use this variable to pass library names
2588 (@option{-l}) to the linker; use @code{LIBS} instead.
2589 @end defvar
2591 @defvar LIBS
2592 @evindex LIBS
2593 @ovindex LIBS
2594 @option{-l} options to pass to the linker.  The default value is empty,
2595 but some Autoconf macros may prepend extra libraries to this variable if
2596 those libraries are found and provide necessary functions, see
2597 @ref{Libraries}.  @command{configure} uses this variable when linking
2598 programs to test for C, C++, Objective C, Objective C++, and Fortran
2599 features.
2600 @end defvar
2602 @defvar OBJCFLAGS
2603 @evindex OBJCFLAGS
2604 @ovindex OBJCFLAGS
2605 Debugging and optimization options for the Objective C compiler.  It
2606 acts like @code{CFLAGS}, but for Objective C instead of C.
2607 @end defvar
2609 @defvar OBJCXXFLAGS
2610 @evindex OBJCXXFLAGS
2611 @ovindex OBJCXXFLAGS
2612 Debugging and optimization options for the Objective C++ compiler.  It
2613 acts like @code{CXXFLAGS}, but for Objective C++ instead of C++.
2614 @end defvar
2616 @defvar builddir
2617 @ovindex builddir
2618 Rigorously equal to @samp{.}.  Added for symmetry only.
2619 @end defvar
2621 @defvar abs_builddir
2622 @ovindex abs_builddir
2623 Absolute name of @code{builddir}.
2624 @end defvar
2626 @defvar top_builddir
2627 @ovindex top_builddir
2628 The relative name of the top level of the current build tree.  In the
2629 top-level directory, this is the same as @code{builddir}.
2630 @end defvar
2632 @defvar top_build_prefix
2633 @ovindex top_build_prefix
2634 The relative name of the top level of the current build tree with final
2635 slash if nonemtpy.  This is the same as @code{top_builddir}, except that
2636 it contains zero or more runs of @code{../}, so it should not be
2637 appended with a slash for concatenation.  This helps for @command{make}
2638 implementations that otherwise do not treat @file{./file} and @file{file}
2639 as equal in the toplevel build directory.
2640 @end defvar
2642 @defvar abs_top_builddir
2643 @ovindex abs_top_builddir
2644 Absolute name of @code{top_builddir}.
2645 @end defvar
2647 @defvar srcdir
2648 @ovindex srcdir
2649 The name of the directory that contains the source code for
2650 that makefile.
2651 @end defvar
2653 @defvar abs_srcdir
2654 @ovindex abs_srcdir
2655 Absolute name of @code{srcdir}.
2656 @end defvar
2658 @defvar top_srcdir
2659 @ovindex top_srcdir
2660 The name of the top-level source code directory for the
2661 package.  In the top-level directory, this is the same as @code{srcdir}.
2662 @end defvar
2664 @defvar abs_top_srcdir
2665 @ovindex abs_top_srcdir
2666 Absolute name of @code{top_srcdir}.
2667 @end defvar
2669 @node Installation Directory Variables
2670 @subsection Installation Directory Variables
2671 @cindex Installation directories
2672 @cindex Directories, installation
2674 The following variables specify the directories for
2675 package installation, see @ref{Directory Variables, , Variables for
2676 Installation Directories, standards, The GNU Coding
2677 Standards}, for more information.  Each variable corresponds to an
2678 argument of @command{configure}; trailing slashes are stripped so that
2679 expressions such as @samp{$@{prefix@}/lib} expand with only one slash
2680 between directory names.  See the end of this section for
2681 details on when and how to use these variables.
2683 @defvar bindir
2684 @ovindex bindir
2685 The directory for installing executables that users run.
2686 @end defvar
2688 @defvar datadir
2689 @ovindex datadir
2690 The directory for installing idiosyncratic read-only
2691 architecture-independent data.
2692 @end defvar
2694 @defvar datarootdir
2695 @ovindex datarootdir
2696 The root of the directory tree for read-only architecture-independent
2697 data files.
2698 @end defvar
2700 @defvar docdir
2701 @ovindex docdir
2702 The directory for installing documentation files (other than Info and
2703 man).
2704 @end defvar
2706 @defvar dvidir
2707 @ovindex dvidir
2708 The directory for installing documentation files in DVI format.
2709 @end defvar
2711 @defvar exec_prefix
2712 @ovindex exec_prefix
2713 The installation prefix for architecture-dependent files.  By default
2714 it's the same as @code{prefix}.  You should avoid installing anything
2715 directly to @code{exec_prefix}.  However, the default value for
2716 directories containing architecture-dependent files should be relative
2717 to @code{exec_prefix}.
2718 @end defvar
2720 @defvar htmldir
2721 @ovindex htmldir
2722 The directory for installing HTML documentation.
2723 @end defvar
2725 @defvar includedir
2726 @ovindex includedir
2727 The directory for installing C header files.
2728 @end defvar
2730 @defvar infodir
2731 @ovindex infodir
2732 The directory for installing documentation in Info format.
2733 @end defvar
2735 @defvar libdir
2736 @ovindex libdir
2737 The directory for installing object code libraries.
2738 @end defvar
2740 @defvar libexecdir
2741 @ovindex libexecdir
2742 The directory for installing executables that other programs run.
2743 @end defvar
2745 @defvar localedir
2746 @ovindex localedir
2747 The directory for installing locale-dependent but
2748 architecture-independent data, such as message catalogs.  This directory
2749 usually has a subdirectory per locale.
2750 @end defvar
2752 @defvar localstatedir
2753 @ovindex localstatedir
2754 The directory for installing modifiable single-machine data.
2755 @end defvar
2757 @defvar mandir
2758 @ovindex mandir
2759 The top-level directory for installing documentation in man format.
2760 @end defvar
2762 @defvar oldincludedir
2763 @ovindex oldincludedir
2764 The directory for installing C header files for non-GCC compilers.
2765 @end defvar
2767 @defvar pdfdir
2768 @ovindex pdfdir
2769 The directory for installing PDF documentation.
2770 @end defvar
2772 @defvar prefix
2773 @ovindex prefix
2774 The common installation prefix for all files.  If @code{exec_prefix}
2775 is defined to a different value, @code{prefix} is used only for
2776 architecture-independent files.
2777 @end defvar
2779 @defvar psdir
2780 @ovindex psdir
2781 The directory for installing PostScript documentation.
2782 @end defvar
2784 @defvar sbindir
2785 @ovindex sbindir
2786 The directory for installing executables that system
2787 administrators run.
2788 @end defvar
2790 @defvar sharedstatedir
2791 @ovindex sharedstatedir
2792 The directory for installing modifiable architecture-independent data.
2793 @end defvar
2795 @defvar sysconfdir
2796 @ovindex sysconfdir
2797 The directory for installing read-only single-machine data.
2798 @end defvar
2801 Most of these variables have values that rely on @code{prefix} or
2802 @code{exec_prefix}.  It is deliberate that the directory output
2803 variables keep them unexpanded: typically @samp{@@datarootdir@@} is
2804 replaced by @samp{$@{prefix@}/share}, not @samp{/usr/local/share}, and
2805 @samp{@@datadir@@} is replaced by @samp{$@{datarootdir@}}.
2807 This behavior is mandated by the GNU Coding Standards, so that when
2808 the user runs:
2810 @table @samp
2811 @item make
2812 she can still specify a different prefix from the one specified to
2813 @command{configure}, in which case, if needed, the package should hard
2814 code dependencies corresponding to the make-specified prefix.
2816 @item make install
2817 she can specify a different installation location, in which case the
2818 package @emph{must} still depend on the location which was compiled in
2819 (i.e., never recompile when @samp{make install} is run).  This is an
2820 extremely important feature, as many people may decide to install all
2821 the files of a package grouped together, and then install links from
2822 the final locations to there.
2823 @end table
2825 In order to support these features, it is essential that
2826 @code{datarootdir} remains defined as @samp{$@{prefix@}/share},
2827 so that its value can be expanded based
2828 on the current value of @code{prefix}.
2830 A corollary is that you should not use these variables except in
2831 makefiles.  For instance, instead of trying to evaluate @code{datadir}
2832 in @file{configure} and hard-coding it in makefiles using
2833 e.g., @samp{AC_DEFINE_UNQUOTED([DATADIR], ["$datadir"], [Data directory.])},
2834 you should add
2835 @option{-DDATADIR='$(datadir)'} to your makefile's definition of
2836 @code{CPPFLAGS} (@code{AM_CPPFLAGS} if you are also using Automake).
2838 Similarly, you should not rely on @code{AC_CONFIG_FILES} to replace
2839 @code{bindir} and friends in your shell scripts and other files; instead,
2840 let @command{make} manage their replacement.  For instance Autoconf
2841 ships templates of its shell scripts ending with @samp{.in}, and uses a
2842 makefile snippet similar to the following to build scripts like
2843 @command{autoheader} and @command{autom4te}:
2845 @example
2846 @group
2847 edit = sed \
2848         -e 's|@@bindir[@@]|$(bindir)|g' \
2849         -e 's|@@pkgdatadir[@@]|$(pkgdatadir)|g' \
2850         -e 's|@@prefix[@@]|$(prefix)|g'
2851 @end group
2853 @group
2854 autoheader autom4te: Makefile
2855         rm -f $@@ $@@.tmp
2856         srcdir=''; \
2857           test -f ./$@@.in || srcdir=$(srcdir)/; \
2858           $(edit) $$@{srcdir@}$@@.in >$@@.tmp
2859 @c $$ restore font-lock
2860         chmod +x $@@.tmp
2861         chmod a-w $@@.tmp
2862         mv $@@.tmp $@@
2863 @end group
2865 @group
2866 autoheader: $(srcdir)/autoheader.in
2867 autom4te: $(srcdir)/autom4te.in
2868 @end group
2869 @end example
2871 Some details are noteworthy:
2873 @table @asis
2874 @item @samp{@@bindir[@@]}
2875 The brackets prevent @command{configure} from replacing
2876 @samp{@@bindir@@} in the Sed expression itself.
2877 Brackets are preferable to a backslash here, since
2878 Posix says @samp{\@@} is not portable.
2880 @item @samp{$(bindir)}
2881 Don't use @samp{@@bindir@@}!  Use the matching makefile variable
2882 instead.
2884 @item @samp{$(pkgdatadir)}
2885 The example takes advantage of the variable @samp{$(pkgdatadir)}
2886 provided by Automake; it is equivalent to @samp{$(datadir)/$(PACKAGE)}.
2888 @item @samp{/}
2889 Don't use @samp{/} in the Sed expressions that replace file names since
2890 most likely the
2891 variables you use, such as @samp{$(bindir)}, contain @samp{/}.
2892 Use a shell metacharacter instead, such as @samp{|}.
2894 @item special characters
2895 File names, file name components, and the value of @code{VPATH} should
2896 not contain shell metacharacters or white
2897 space.  @xref{Special Chars in Variables}.
2899 @item dependency on @file{Makefile}
2900 Since @code{edit} uses values that depend on the configuration specific
2901 values (@code{prefix}, etc.)@: and not only on @code{VERSION} and so forth,
2902 the output depends on @file{Makefile}, not @file{configure.ac}.
2904 @item @samp{$@@}
2905 The main rule is generic, and uses @samp{$@@} extensively to
2906 avoid the need for multiple copies of the rule.
2908 @item Separated dependencies and single suffix rules
2909 You can't use them!  The above snippet cannot be (portably) rewritten
2912 @example
2913 autoconf autoheader: Makefile
2914 @group
2915 .in:
2916         rm -f $@@ $@@.tmp
2917         $(edit) $< >$@@.tmp
2918         chmod +x $@@.tmp
2919         mv $@@.tmp $@@
2920 @end group
2921 @end example
2923 @xref{Single Suffix Rules}, for details.
2925 @item @samp{$(srcdir)}
2926 Be sure to specify the name of the source directory,
2927 otherwise the package won't support separated builds.
2928 @end table
2930 For the more specific installation of Erlang libraries, the following variables
2931 are defined:
2933 @defvar ERLANG_INSTALL_LIB_DIR
2934 @ovindex ERLANG_INSTALL_LIB_DIR
2935 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
2936 The common parent directory of Erlang library installation directories.
2937 This variable is set by calling the @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR}
2938 macro in @file{configure.ac}.
2939 @end defvar
2941 @defvar ERLANG_INSTALL_LIB_DIR_@var{library}
2942 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
2943 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
2944 The installation directory for Erlang library @var{library}.
2945 This variable is set by using the
2946 @samp{AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR}
2947 macro in @file{configure.ac}.
2948 @end defvar
2950 @xref{Erlang Libraries}, for details.
2953 @node Changed Directory Variables
2954 @subsection Changed Directory Variables
2955 @cindex @file{datarootdir}
2957 In Autoconf 2.60, the set of directory variables has changed, and the
2958 defaults of some variables have been adjusted
2959 (@pxref{Installation Directory Variables}) to changes in the
2960 GNU Coding Standards.  Notably, @file{datadir}, @file{infodir}, and
2961 @file{mandir} are now expressed in terms of @file{datarootdir}.  If you are
2962 upgrading from an earlier Autoconf version, you may need to adjust your files
2963 to ensure that the directory variables are substituted correctly
2964 (@pxref{Defining Directories}), and that a definition of @file{datarootdir} is
2965 in place.  For example, in a @file{Makefile.in}, adding
2967 @example
2968 datarootdir = @@datarootdir@@
2969 @end example
2971 @noindent
2972 is usually sufficient.  If you use Automake to create @file{Makefile.in},
2973 it will add this for you.
2975 To help with the transition, Autoconf warns about files that seem to use
2976 @code{datarootdir} without defining it.  In some cases, it then expands
2977 the value of @code{$datarootdir} in substitutions of the directory
2978 variables.  The following example shows such a warning:
2980 @example
2981 $ @kbd{cat configure.ac}
2982 AC_INIT
2983 AC_CONFIG_FILES([Makefile])
2984 AC_OUTPUT
2985 $ @kbd{cat Makefile.in}
2986 prefix = @@prefix@@
2987 datadir = @@datadir@@
2988 $ @kbd{autoconf}
2989 $ @kbd{configure}
2990 configure: creating ./config.status
2991 config.status: creating Makefile
2992 config.status: WARNING:
2993                Makefile.in seems to ignore the --datarootdir setting
2994 $ @kbd{cat Makefile}
2995 prefix = /usr/local
2996 datadir = $@{prefix@}/share
2997 @end example
2999 Usually one can easily change the file to accommodate both older and newer
3000 Autoconf releases:
3002 @example
3003 $ @kbd{cat Makefile.in}
3004 prefix = @@prefix@@
3005 datarootdir = @@datarootdir@@
3006 datadir = @@datadir@@
3007 $ @kbd{configure}
3008 configure: creating ./config.status
3009 config.status: creating Makefile
3010 $ @kbd{cat Makefile}
3011 prefix = /usr/local
3012 datarootdir = $@{prefix@}/share
3013 datadir = $@{datarootdir@}
3014 @end example
3016 @acindex{DATAROOTDIR_CHECKED}
3017 In some cases, however, the checks may not be able to detect that a suitable
3018 initialization of @code{datarootdir} is in place, or they may fail to detect
3019 that such an initialization is necessary in the output file.  If, after
3020 auditing your package, there are still spurious @file{configure} warnings about
3021 @code{datarootdir}, you may add the line
3023 @example
3024 AC_DEFUN([AC_DATAROOTDIR_CHECKED])
3025 @end example
3027 @noindent
3028 to your @file{configure.ac} to disable the warnings.  This is an exception
3029 to the usual rule that you should not define a macro whose name begins with
3030 @code{AC_} (@pxref{Macro Names}).
3034 @node Build Directories
3035 @subsection Build Directories
3036 @cindex Build directories
3037 @cindex Directories, build
3039 You can support compiling a software package for several architectures
3040 simultaneously from the same copy of the source code.  The object files
3041 for each architecture are kept in their own directory.
3043 To support doing this, @command{make} uses the @code{VPATH} variable to
3044 find the files that are in the source directory.  GNU Make
3045 can do this.  Most other recent @command{make} programs can do this as
3046 well, though they may have difficulties and it is often simpler to
3047 recommend GNU @command{make} (@pxref{VPATH and Make}).  Older
3048 @command{make} programs do not support @code{VPATH}; when using them, the
3049 source code must be in the same directory as the object files.
3051 If you are using GNU Automake, the remaining details in this
3052 section are already covered for you, based on the contents of your
3053 @file{Makefile.am}.  But if you are using Autoconf in isolation, then
3054 supporting @code{VPATH} requires the following in your
3055 @file{Makefile.in}:
3057 @example
3058 srcdir = @@srcdir@@
3059 VPATH = @@srcdir@@
3060 @end example
3062 Do not set @code{VPATH} to the value of another variable (@pxref{Variables
3063 listed in VPATH}.
3065 @command{configure} substitutes the correct value for @code{srcdir} when
3066 it produces @file{Makefile}.
3068 Do not use the @command{make} variable @code{$<}, which expands to the
3069 file name of the file in the source directory (found with @code{VPATH}),
3070 except in implicit rules.  (An implicit rule is one such as @samp{.c.o},
3071 which tells how to create a @file{.o} file from a @file{.c} file.)  Some
3072 versions of @command{make} do not set @code{$<} in explicit rules; they
3073 expand it to an empty value.
3075 Instead, Make command lines should always refer to source
3076 files by prefixing them with @samp{$(srcdir)/}.  For example:
3078 @example
3079 time.info: time.texinfo
3080         $(MAKEINFO) '$(srcdir)/time.texinfo'
3081 @end example
3083 @node Automatic Remaking
3084 @subsection Automatic Remaking
3085 @cindex Automatic remaking
3086 @cindex Remaking automatically
3088 You can put rules like the following in the top-level @file{Makefile.in}
3089 for a package to automatically update the configuration information when
3090 you change the configuration files.  This example includes all of the
3091 optional files, such as @file{aclocal.m4} and those related to
3092 configuration header files.  Omit from the @file{Makefile.in} rules for
3093 any of these files that your package does not use.
3095 The @samp{$(srcdir)/} prefix is included because of limitations in the
3096 @code{VPATH} mechanism.
3098 The @file{stamp-} files are necessary because the timestamps of
3099 @file{config.h.in} and @file{config.h} are not changed if remaking
3100 them does not change their contents.  This feature avoids unnecessary
3101 recompilation.  You should include the file @file{stamp-h.in} in your
3102 package's distribution, so that @command{make} considers
3103 @file{config.h.in} up to date.  Don't use @command{touch}
3104 (@pxref{touch, , Limitations of Usual Tools}); instead, use
3105 @command{echo} (using
3106 @command{date} would cause needless differences, hence CVS
3107 conflicts, etc.).
3109 @example
3110 @group
3111 $(srcdir)/configure: configure.ac aclocal.m4
3112         cd '$(srcdir)' && autoconf
3114 # autoheader might not change config.h.in, so touch a stamp file.
3115 $(srcdir)/config.h.in: stamp-h.in
3116 $(srcdir)/stamp-h.in: configure.ac aclocal.m4
3117         cd '$(srcdir)' && autoheader
3118         echo timestamp > '$(srcdir)/stamp-h.in'
3120 config.h: stamp-h
3121 stamp-h: config.h.in config.status
3122         ./config.status
3124 Makefile: Makefile.in config.status
3125         ./config.status
3127 config.status: configure
3128         ./config.status --recheck
3129 @end group
3130 @end example
3132 @noindent
3133 (Be careful if you copy these lines directly into your makefile, as you
3134 need to convert the indented lines to start with the tab character.)
3136 In addition, you should use
3138 @example
3139 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
3140 @end example
3142 @noindent
3143 so @file{config.status} ensures that @file{config.h} is considered up to
3144 date.  @xref{Output}, for more information about @code{AC_OUTPUT}.
3146 @xref{config.status Invocation}, for more examples of handling
3147 configuration-related dependencies.
3149 @node Configuration Headers
3150 @section Configuration Header Files
3151 @cindex Configuration Header
3152 @cindex @file{config.h}
3154 When a package contains more than a few tests that define C preprocessor
3155 symbols, the command lines to pass @option{-D} options to the compiler
3156 can get quite long.  This causes two problems.  One is that the
3157 @command{make} output is hard to visually scan for errors.  More
3158 seriously, the command lines can exceed the length limits of some
3159 operating systems.  As an alternative to passing @option{-D} options to
3160 the compiler, @command{configure} scripts can create a C header file
3161 containing @samp{#define} directives.  The @code{AC_CONFIG_HEADERS}
3162 macro selects this kind of output.  Though it can be called anywhere
3163 between @code{AC_INIT} and @code{AC_OUTPUT}, it is customary to call
3164 it right after @code{AC_INIT}.
3166 The package should @samp{#include} the configuration header file before
3167 any other header files, to prevent inconsistencies in declarations (for
3168 example, if it redefines @code{const}).
3170 To provide for VPATH builds, remember to pass the C compiler a @option{-I.}
3171 option (or @option{-I..}; whichever directory contains @file{config.h}).
3172 Even if you use @samp{#include "config.h"}, the preprocessor searches only
3173 the directory of the currently read file, i.e., the source directory, not
3174 the build directory.
3176 With the appropriate @option{-I} option, you can use
3177 @samp{#include <config.h>}.  Actually, it's a good habit to use it,
3178 because in the rare case when the source directory contains another
3179 @file{config.h}, the build directory should be searched first.
3182 @defmac AC_CONFIG_HEADERS (@var{header} @dots{}, @ovar{cmds}, @ovar{init-cmds})
3183 @acindex{CONFIG_HEADERS}
3184 @cvindex HAVE_CONFIG_H
3185 This macro is one of the instantiating macros; see @ref{Configuration
3186 Actions}.  Make @code{AC_OUTPUT} create the file(s) in the
3187 blank-or-newline-separated list @var{header} containing C preprocessor
3188 @code{#define} statements, and replace @samp{@@DEFS@@} in generated
3189 files with @option{-DHAVE_CONFIG_H} instead of the value of @code{DEFS}.
3190 The usual name for @var{header} is @file{config.h}.
3192 If @var{header} already exists and its contents are identical to what
3193 @code{AC_OUTPUT} would put in it, it is left alone.  Doing this allows
3194 making some changes in the configuration without needlessly causing
3195 object files that depend on the header file to be recompiled.
3197 Usually the input file is named @file{@var{header}.in}; however, you can
3198 override the input file name by appending to @var{header} a
3199 colon-separated list of input files.  For example, you might need to make
3200 the input file name acceptable to DOS variants:
3202 @example
3203 AC_CONFIG_HEADERS([config.h:config.hin])
3204 @end example
3206 @end defmac
3208 @defmac AH_HEADER
3209 @ahindex{HEADER}
3210 This macro is defined as the name of the first declared config header
3211 and undefined if no config headers have been declared up to this point.
3212 A third-party macro may, for example, require use of a config header
3213 without invoking AC_CONFIG_HEADERS twice, like this:
3215 @example
3216 AC_CONFIG_COMMANDS_PRE(
3217         [m4_ifndef([AH_HEADER], [AC_CONFIG_HEADERS([config.h])])])
3218 @end example
3220 @end defmac
3222 @xref{Configuration Actions}, for more details on @var{header}.
3224 @menu
3225 * Header Templates::            Input for the configuration headers
3226 * autoheader Invocation::       How to create configuration templates
3227 * Autoheader Macros::           How to specify CPP templates
3228 @end menu
3230 @node Header Templates
3231 @subsection Configuration Header Templates
3232 @cindex Configuration Header Template
3233 @cindex Header templates
3234 @cindex @file{config.h.in}
3236 Your distribution should contain a template file that looks as you want
3237 the final header file to look, including comments, with @code{#undef}
3238 statements which are used as hooks.  For example, suppose your
3239 @file{configure.ac} makes these calls:
3241 @example
3242 AC_CONFIG_HEADERS([conf.h])
3243 AC_CHECK_HEADERS([unistd.h])
3244 @end example
3246 @noindent
3247 Then you could have code like the following in @file{conf.h.in}.
3248 The @file{conf.h} created by @command{configure} defines @samp{HAVE_UNISTD_H}
3249 to 1, if and only if the system has @file{unistd.h}.
3251 @example
3252 @group
3253 /* Define as 1 if you have unistd.h.  */
3254 #undef HAVE_UNISTD_H
3255 @end group
3256 @end example
3258 The format of the template file is stricter than what the C preprocessor
3259 is required to accept.  A directive line should contain only whitespace,
3260 @samp{#undef}, and @samp{HAVE_UNISTD_H}.  The use of @samp{#define}
3261 instead of @samp{#undef}, or of comments on the same line as
3262 @samp{#undef}, is strongly discouraged.  Each hook should only be listed
3263 once.  Other preprocessor lines, such as @samp{#ifdef} or
3264 @samp{#include}, are copied verbatim from the template into the
3265 generated header.
3267 Since it is a tedious task to keep a template header up to date, you may
3268 use @command{autoheader} to generate it, see @ref{autoheader Invocation}.
3270 During the instantiation of the header, each @samp{#undef} line in the
3271 template file for each symbol defined by @samp{AC_DEFINE} is changed to an
3272 appropriate @samp{#define}. If the corresponding @samp{AC_DEFINE} has not
3273 been executed during the @command{configure} run, the @samp{#undef} line is
3274 commented out.  (This is important, e.g., for @samp{_POSIX_SOURCE}:
3275 on many systems, it can be implicitly defined by the compiler, and
3276 undefining it in the header would then break compilation of subsequent
3277 headers.)
3279 Currently, @emph{all} remaining @samp{#undef} lines in the header
3280 template are commented out, whether or not there was a corresponding
3281 @samp{AC_DEFINE} for the macro name; but this behavior is not guaranteed
3282 for future releases of Autoconf.
3284 Generally speaking, since you should not use @samp{#define}, and you
3285 cannot guarantee whether a @samp{#undef} directive in the header
3286 template will be converted to a @samp{#define} or commented out in the
3287 generated header file, the template file cannot be used for conditional
3288 definition effects.  Consequently, if you need to use the construct
3290 @example
3291 @group
3292 #ifdef THIS
3293 # define THAT
3294 #endif
3295 @end group
3296 @end example
3298 @noindent
3299 you must place it outside of the template.
3300 If you absolutely need to hook it to the config header itself, please put
3301 the directives to a separate file, and @samp{#include} that file from the
3302 config header template.  If you are using @command{autoheader}, you would
3303 probably use @samp{AH_BOTTOM} to append the @samp{#include} directive.
3306 @node autoheader Invocation
3307 @subsection Using @command{autoheader} to Create @file{config.h.in}
3308 @cindex @command{autoheader}
3310 The @command{autoheader} program can create a template file of C
3311 @samp{#define} statements for @command{configure} to use.
3312 It searches for the first invocation of @code{AC_CONFIG_HEADERS} in
3313 @file{configure} sources to determine the name of the template.
3314 (If the first call of @code{AC_CONFIG_HEADERS} specifies more than one
3315 input file name, @command{autoheader} uses the first one.)
3317 It is recommended that only one input file is used.  If you want to append
3318 a boilerplate code, it is preferable to use
3319 @samp{AH_BOTTOM([#include <conf_post.h>])}.
3320 File @file{conf_post.h} is not processed during the configuration then,
3321 which make things clearer.  Analogically, @code{AH_TOP} can be used to
3322 prepend a boilerplate code.
3324 In order to do its job, @command{autoheader} needs you to document all
3325 of the symbols that you might use.  Typically this is done via an
3326 @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED} call whose first argument
3327 is a literal symbol and whose third argument describes the symbol
3328 (@pxref{Defining Symbols}).  Alternatively, you can use
3329 @code{AH_TEMPLATE} (@pxref{Autoheader Macros}), or you can supply a
3330 suitable input file for a subsequent configuration header file.
3331 Symbols defined by Autoconf's builtin tests are already documented properly;
3332 you need to document only those that you
3333 define yourself.
3335 You might wonder why @command{autoheader} is needed: after all, why
3336 would @command{configure} need to ``patch'' a @file{config.h.in} to
3337 produce a @file{config.h} instead of just creating @file{config.h} from
3338 scratch?  Well, when everything rocks, the answer is just that we are
3339 wasting our time maintaining @command{autoheader}: generating
3340 @file{config.h} directly is all that is needed.  When things go wrong,
3341 however, you'll be thankful for the existence of @command{autoheader}.
3343 The fact that the symbols are documented is important in order to
3344 @emph{check} that @file{config.h} makes sense.  The fact that there is a
3345 well-defined list of symbols that should be defined (or not) is
3346 also important for people who are porting packages to environments where
3347 @command{configure} cannot be run: they just have to @emph{fill in the
3348 blanks}.
3350 But let's come back to the point: the invocation of @command{autoheader}@dots{}
3352 If you give @command{autoheader} an argument, it uses that file instead
3353 of @file{configure.ac} and writes the header file to the standard output
3354 instead of to @file{config.h.in}.  If you give @command{autoheader} an
3355 argument of @option{-}, it reads the standard input instead of
3356 @file{configure.ac} and writes the header file to the standard output.
3358 @command{autoheader} accepts the following options:
3360 @table @option
3361 @item --help
3362 @itemx -h
3363 Print a summary of the command line options and exit.
3365 @item --version
3366 @itemx -V
3367 Print the version number of Autoconf and exit.
3369 @item --verbose
3370 @itemx -v
3371 Report processing steps.
3373 @item --debug
3374 @itemx -d
3375 Don't remove the temporary files.
3377 @item --force
3378 @itemx -f
3379 Remake the template file even if newer than its input files.
3381 @item --include=@var{dir}
3382 @itemx -I @var{dir}
3383 Append @var{dir} to the include path.  Multiple invocations accumulate.
3385 @item --prepend-include=@var{dir}
3386 @itemx -B @var{dir}
3387 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
3389 @item --warnings=@var{category}
3390 @itemx -W @var{category}
3391 @evindex WARNINGS
3392 Report the warnings related to @var{category} (which can actually be a
3393 comma separated list).  Current categories include:
3395 @table @samp
3396 @item obsolete
3397 report the uses of obsolete constructs
3399 @item all
3400 report all the warnings
3402 @item none
3403 report none
3405 @item error
3406 treats warnings as errors
3408 @item no-@var{category}
3409 disable warnings falling into @var{category}
3410 @end table
3412 @end table
3416 @node Autoheader Macros
3417 @subsection Autoheader Macros
3418 @cindex Autoheader macros
3420 @command{autoheader} scans @file{configure.ac} and figures out which C
3421 preprocessor symbols it might define.  It knows how to generate
3422 templates for symbols defined by @code{AC_CHECK_HEADERS},
3423 @code{AC_CHECK_FUNCS} etc., but if you @code{AC_DEFINE} any additional
3424 symbol, you must define a template for it.  If there are missing
3425 templates, @command{autoheader} fails with an error message.
3427 The template for a @var{symbol} is created
3428 by @command{autoheader} from
3429 the @var{description} argument to an @code{AC_DEFINE};
3430 see @ref{Defining Symbols}.
3432 For special needs, you can use the following macros.
3435 @defmac AH_TEMPLATE (@var{key}, @var{description})
3436 @ahindex{TEMPLATE}
3437 Tell @command{autoheader} to generate a template for @var{key}.  This macro
3438 generates standard templates just like @code{AC_DEFINE} when a
3439 @var{description} is given.
3441 For example:
3443 @example
3444 AH_TEMPLATE([CRAY_STACKSEG_END],
3445             [Define to one of _getb67, GETB67, getb67
3446              for Cray-2 and Cray-YMP systems.  This
3447              function is required for alloca.c support
3448              on those systems.])
3449 @end example
3451 @noindent
3452 generates the following template, with the description properly
3453 justified.
3455 @example
3456 /* Define to one of _getb67, GETB67, getb67 for Cray-2 and
3457    Cray-YMP systems.  This function is required for alloca.c
3458    support on those systems.  */
3459 #undef CRAY_STACKSEG_END
3460 @end example
3461 @end defmac
3464 @defmac AH_VERBATIM (@var{key}, @var{template})
3465 @ahindex{VERBATIM}
3466 Tell @command{autoheader} to include the @var{template} as-is in the header
3467 template file.  This @var{template} is associated with the @var{key},
3468 which is used to sort all the different templates and guarantee their
3469 uniqueness.  It should be a symbol that can be defined via @code{AC_DEFINE}.
3470 @end defmac
3473 @defmac AH_TOP (@var{text})
3474 @ahindex{TOP}
3475 Include @var{text} at the top of the header template file.
3476 @end defmac
3479 @defmac AH_BOTTOM (@var{text})
3480 @ahindex{BOTTOM}
3481 Include @var{text} at the bottom of the header template file.
3482 @end defmac
3485 Please note that @var{text} gets included ``verbatim'' to the template file,
3486 not to the resulting config header, so it can easily get mangled when the
3487 template is processed.  There is rarely a need for something other than
3489 @example
3490 AH_BOTTOM([#include <custom.h>])
3491 @end example
3495 @node Configuration Commands
3496 @section Running Arbitrary Configuration Commands
3497 @cindex Configuration commands
3498 @cindex Commands for configuration
3500 You can execute arbitrary commands before, during, and after
3501 @file{config.status} is run.  The three following macros accumulate the
3502 commands to run when they are called multiple times.
3503 @code{AC_CONFIG_COMMANDS} replaces the obsolete macro
3504 @code{AC_OUTPUT_COMMANDS}; see @ref{Obsolete Macros}, for details.
3506 @anchor{AC_CONFIG_COMMANDS}
3507 @defmac AC_CONFIG_COMMANDS (@var{tag}@dots{}, @ovar{cmds}, @ovar{init-cmds})
3508 @acindex{CONFIG_COMMANDS}
3509 Specify additional shell commands to run at the end of
3510 @file{config.status}, and shell commands to initialize any variables
3511 from @command{configure}.  Associate the commands with @var{tag}.
3512 Since typically the @var{cmds} create a file, @var{tag} should
3513 naturally be the name of that file.  If needed, the directory hosting
3514 @var{tag} is created.  This macro is one of the instantiating macros;
3515 see @ref{Configuration Actions}.
3517 Here is an unrealistic example:
3518 @example
3519 fubar=42
3520 AC_CONFIG_COMMANDS([fubar],
3521                    [echo this is extra $fubar, and so on.],
3522                    [fubar=$fubar])
3523 @end example
3525 Here is a better one:
3526 @example
3527 AC_CONFIG_COMMANDS([timestamp], [date >timestamp])
3528 @end example
3529 @end defmac
3531 The following two macros look similar, but in fact they are not of the same
3532 breed: they are executed directly by @file{configure}, so you cannot use
3533 @file{config.status} to rerun them.
3535 @c Yet it is good to leave them here.  The user sees them together and
3536 @c decides which best fits their needs.
3538 @defmac AC_CONFIG_COMMANDS_PRE (@var{cmds})
3539 @acindex{CONFIG_COMMANDS_PRE}
3540 Execute the @var{cmds} right before creating @file{config.status}.
3542 This macro presents the last opportunity to call @code{AC_SUBST},
3543 @code{AC_DEFINE}, or @code{AC_CONFIG_@var{ITEMS}} macros.
3544 @end defmac
3546 @defmac AC_CONFIG_COMMANDS_POST (@var{cmds})
3547 @acindex{CONFIG_COMMANDS_POST}
3548 Execute the @var{cmds} right after creating @file{config.status}.
3549 @end defmac
3554 @node Configuration Links
3555 @section Creating Configuration Links
3556 @cindex Configuration links
3557 @cindex Links for configuration
3559 You may find it convenient to create links whose destinations depend upon
3560 results of tests.  One can use @code{AC_CONFIG_COMMANDS} but the
3561 creation of relative symbolic links can be delicate when the package is
3562 built in a directory different from the source directory.
3564 @anchor{AC_CONFIG_LINKS}
3565 @defmac AC_CONFIG_LINKS (@var{dest}:@var{source}@dots{}, @ovar{cmds}, @
3566   @ovar{init-cmds})
3567 @acindex{CONFIG_LINKS}
3568 @cindex Links
3569 Make @code{AC_OUTPUT} link each of the existing files @var{source} to
3570 the corresponding link name @var{dest}.  Makes a symbolic link if
3571 possible, otherwise a hard link if possible, otherwise a copy.  The
3572 @var{dest} and @var{source} names should be relative to the top level
3573 source or build directory.  This macro is one of the instantiating
3574 macros; see @ref{Configuration Actions}.
3576 For example, this call:
3578 @example
3579 AC_CONFIG_LINKS([host.h:config/$machine.h
3580                 object.h:config/$obj_format.h])
3581 @end example
3583 @noindent
3584 creates in the current directory @file{host.h} as a link to
3585 @file{@var{srcdir}/config/$machine.h}, and @file{object.h} as a
3586 link to @file{@var{srcdir}/config/$obj_format.h}.
3588 The tempting value @samp{.} for @var{dest} is invalid: it makes it
3589 impossible for @samp{config.status} to guess the links to establish.
3591 One can then run:
3592 @example
3593 ./config.status host.h object.h
3594 @end example
3595 @noindent
3596 to create the links.
3597 @end defmac
3601 @node Subdirectories
3602 @section Configuring Other Packages in Subdirectories
3603 @cindex Configure subdirectories
3604 @cindex Subdirectory configure
3606 In most situations, calling @code{AC_OUTPUT} is sufficient to produce
3607 makefiles in subdirectories.  However, @command{configure} scripts
3608 that control more than one independent package can use
3609 @code{AC_CONFIG_SUBDIRS} to run @command{configure} scripts for other
3610 packages in subdirectories.
3612 @defmac AC_CONFIG_SUBDIRS (@var{dir} @dots{})
3613 @acindex{CONFIG_SUBDIRS}
3614 @ovindex subdirs
3615 Make @code{AC_OUTPUT} run @command{configure} in each subdirectory
3616 @var{dir} in the given blank-or-newline-separated list.  Each @var{dir} should
3617 be a literal, i.e., please do not use:
3619 @example
3620 @c If you change this example, adjust tests/torture.at:Non-literal AC_CONFIG_SUBDIRS.
3621 if test "x$package_foo_enabled" = xyes; then
3622   my_subdirs="$my_subdirs foo"
3624 AC_CONFIG_SUBDIRS([$my_subdirs])
3625 @end example
3627 @noindent
3628 because this prevents @samp{./configure --help=recursive} from
3629 displaying the options of the package @code{foo}.  Instead, you should
3630 write:
3632 @example
3633 if test "x$package_foo_enabled" = xyes; then
3634   AC_CONFIG_SUBDIRS([foo])
3636 @end example
3638 If a given @var{dir} is not found at @command{configure} run time, a
3639 warning is reported; if the subdirectory is optional, write:
3641 @example
3642 if test -d "$srcdir/foo"; then
3643   AC_CONFIG_SUBDIRS([foo])
3645 @end example
3647 @c NB: Yes, below we mean configure.in, not configure.ac.
3648 If a given @var{dir} contains @command{configure.gnu}, it is run instead
3649 of @command{configure}.  This is for packages that might use a
3650 non-Autoconf script @command{Configure}, which can't be called through a
3651 wrapper @command{configure} since it would be the same file on
3652 case-insensitive file systems.  Likewise, if a @var{dir} contains
3653 @file{configure.in} but no @command{configure}, the Cygnus
3654 @command{configure} script found by @code{AC_CONFIG_AUX_DIR} is used.
3656 The subdirectory @command{configure} scripts are given the same command
3657 line options that were given to this @command{configure} script, with minor
3658 changes if needed, which include:
3660 @itemize @minus
3661 @item
3662 adjusting a relative name for the cache file;
3664 @item
3665 adjusting a relative name for the source directory;
3667 @item
3668 propagating the current value of @code{$prefix}, including if it was
3669 defaulted, and if the default values of the top level and of the subdirectory
3670 @file{configure} differ.
3671 @end itemize
3673 This macro also sets the output variable @code{subdirs} to the list of
3674 directories @samp{@var{dir} @dots{}}.  Make rules can use
3675 this variable to determine which subdirectories to recurse into.
3677 This macro may be called multiple times.
3678 @end defmac
3680 @node Default Prefix
3681 @section Default Prefix
3682 @cindex Install prefix
3683 @cindex Prefix for install
3685 By default, @command{configure} sets the prefix for files it installs to
3686 @file{/usr/local}.  The user of @command{configure} can select a different
3687 prefix using the @option{--prefix} and @option{--exec-prefix} options.
3688 There are two ways to change the default: when creating
3689 @command{configure}, and when running it.
3691 Some software packages might want to install in a directory other than
3692 @file{/usr/local} by default.  To accomplish that, use the
3693 @code{AC_PREFIX_DEFAULT} macro.
3695 @defmac AC_PREFIX_DEFAULT (@var{prefix})
3696 @acindex{PREFIX_DEFAULT}
3697 Set the default installation prefix to @var{prefix} instead of
3698 @file{/usr/local}.
3699 @end defmac
3701 It may be convenient for users to have @command{configure} guess the
3702 installation prefix from the location of a related program that they
3703 have already installed.  If you wish to do that, you can call
3704 @code{AC_PREFIX_PROGRAM}.
3706 @anchor{AC_PREFIX_PROGRAM}
3707 @defmac AC_PREFIX_PROGRAM (@var{program})
3708 @acindex{PREFIX_PROGRAM}
3709 If the user did not specify an installation prefix (using the
3710 @option{--prefix} option), guess a value for it by looking for
3711 @var{program} in @env{PATH}, the way the shell does.  If @var{program}
3712 is found, set the prefix to the parent of the directory containing
3713 @var{program}, else default the prefix as described above
3714 (@file{/usr/local} or @code{AC_PREFIX_DEFAULT}).  For example, if
3715 @var{program} is @code{gcc} and the @env{PATH} contains
3716 @file{/usr/local/gnu/bin/gcc}, set the prefix to @file{/usr/local/gnu}.
3717 @end defmac
3721 @c ======================================================== Existing tests
3723 @node Existing Tests
3724 @chapter Existing Tests
3726 These macros test for particular system features that packages might
3727 need or want to use.  If you need to test for a kind of feature that
3728 none of these macros check for, you can probably do it by calling
3729 primitive test macros with appropriate arguments (@pxref{Writing
3730 Tests}).
3732 These tests print messages telling the user which feature they're
3733 checking for, and what they find.  They cache their results for future
3734 @command{configure} runs (@pxref{Caching Results}).
3736 Some of these macros set output variables.  @xref{Makefile
3737 Substitutions}, for how to get their values.  The phrase ``define
3738 @var{name}'' is used below as a shorthand to mean ``define the C
3739 preprocessor symbol @var{name} to the value 1''.  @xref{Defining
3740 Symbols}, for how to get those symbol definitions into your program.
3742 @menu
3743 * Common Behavior::             Macros' standard schemes
3744 * Alternative Programs::        Selecting between alternative programs
3745 * Files::                       Checking for the existence of files
3746 * Libraries::                   Library archives that might be missing
3747 * Library Functions::           C library functions that might be missing
3748 * Header Files::                Header files that might be missing
3749 * Declarations::                Declarations that may be missing
3750 * Structures::                  Structures or members that might be missing
3751 * Types::                       Types that might be missing
3752 * Compilers and Preprocessors::  Checking for compiling programs
3753 * System Services::             Operating system services
3754 * Posix Variants::              Special kludges for specific Posix variants
3755 * Erlang Libraries::            Checking for the existence of Erlang libraries
3756 @end menu
3758 @node Common Behavior
3759 @section Common Behavior
3760 @cindex Common autoconf behavior
3762 Much effort has been expended to make Autoconf easy to learn.  The most
3763 obvious way to reach this goal is simply to enforce standard interfaces
3764 and behaviors, avoiding exceptions as much as possible.  Because of
3765 history and inertia, unfortunately, there are still too many exceptions
3766 in Autoconf; nevertheless, this section describes some of the common
3767 rules.
3769 @menu
3770 * Standard Symbols::            Symbols defined by the macros
3771 * Default Includes::            Includes used by the generic macros
3772 @end menu
3774 @node Standard Symbols
3775 @subsection Standard Symbols
3776 @cindex Standard symbols
3778 All the generic macros that @code{AC_DEFINE} a symbol as a result of
3779 their test transform their @var{argument} values to a standard alphabet.
3780 First, @var{argument} is converted to upper case and any asterisks
3781 (@samp{*}) are each converted to @samp{P}.  Any remaining characters
3782 that are not alphanumeric are converted to underscores.
3784 For instance,
3786 @example
3787 AC_CHECK_TYPES([struct $Expensive*])
3788 @end example
3790 @noindent
3791 defines the symbol @samp{HAVE_STRUCT__EXPENSIVEP} if the check
3792 succeeds.
3795 @node Default Includes
3796 @subsection Default Includes
3797 @cindex Default includes
3798 @cindex Includes, default
3800 Several tests depend upon a set of header files.  Since these headers
3801 are not universally available, tests actually have to provide a set of
3802 protected includes, such as:
3804 @example
3805 @group
3806 #ifdef TIME_WITH_SYS_TIME
3807 # include <sys/time.h>
3808 # include <time.h>
3809 #else
3810 # ifdef HAVE_SYS_TIME_H
3811 #  include <sys/time.h>
3812 # else
3813 #  include <time.h>
3814 # endif
3815 #endif
3816 @end group
3817 @end example
3819 @noindent
3820 Unless you know exactly what you are doing, you should avoid using
3821 unconditional includes, and check the existence of the headers you
3822 include beforehand (@pxref{Header Files}).
3824 Most generic macros use the following macro to provide the default set
3825 of includes:
3827 @defmac AC_INCLUDES_DEFAULT (@ovar{include-directives})
3828 @acindex{INCLUDES_DEFAULT}
3829 Expand to @var{include-directives} if defined, otherwise to:
3831 @example
3832 @group
3833 #include <stdio.h>
3834 #ifdef HAVE_SYS_TYPES_H
3835 # include <sys/types.h>
3836 #endif
3837 #ifdef HAVE_SYS_STAT_H
3838 # include <sys/stat.h>
3839 #endif
3840 #ifdef STDC_HEADERS
3841 # include <stdlib.h>
3842 # include <stddef.h>
3843 #else
3844 # ifdef HAVE_STDLIB_H
3845 #  include <stdlib.h>
3846 # endif
3847 #endif
3848 #ifdef HAVE_STRING_H
3849 # if !defined STDC_HEADERS && defined HAVE_MEMORY_H
3850 #  include <memory.h>
3851 # endif
3852 # include <string.h>
3853 #endif
3854 #ifdef HAVE_STRINGS_H
3855 # include <strings.h>
3856 #endif
3857 #ifdef HAVE_INTTYPES_H
3858 # include <inttypes.h>
3859 #endif
3860 #ifdef HAVE_STDINT_H
3861 # include <stdint.h>
3862 #endif
3863 #ifdef HAVE_UNISTD_H
3864 # include <unistd.h>
3865 #endif
3866 @end group
3867 @end example
3869 If the default includes are used, then check for the presence of these
3870 headers and their compatibility, i.e., you don't need to run
3871 @code{AC_HEADER_STDC}, nor check for @file{stdlib.h} etc.
3873 These headers are checked for in the same order as they are included.
3874 For instance, on some systems @file{string.h} and @file{strings.h} both
3875 exist, but conflict.  Then @code{HAVE_STRING_H} is defined, not
3876 @code{HAVE_STRINGS_H}.
3877 @end defmac
3879 @node Alternative Programs
3880 @section Alternative Programs
3881 @cindex Programs, checking
3883 These macros check for the presence or behavior of particular programs.
3884 They are used to choose between several alternative programs and to
3885 decide what to do once one has been chosen.  If there is no macro
3886 specifically defined to check for a program you need, and you don't need
3887 to check for any special properties of it, then you can use one of the
3888 general program-check macros.
3890 @menu
3891 * Particular Programs::         Special handling to find certain programs
3892 * Generic Programs::            How to find other programs
3893 @end menu
3895 @node Particular Programs
3896 @subsection Particular Program Checks
3898 These macros check for particular programs---whether they exist, and
3899 in some cases whether they support certain features.
3901 @defmac AC_PROG_AWK
3902 @acindex{PROG_AWK}
3903 @ovindex AWK
3904 @caindex prog_AWK
3905 Check for @code{gawk}, @code{mawk}, @code{nawk}, and @code{awk}, in that
3906 order, and set output variable @code{AWK} to the first one that is found.
3907 It tries @code{gawk} first because that is reported to be the
3908 best implementation.  The result can be overridden by setting the
3909 variable @code{AWK} or the cache variable @code{ac_cv_prog_AWK}.
3910 @end defmac
3912 @defmac AC_PROG_GREP
3913 @acindex{PROG_GREP}
3914 @ovindex GREP
3915 @caindex prog_GREP
3916 Look for the best available @code{grep} or @code{ggrep} that accepts the
3917 longest input lines possible, and that supports multiple @option{-e} options.
3918 Set the output variable @code{GREP} to whatever is chosen.
3919 @xref{grep, , Limitations of Usual Tools}, for more information about
3920 portability problems with the @command{grep} command family.  The result
3921 can be overridden by setting the @code{GREP} variable and is cached in the
3922 @code{ac_cv_path_GREP} variable.
3923 @end defmac
3925 @defmac AC_PROG_EGREP
3926 @acindex{PROG_EGREP}
3927 @ovindex EGREP
3928 @caindex prog_EGREP
3929 Check whether @code{$GREP -E} works, or else look for the best available
3930 @code{egrep} or @code{gegrep} that accepts the longest input lines possible.
3931 Set the output variable @code{EGREP} to whatever is chosen.  The result
3932 can be overridden by setting the @code{EGREP} variable and is cached in the
3933 @code{ac_cv_path_EGREP} variable.
3934 @end defmac
3936 @defmac AC_PROG_FGREP
3937 @acindex{PROG_FGREP}
3938 @ovindex FGREP
3939 @caindex prog_FGREP
3940 Check whether @code{$GREP -F} works, or else look for the best available
3941 @code{fgrep} or @code{gfgrep} that accepts the longest input lines possible.
3942 Set the output variable @code{FGREP} to whatever is chosen.  The result
3943 can be overridden by setting the @code{FGREP} variable and is cached in the
3944 @code{ac_cv_path_FGREP} variable.
3945 @end defmac
3947 @defmac AC_PROG_INSTALL
3948 @acindex{PROG_INSTALL}
3949 @ovindex INSTALL
3950 @ovindex INSTALL_PROGRAM
3951 @ovindex INSTALL_DATA
3952 @ovindex INSTALL_SCRIPT
3953 @caindex path_install
3954 Set output variable @code{INSTALL} to the name of a BSD-compatible
3955 @command{install} program, if one is found in the current @env{PATH}.
3956 Otherwise, set @code{INSTALL} to @samp{@var{dir}/install-sh -c},
3957 checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its
3958 default directories) to determine @var{dir} (@pxref{Output}).  Also set
3959 the variables @code{INSTALL_PROGRAM} and @code{INSTALL_SCRIPT} to
3960 @samp{$@{INSTALL@}} and @code{INSTALL_DATA} to @samp{$@{INSTALL@} -m 644}.
3962 @samp{@@INSTALL@@} is special, as its value may vary for different
3963 configuration files.
3965 This macro screens out various instances of @command{install} known not to
3966 work.  It prefers to find a C program rather than a shell script, for
3967 speed.  Instead of @file{install-sh}, it can also use @file{install.sh},
3968 but that name is obsolete because some @command{make} programs have a rule
3969 that creates @file{install} from it if there is no makefile.  Further, this
3970 macro requires @command{install} to be able to install multiple files into a
3971 target directory in a single invocation.
3973 Autoconf comes with a copy of @file{install-sh} that you can use.  If
3974 you use @code{AC_PROG_INSTALL}, you must include either
3975 @file{install-sh} or @file{install.sh} in your distribution; otherwise
3976 @command{configure} produces an error message saying it can't find
3977 them---even if the system you're on has a good @command{install} program.
3978 This check is a safety measure to prevent you from accidentally leaving
3979 that file out, which would prevent your package from installing on
3980 systems that don't have a BSD-compatible @command{install} program.
3982 If you need to use your own installation program because it has features
3983 not found in standard @command{install} programs, there is no reason to use
3984 @code{AC_PROG_INSTALL}; just put the file name of your program into your
3985 @file{Makefile.in} files.
3987 The result of the test can be overridden by setting the variable
3988 @code{INSTALL} or the cache variable @code{ac_cv_path_install}.
3989 @end defmac
3991 @defmac AC_PROG_MKDIR_P
3992 @acindex{PROG_MKDIR_P}
3993 @ovindex MKDIR_P
3994 @caindex path_mkdir
3995 Set output variable @code{MKDIR_P} to a program that ensures that for
3996 each argument, a directory named by this argument exists, creating it
3997 and its parent directories if needed, and without race conditions when
3998 two instances of the program attempt to make the same directory at
3999 nearly the same time.
4001 This macro uses the @samp{mkdir -p} command if possible.  Otherwise, it
4002 falls back on invoking @command{install-sh} with the @option{-d} option,
4003 so your package should
4004 contain @file{install-sh} as described under @code{AC_PROG_INSTALL}.
4005 An @file{install-sh} file that predates Autoconf 2.60 or Automake 1.10
4006 is vulnerable to race conditions, so if you want to support parallel
4007 installs from
4008 different packages into the same directory you need to make sure you
4009 have an up-to-date @file{install-sh}.  In particular, be careful about
4010 using @samp{autoreconf -if} if your Automake predates Automake 1.10.
4012 This macro is related to the @code{AS_MKDIR_P} macro (@pxref{Programming
4013 in M4sh}), but it sets an output variable intended for use in other
4014 files, whereas @code{AS_MKDIR_P} is intended for use in scripts like
4015 @command{configure}.  Also, @code{AS_MKDIR_P} does not accept options,
4016 but @code{MKDIR_P} supports the @option{-m} option, e.g., a makefile
4017 might invoke @code{$(MKDIR_P) -m 0 dir} to create an inaccessible
4018 directory, and conversely a makefile should use @code{$(MKDIR_P) --
4019 $(FOO)} if @var{FOO} might yield a value that begins with @samp{-}.
4020 Finally, @code{AS_MKDIR_P} does not check for race condition
4021 vulnerability, whereas @code{AC_PROG_MKDIR_P} does.
4023 @samp{@@MKDIR_P@@} is special, as its value may vary for different
4024 configuration files.
4026 The result of the test can be overridden by setting the variable
4027 @code{MKDIR_P} or the cache variable @code{ac_cv_path_mkdir}.
4028 @end defmac
4030 @anchor{AC_PROG_LEX}
4031 @defmac AC_PROG_LEX
4032 @acindex{PROG_LEX}
4033 @ovindex LEX
4034 @ovindex LEXLIB
4035 @cvindex YYTEXT_POINTER
4036 @ovindex LEX_OUTPUT_ROOT
4037 @caindex prog_LEX
4038 If @code{flex} is found, set output variable @code{LEX} to @samp{flex}
4039 and @code{LEXLIB} to @option{-lfl}, if that library is in a standard
4040 place.  Otherwise set @code{LEX} to @samp{lex} and @code{LEXLIB} to
4041 @option{-ll}, if found.  If neither variant is available, set @code{LEX}
4042 to @samp{:}; for packages that ship the generated @file{file.yy.c}
4043 alongside the source @file{file.l}, this default allows users without a
4044 lexer generator to still build the package even if the timestamp for
4045 @file{file.l} is inadvertantly changed.
4047 Define @code{YYTEXT_POINTER} if @code{yytext} defaults to @samp{char *} instead
4048 of to @samp{char []}.  Also set output variable @code{LEX_OUTPUT_ROOT} to
4049 the base of the file name that the lexer generates; usually
4050 @file{lex.yy}, but sometimes something else.  These results vary
4051 according to whether @code{lex} or @code{flex} is being used.
4053 You are encouraged to use Flex in your sources, since it is both more
4054 pleasant to use than plain Lex and the C source it produces is portable.
4055 In order to ensure portability, however, you must either provide a
4056 function @code{yywrap} or, if you don't use it (e.g., your scanner has
4057 no @samp{#include}-like feature), simply include a @samp{%noyywrap}
4058 statement in the scanner's source.  Once this done, the scanner is
4059 portable (unless @emph{you} felt free to use nonportable constructs) and
4060 does not depend on any library.  In this case, and in this case only, it
4061 is suggested that you use this Autoconf snippet:
4063 @example
4064 AC_PROG_LEX
4065 if test "x$LEX" != xflex; then
4066   LEX="$SHELL $missing_dir/missing flex"
4067   AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
4068   AC_SUBST([LEXLIB], [''])
4070 @end example
4072 The shell script @command{missing} can be found in the Automake
4073 distribution.
4075 Remember that the user may have supplied an alternate location in
4076 @env{LEX}, so if Flex is required, it is better to check that the user
4077 provided something sufficient by parsing the output of @samp{$LEX
4078 --version} than by simply relying on @code{test "x$LEX" = xflex}.
4080 To ensure backward compatibility, Automake's @code{AM_PROG_LEX} invokes
4081 (indirectly) this macro twice, which causes an annoying but benign
4082 ``@code{AC_PROG_LEX} invoked multiple times'' warning.  Future versions
4083 of Automake will fix this issue; meanwhile, just ignore this message.
4085 As part of running the test, this macro may delete any file in the
4086 configuration directory named @file{lex.yy.c} or @file{lexyy.c}.
4088 The result of this test can be influenced by setting the variable
4089 @code{LEX} or the cache variable @code{ac_cv_prog_LEX}.
4090 @end defmac
4092 @anchor{AC_PROG_LN_S}
4093 @defmac AC_PROG_LN_S
4094 @acindex{PROG_LN_S}
4095 @ovindex LN_S
4096 If @samp{ln -s} works on the current file system (the operating system
4097 and file system support symbolic links), set the output variable
4098 @code{LN_S} to @samp{ln -s}; otherwise, if @samp{ln} works, set
4099 @code{LN_S} to @samp{ln}, and otherwise set it to @samp{cp -p}.
4101 If you make a link in a directory other than the current directory, its
4102 meaning depends on whether @samp{ln} or @samp{ln -s} is used.  To safely
4103 create links using @samp{$(LN_S)}, either find out which form is used
4104 and adjust the arguments, or always invoke @code{ln} in the directory
4105 where the link is to be created.
4107 In other words, it does not work to do:
4108 @example
4109 $(LN_S) foo /x/bar
4110 @end example
4112 Instead, do:
4114 @example
4115 (cd /x && $(LN_S) foo bar)
4116 @end example
4117 @end defmac
4119 @defmac AC_PROG_RANLIB
4120 @acindex{PROG_RANLIB}
4121 @ovindex RANLIB
4122 @c @caindex prog_RANLIB
4123 @c @caindex prog_ac_ct_RANLIB
4124 Set output variable @code{RANLIB} to @samp{ranlib} if @code{ranlib}
4125 is found, and otherwise to @samp{:} (do nothing).
4126 @end defmac
4128 @defmac AC_PROG_SED
4129 @acindex{PROG_SED}
4130 @ovindex SED
4131 @caindex path_SED
4132 Set output variable @code{SED} to a Sed implementation that conforms to
4133 Posix and does not have arbitrary length limits.  Report an error if no
4134 acceptable Sed is found.  @xref{sed, , Limitations of Usual Tools}, for more
4135 information about portability problems with Sed.
4137 The result of this test can be overridden by setting the @code{SED} variable
4138 and is cached in the @code{ac_cv_path_SED} variable.
4139 @end defmac
4141 @defmac AC_PROG_YACC
4142 @acindex{PROG_YACC}
4143 @evindex YACC
4144 @evindex YFLAGS
4145 @ovindex YACC
4146 @caindex prog_YACC
4147 If @code{bison} is found, set output variable @code{YACC} to @samp{bison
4148 -y}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
4149 @samp{byacc}.  Otherwise set @code{YACC} to @samp{yacc}.
4150 The result of this test can be influenced by setting the variable
4151 @code{YACC} or the cache variable @code{ac_cv_prog_YACC}.
4152 @end defmac
4154 @node Generic Programs
4155 @subsection Generic Program and File Checks
4157 These macros are used to find programs not covered by the ``particular''
4158 test macros.  If you need to check the behavior of a program as well as
4159 find out whether it is present, you have to write your own test for it
4160 (@pxref{Writing Tests}).  By default, these macros use the environment
4161 variable @env{PATH}.  If you need to check for a program that might not
4162 be in the user's @env{PATH}, you can pass a modified path to use
4163 instead, like this:
4165 @example
4166 AC_PATH_PROG([INETD], [inetd], [/usr/libexec/inetd],
4167              [$PATH$PATH_SEPARATOR/usr/libexec$PATH_SEPARATOR]dnl
4168 [/usr/sbin$PATH_SEPARATOR/usr/etc$PATH_SEPARATOR/etc])
4169 @end example
4171 You are strongly encouraged to declare the @var{variable} passed to
4172 @code{AC_CHECK_PROG} etc.@: as precious, @xref{Setting Output Variables},
4173 @code{AC_ARG_VAR}, for more details.
4175 @anchor{AC_CHECK_PROG}
4176 @defmac AC_CHECK_PROG (@var{variable}, @var{prog-to-check-for}, @
4177   @var{value-if-found}, @ovar{value-if-not-found}, @dvar{path, $PATH}, @
4178   @ovar{reject})
4179 @acindex{CHECK_PROG}
4180 @caindex prog_@var{variable}
4181 Check whether program @var{prog-to-check-for} exists in @var{path}.  If
4182 it is found, set @var{variable} to @var{value-if-found}, otherwise to
4183 @var{value-if-not-found}, if given.  Always pass over @var{reject} (an
4184 absolute file name) even if it is the first found in the search path; in
4185 that case, set @var{variable} using the absolute file name of the
4186 @var{prog-to-check-for} found that is not @var{reject}.  If
4187 @var{variable} was already set, do nothing.  Calls @code{AC_SUBST} for
4188 @var{variable}.  The result of this test can be overridden by setting the
4189 @var{variable} variable or the cache variable
4190 @code{ac_cv_prog_@var{variable}}.
4191 @end defmac
4193 @anchor{AC_CHECK_PROGS}
4194 @defmac AC_CHECK_PROGS (@var{variable}, @var{progs-to-check-for}, @
4195   @ovar{value-if-not-found}, @dvar{path, $PATH})
4196 @acindex{CHECK_PROGS}
4197 @caindex prog_@var{variable}
4198 Check for each program in the blank-separated list
4199 @var{progs-to-check-for} existing in the @var{path}.  If one is found, set
4200 @var{variable} to the name of that program.  Otherwise, continue
4201 checking the next program in the list.  If none of the programs in the
4202 list are found, set @var{variable} to @var{value-if-not-found}; if
4203 @var{value-if-not-found} is not specified, the value of @var{variable}
4204 is not changed.  Calls @code{AC_SUBST} for @var{variable}.  The result of
4205 this test can be overridden by setting the @var{variable} variable or the
4206 cache variable @code{ac_cv_prog_@var{variable}}.
4207 @end defmac
4209 @defmac AC_CHECK_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @
4210   @ovar{value-if-not-found}, @dvar{path, $PATH})
4211 @acindex{CHECK_TARGET_TOOL}
4212 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
4213 with a prefix of the target type as determined by
4214 @code{AC_CANONICAL_TARGET}, followed by a dash (@pxref{Canonicalizing}).
4215 If the tool cannot be found with a prefix, and if the build and target
4216 types are equal, then it is also searched for without a prefix.
4218 As noted in @ref{Specifying Target Triplets}, the
4219 target is rarely specified, because most of the time it is the same
4220 as the host: it is the type of system for which any compiler tool in
4221 the package produces code.  What this macro looks for is,
4222 for example, @emph{a tool @r{(assembler, linker, etc.)}@: that the
4223 compiler driver @r{(@command{gcc} for the GNU C Compiler)}
4224 uses to produce objects, archives or executables}.
4225 @end defmac
4227 @defmac AC_CHECK_TOOL (@var{variable}, @var{prog-to-check-for}, @
4228   @ovar{value-if-not-found}, @dvar{path, $PATH})
4229 @acindex{CHECK_TOOL}
4230 @c @caindex prog_@var{VARIABLE}
4231 @c @caindex prog_ac_ct_@var{VARIABLE}
4232 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
4233 with a prefix of the host type as specified by @option{--host}, followed by a
4234 dash.  For example, if the user runs
4235 @samp{configure --build=x86_64-gnu --host=i386-gnu}, then this call:
4236 @example
4237 AC_CHECK_TOOL([RANLIB], [ranlib], [:])
4238 @end example
4239 @noindent
4240 sets @code{RANLIB} to @file{i386-gnu-ranlib} if that program exists in
4241 @var{path}, or otherwise to @samp{ranlib} if that program exists in
4242 @var{path}, or to @samp{:} if neither program exists.
4244 When cross-compiling, this macro will issue a warning if no program
4245 prefixed with the host type could be found.
4246 For more information, see @ref{Specifying Target Triplets}.
4247 @end defmac
4249 @defmac AC_CHECK_TARGET_TOOLS (@var{variable}, @var{progs-to-check-for}, @
4250   @ovar{value-if-not-found}, @dvar{path, $PATH})
4251 @acindex{CHECK_TARGET_TOOLS}
4252 Like @code{AC_CHECK_TARGET_TOOL}, each of the tools in the list
4253 @var{progs-to-check-for} are checked with a prefix of the target type as
4254 determined by @code{AC_CANONICAL_TARGET}, followed by a dash
4255 (@pxref{Canonicalizing}).  If none of the tools can be found with a
4256 prefix, and if the build and target types are equal, then the first one
4257 without a prefix is used.  If a tool is found, set @var{variable} to
4258 the name of that program.  If none of the tools in the list are found,
4259 set @var{variable} to @var{value-if-not-found}; if @var{value-if-not-found}
4260 is not specified, the value of @var{variable} is not changed.  Calls
4261 @code{AC_SUBST} for @var{variable}.
4262 @end defmac
4264 @defmac AC_CHECK_TOOLS (@var{variable}, @var{progs-to-check-for}, @
4265   @ovar{value-if-not-found}, @dvar{path, $PATH})
4266 @acindex{CHECK_TOOLS}
4267 Like @code{AC_CHECK_TOOL}, each of the tools in the list
4268 @var{progs-to-check-for} are checked with a prefix of the host type as
4269 determined by @code{AC_CANONICAL_HOST}, followed by a dash
4270 (@pxref{Canonicalizing}).  If none of the tools can be found with a
4271 prefix, then the first one without a prefix is used.  If a tool is found,
4272 set @var{variable} to the name of that program.  If none of the tools in
4273 the list are found, set @var{variable} to @var{value-if-not-found}; if
4274 @var{value-if-not-found} is not specified, the value of @var{variable}
4275 is not changed.  Calls @code{AC_SUBST} for @var{variable}.
4277 When cross-compiling, this macro will issue a warning if no program
4278 prefixed with the host type could be found.
4279 For more information, see @ref{Specifying Target Triplets}.
4280 @end defmac
4282 @anchor{AC_PATH_PROG}
4283 @defmac AC_PATH_PROG (@var{variable}, @var{prog-to-check-for}, @
4284   @ovar{value-if-not-found}, @dvar{path, $PATH})
4285 @acindex{PATH_PROG}
4286 @caindex path_@var{variable}
4287 Like @code{AC_CHECK_PROG}, but set @var{variable} to the absolute
4288 name of @var{prog-to-check-for} if found.  The result of this test
4289 can be overridden by setting the @var{variable} variable.  A positive
4290 result of this test is cached in the @code{ac_cv_path_@var{variable}}
4291 variable.
4292 @end defmac
4294 @anchor{AC_PATH_PROGS}
4295 @defmac AC_PATH_PROGS (@var{variable}, @var{progs-to-check-for}, @
4296   @ovar{value-if-not-found}, @dvar{path, $PATH})
4297 @acindex{PATH_PROGS}
4298 @caindex path_@var{variable}
4299 Like @code{AC_CHECK_PROGS}, but if any of @var{progs-to-check-for}
4300 are found, set @var{variable} to the absolute name of the program
4301 found.  The result of this test can be overridden by setting the
4302 @var{variable} variable.  A positive result of this test is cached in
4303 the @code{ac_cv_path_@var{variable}} variable.
4304 @end defmac
4306 @defmac AC_PATH_PROGS_FEATURE_CHECK (@var{variable}, @
4307   @var{progs-to-check-for}, @var{feature-test}, @
4308   @ovar{action-if-not-found}, @dvar{path, $PATH})
4309 @acindex{PATH_PROGS_FEATURE_CHECK}
4310 @caindex path_@var{variable}
4311 This macro was introduced in Autoconf 2.62.  If @var{variable} is not
4312 empty, then set the cache variable @code{ac_cv_path_@var{variable}} to
4313 its value.  Otherwise, check for each program in the blank-separated
4314 list @var{progs-to-check-for} existing in @var{path}.  For each program
4315 found, execute @var{feature-test} with @code{ac_path_@var{variable}}
4316 set to the absolute name of the candidate program.  If no invocation of
4317 @var{feature-test} sets the shell variable
4318 @code{ac_cv_path_@var{variable}}, then @var{action-if-not-found} is
4319 executed.  @var{feature-test} will be run even when
4320 @code{ac_cv_path_@var{variable}} is set, to provide the ability to
4321 choose a better candidate found later in @var{path}; to accept the
4322 current setting and bypass all futher checks, @var{feature-test} can
4323 execute @code{ac_path_@var{variable}_found=:}.
4325 Note that this macro has some subtle differences from
4326 @code{AC_CHECK_PROGS}.  It is designed to be run inside
4327 @code{AC_CACHE_VAL}, therefore, it should have no side effects.  In
4328 particular, @var{variable} is not set to the final value of
4329 @code{ac_cv_path_@var{variable}}, nor is @code{AC_SUBST} automatically
4330 run.  Also, on failure, any action can be performed, whereas
4331 @code{AC_CHECK_PROGS} only performs
4332 @code{@var{variable}=@var{value-if-not-found}}.
4334 Here is an example, similar to what Autoconf uses in its own configure
4335 script.  It will search for an implementation of @command{m4} that
4336 supports the @code{indir} builtin, even if it goes by the name
4337 @command{gm4} or is not the first implementation on @env{PATH}.
4339 @example
4340 AC_CACHE_CHECK([for m4 that supports indir], [ac_cv_path_M4],
4341   [AC_PATH_PROGS_FEATURE_CHECK([M4], [m4 gm4],
4342     [[m4out=`echo 'changequote([,])indir([divnum])' | $ac_path_M4`
4343       test "x$m4out" = x0 \
4344       && ac_cv_path_M4=$ac_path_M4 ac_path_M4_found=:]],
4345     [AC_MSG_ERROR([could not find m4 that supports indir])])])
4346 AC_SUBST([M4], [$ac_cv_path_M4])
4347 @end example
4348 @end defmac
4350 @defmac AC_PATH_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @
4351   @ovar{value-if-not-found}, @dvar{path, $PATH})
4352 @acindex{PATH_TARGET_TOOL}
4353 Like @code{AC_CHECK_TARGET_TOOL}, but set @var{variable} to the absolute
4354 name of the program if it is found.
4355 @end defmac
4357 @defmac AC_PATH_TOOL (@var{variable}, @var{prog-to-check-for}, @
4358   @ovar{value-if-not-found}, @dvar{path, $PATH})
4359 @acindex{PATH_TOOL}
4360 Like @code{AC_CHECK_TOOL}, but set @var{variable} to the absolute
4361 name of the program if it is found.
4363 When cross-compiling, this macro will issue a warning if no program
4364 prefixed with the host type could be found.
4365 For more information, see @ref{Specifying Target Triplets}.
4366 @end defmac
4369 @node Files
4370 @section Files
4371 @cindex File, checking
4373 You might also need to check for the existence of files.  Before using
4374 these macros, ask yourself whether a runtime test might not be a better
4375 solution.  Be aware that, like most Autoconf macros, they test a feature
4376 of the host machine, and therefore, they die when cross-compiling.
4378 @defmac AC_CHECK_FILE (@var{file}, @ovar{action-if-found}, @
4379   @ovar{action-if-not-found})
4380 @acindex{CHECK_FILE}
4381 @caindex file_@var{file}
4382 Check whether file @var{file} exists on the native system.  If it is
4383 found, execute @var{action-if-found}, otherwise do
4384 @var{action-if-not-found}, if given.  The result of this test is cached
4385 in the @code{ac_cv_file_@var{file}} variable, with characters not
4386 suitable for a variable name mapped to underscores.
4387 @end defmac
4389 @defmac AC_CHECK_FILES (@var{files}, @ovar{action-if-found}, @
4390   @ovar{action-if-not-found})
4391 @acindex{CHECK_FILES}
4392 @caindex file_@var{file}
4393 Executes @code{AC_CHECK_FILE} once for each file listed in @var{files}.
4394 Additionally, defines @samp{HAVE_@var{file}} (@pxref{Standard Symbols})
4395 for each file found.  The results of each test are cached in the
4396 @code{ac_cv_file_@var{file}} variable, with characters not suitable for
4397 a variable name mapped to underscores.
4398 @end defmac
4401 @node Libraries
4402 @section Library Files
4403 @cindex Library, checking
4405 The following macros check for the presence of certain C, C++, or Fortran
4406 library archive files.
4408 @anchor{AC_CHECK_LIB}
4409 @defmac AC_CHECK_LIB (@var{library}, @var{function}, @
4410   @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
4411 @acindex{CHECK_LIB}
4412 @caindex lib_@var{library}_@var{function}
4413 Test whether the library @var{library} is available by trying to link
4414 a test program that calls function @var{function} with the library.
4415 @var{function} should be a function provided by the library.
4416 Use the base
4417 name of the library; e.g., to check for @option{-lmp}, use @samp{mp} as
4418 the @var{library} argument.
4420 @var{action-if-found} is a list of shell commands to run if the link
4421 with the library succeeds; @var{action-if-not-found} is a list of shell
4422 commands to run if the link fails.  If @var{action-if-found} is not
4423 specified, the default action prepends @option{-l@var{library}} to
4424 @code{LIBS} and defines @samp{HAVE_LIB@var{library}} (in all
4425 capitals).  This macro is intended to support building @code{LIBS} in
4426 a right-to-left (least-dependent to most-dependent) fashion such that
4427 library dependencies are satisfied as a natural side effect of
4428 consecutive tests.  Linkers are sensitive to library ordering
4429 so the order in which @code{LIBS} is generated is important to reliable
4430 detection of libraries.
4432 If linking with @var{library} results in unresolved symbols that would
4433 be resolved by linking with additional libraries, give those libraries
4434 as the @var{other-libraries} argument, separated by spaces:
4435 e.g., @option{-lXt -lX11}.  Otherwise, this macro may fail to detect
4436 that @var{library} is present, because linking the test program can
4437 fail with unresolved symbols.  The @var{other-libraries} argument
4438 should be limited to cases where it is desirable to test for one library
4439 in the presence of another that is not already in @code{LIBS}.
4441 @code{AC_CHECK_LIB} requires some care in usage, and should be avoided
4442 in some common cases.  Many standard functions like @code{gethostbyname}
4443 appear in the standard C library on some hosts, and in special libraries
4444 like @code{nsl} on other hosts.  On some hosts the special libraries
4445 contain variant implementations that you may not want to use.  These
4446 days it is normally better to use @code{AC_SEARCH_LIBS([gethostbyname],
4447 [nsl])} instead of @code{AC_CHECK_LIB([nsl], [gethostbyname])}.
4449 The result of this test is cached in the
4450 @code{ac_cv_lib_@var{library}_@var{function}} variable.
4451 @end defmac
4453 @anchor{AC_SEARCH_LIBS}
4454 @defmac AC_SEARCH_LIBS (@var{function}, @var{search-libs}, @
4455   @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
4456 @acindex{SEARCH_LIBS}
4457 @caindex search_@var{function}
4458 Search for a library defining @var{function} if it's not already
4459 available.  This equates to calling
4460 @samp{AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])])} first with
4461 no libraries, then for each library listed in @var{search-libs}.
4463 Prepend @option{-l@var{library}} to @code{LIBS} for the first library found
4464 to contain @var{function}, and run @var{action-if-found}.  If the
4465 function is not found, run @var{action-if-not-found}.
4467 If linking with @var{library} results in unresolved symbols that would
4468 be resolved by linking with additional libraries, give those libraries
4469 as the @var{other-libraries} argument, separated by spaces:
4470 e.g., @option{-lXt -lX11}.  Otherwise, this macro fails to detect
4471 that @var{function} is present, because linking the test program
4472 always fails with unresolved symbols.
4474 The result of this test is cached in the
4475 @code{ac_cv_search_@var{function}} variable as @samp{none required} if
4476 @var{function} is already available, as @samp{no} if no library
4477 containing @var{function} was found, otherwise as the
4478 @option{-l@var{library}} option that needs to be prepended to @code{LIBS}.
4479 @end defmac
4483 @node Library Functions
4484 @section Library Functions
4486 The following macros check for particular C library functions.
4487 If there is no macro specifically defined to check for a function you need,
4488 and you don't need to check for any special properties of
4489 it, then you can use one of the general function-check macros.
4491 @menu
4492 * Function Portability::        Pitfalls with usual functions
4493 * Particular Functions::        Special handling to find certain functions
4494 * Generic Functions::           How to find other functions
4495 @end menu
4497 @node Function Portability
4498 @subsection Portability of C Functions
4499 @cindex Portability of C functions
4500 @cindex C function portability
4502 Most usual functions can either be missing, or be buggy, or be limited
4503 on some architectures.  This section tries to make an inventory of these
4504 portability issues.  By definition, this list always requires
4505 additions.  Please help us keeping it as complete as possible.
4507 @table @asis
4508 @item @code{exit}
4509 @c @fuindex exit
4510 @prindex @code{exit}
4511 On ancient hosts, @code{exit} returned @code{int}.
4512 This is because @code{exit} predates @code{void}, and there was a long
4513 tradition of it returning @code{int}.
4515 On current hosts, the problem more likely is that @code{exit} is not
4516 declared, due to C++ problems of some sort or another.  For this reason
4517 we suggest that test programs not invoke @code{exit}, but return from
4518 @code{main} instead.
4520 @item @code{free}
4521 @c @fuindex free
4522 @prindex @code{free}
4523 The C standard says a call @code{free (NULL)} does nothing, but
4524 some old systems don't support this (e.g., NextStep).
4526 @item @code{isinf}
4527 @itemx @code{isnan}
4528 @c @fuindex isinf
4529 @c @fuindex isnan
4530 @prindex @code{isinf}
4531 @prindex @code{isnan}
4532 The C99 standard says that @code{isinf} and @code{isnan} are
4533 macros.  On some systems just macros are available
4534 (e.g., HP-UX and Solaris 10), on
4535 some systems both macros and functions (e.g., glibc 2.3.2), and on some
4536 systems only functions (e.g., IRIX 6 and Solaris 9).  In some cases
4537 these functions are declared in nonstandard headers like
4538 @code{<sunmath.h>} and defined in non-default libraries like
4539 @option{-lm} or @option{-lsunmath}.
4541 The C99 @code{isinf} and @code{isnan} macros work correctly with
4542 @code{long double} arguments, but pre-C99 systems that use functions
4543 typically assume @code{double} arguments.  On such a system,
4544 @code{isinf} incorrectly returns true for a finite @code{long double}
4545 argument that is outside the range of @code{double}.
4547 The best workaround for these issues is to use gnulib modules
4548 @code{isinf} and @code{isnan} (@pxref{Gnulib}).  But a lighter weight
4549 solution involves code like the following.
4551 @smallexample
4552 #include <math.h>
4554 #ifndef isnan
4555 # define isnan(x) \
4556     (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
4557      : sizeof (x) == sizeof (double) ? isnan_d (x) \
4558      : isnan_f (x))
4559 static inline int isnan_f  (float       x) @{ return x != x; @}
4560 static inline int isnan_d  (double      x) @{ return x != x; @}
4561 static inline int isnan_ld (long double x) @{ return x != x; @}
4562 #endif
4564 #ifndef isinf
4565 # define isinf(x) \
4566     (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
4567      : sizeof (x) == sizeof (double) ? isinf_d (x) \
4568      : isinf_f (x))
4569 static inline int isinf_f  (float       x)
4570 @{ return !isnan (x) && isnan (x - x); @}
4571 static inline int isinf_d  (double      x)
4572 @{ return !isnan (x) && isnan (x - x); @}
4573 static inline int isinf_ld (long double x)
4574 @{ return !isnan (x) && isnan (x - x); @}
4575 #endif
4576 @end smallexample
4578 Use @code{AC_C_INLINE} (@pxref{C Compiler}) so that this code works on
4579 compilers that lack the @code{inline} keyword.  Some optimizing
4580 compilers mishandle these definitions, but systems with that bug
4581 typically have many other floating point corner-case compliance problems
4582 anyway, so it's probably not worth worrying about.
4584 @item @code{malloc}
4585 @c @fuindex malloc
4586 @prindex @code{malloc}
4587 The C standard says a call @code{malloc (0)} is implementation
4588 dependent.  It can return either @code{NULL} or a new non-null pointer.
4589 The latter is more common (e.g., the GNU C Library) but is by
4590 no means universal.  @code{AC_FUNC_MALLOC}
4591 can be used to insist on non-@code{NULL} (@pxref{Particular Functions}).
4593 @item @code{putenv}
4594 @c @fuindex putenv
4595 @prindex @code{putenv}
4596 Posix prefers @code{setenv} to @code{putenv}; among other things,
4597 @code{putenv} is not required of all Posix implementations, but
4598 @code{setenv} is.
4600 Posix specifies that @code{putenv} puts the given string directly in
4601 @code{environ}, but some systems make a copy of it instead (e.g.,
4602 glibc 2.0, or BSD).  And when a copy is made, @code{unsetenv} might
4603 not free it, causing a memory leak (e.g., FreeBSD 4).
4605 On some systems @code{putenv ("FOO")} removes @samp{FOO} from the
4606 environment, but this is not standard usage and it dumps core
4607 on some systems (e.g., AIX).
4609 On MinGW, a call @code{putenv ("FOO=")} removes @samp{FOO} from the
4610 environment, rather than inserting it with an empty value.
4612 @item @code{realloc}
4613 @c @fuindex realloc
4614 @prindex @code{realloc}
4615 The C standard says a call @code{realloc (NULL, size)} is equivalent
4616 to @code{malloc (size)}, but some old systems don't support this (e.g.,
4617 NextStep).
4619 @item @code{signal} handler
4620 @c @fuindex signal
4621 @prindex @code{signal}
4622 @prindex @code{sigaction}
4623 Normally @code{signal} takes a handler function with a return type of
4624 @code{void}, but some old systems required @code{int} instead.  Any
4625 actual @code{int} value returned is not used; this is only a
4626 difference in the function prototype demanded.
4628 All systems we know of in current use return @code{void}.  The
4629 @code{int} was to support K&R C, where of course @code{void} is not
4630 available.  The obsolete macro @code{AC_TYPE_SIGNAL}
4631 (@pxref{AC_TYPE_SIGNAL}) can be used to establish the correct type in
4632 all cases.
4634 In most cases, it is more robust to use @code{sigaction} when it is
4635 available, rather than @code{signal}.
4637 @item @code{snprintf}
4638 @c @fuindex snprintf
4639 @prindex @code{snprintf}
4640 @c @fuindex vsnprintf
4641 @prindex @code{vsnprintf}
4642 The C99 standard says that if the output array isn't big enough
4643 and if no other errors occur, @code{snprintf} and @code{vsnprintf}
4644 truncate the output and return the number of bytes that ought to have
4645 been produced.  Some older systems return the truncated length (e.g.,
4646 GNU C Library 2.0.x or IRIX 6.5), some a negative value
4647 (e.g., earlier GNU C Library versions), and some the buffer
4648 length without truncation (e.g., 32-bit Solaris 7).  Also, some buggy
4649 older systems ignore the length and overrun the buffer (e.g., 64-bit
4650 Solaris 7).
4652 @item @code{sprintf}
4653 @c @fuindex sprintf
4654 @prindex @code{sprintf}
4655 @c @fuindex vsprintf
4656 @prindex @code{vsprintf}
4657 The C standard says @code{sprintf} and @code{vsprintf} return the
4658 number of bytes written.  On some ancient systems (SunOS 4 for
4659 instance) they return the buffer pointer instead, but these no
4660 longer need to be worried about.
4662 @item @code{sscanf}
4663 @c @fuindex sscanf
4664 @prindex @code{sscanf}
4665 On various old systems, e.g., HP-UX 9, @code{sscanf} requires
4666 that its
4667 input string be writable (though it doesn't actually change it).  This
4668 can be a problem when using @command{gcc} since it normally puts
4669 constant strings in read-only memory (@pxref{Incompatibilities,
4670 Incompatibilities of GCC, , gcc, Using and
4671 Porting the GNU Compiler Collection}).  Apparently in some cases even
4672 having format strings read-only can be a problem.
4674 @item @code{strerror_r}
4675 @c @fuindex strerror_r
4676 @prindex @code{strerror_r}
4677 Posix specifies that @code{strerror_r} returns an @code{int}, but many
4678 systems (e.g., GNU C Library version 2.2.4) provide a
4679 different version returning a @code{char *}.  @code{AC_FUNC_STRERROR_R}
4680 can detect which is in use (@pxref{Particular Functions}).
4682 @item @code{strnlen}
4683 @c @fuindex strnlen
4684 @prindex @code{strnlen}
4685 AIX 4.3 provides a broken version which produces the
4686 following results:
4688 @example
4689 strnlen ("foobar", 0) = 0
4690 strnlen ("foobar", 1) = 3
4691 strnlen ("foobar", 2) = 2
4692 strnlen ("foobar", 3) = 1
4693 strnlen ("foobar", 4) = 0
4694 strnlen ("foobar", 5) = 6
4695 strnlen ("foobar", 6) = 6
4696 strnlen ("foobar", 7) = 6
4697 strnlen ("foobar", 8) = 6
4698 strnlen ("foobar", 9) = 6
4699 @end example
4701 @item @code{sysconf}
4702 @c @fuindex sysconf
4703 @prindex @code{sysconf}
4704 @code{_SC_PAGESIZE} is standard, but some older systems (e.g., HP-UX
4705 9) have @code{_SC_PAGE_SIZE} instead.  This can be tested with
4706 @code{#ifdef}.
4708 @item @code{unlink}
4709 @c @fuindex unlink
4710 @prindex @code{unlink}
4711 The Posix spec says that @code{unlink} causes the given file to be
4712 removed only after there are no more open file handles for it.  Some
4713 non-Posix hosts have trouble with this requirement, though,
4714 and some DOS variants even corrupt the file system.
4716 @item @code{unsetenv}
4717 @c @fuindex unsetenv
4718 @prindex @code{unsetenv}
4719 On MinGW, @code{unsetenv} is not available, but a variable @samp{FOO}
4720 can be removed with a call @code{putenv ("FOO=")}, as described under
4721 @code{putenv} above.
4723 @item @code{va_copy}
4724 @c @fuindex va_copy
4725 @prindex @code{va_copy}
4726 The C99 standard provides @code{va_copy} for copying
4727 @code{va_list} variables.  It may be available in older environments
4728 too, though possibly as @code{__va_copy} (e.g., @command{gcc} in strict
4729 pre-C99 mode).  These can be tested with @code{#ifdef}.  A fallback to
4730 @code{memcpy (&dst, &src, sizeof (va_list))} gives maximum
4731 portability.
4733 @item @code{va_list}
4734 @c @fuindex va_list
4735 @prindex @code{va_list}
4736 @code{va_list} is not necessarily just a pointer.  It can be a
4737 @code{struct} (e.g., @command{gcc} on Alpha), which means @code{NULL} is
4738 not portable.  Or it can be an array (e.g., @command{gcc} in some
4739 PowerPC configurations), which means as a function parameter it can be
4740 effectively call-by-reference and library routines might modify the
4741 value back in the caller (e.g., @code{vsnprintf} in the GNU C Library
4742 2.1).
4744 @item Signed @code{>>}
4745 Normally the C @code{>>} right shift of a signed type replicates the
4746 high bit, giving a so-called ``arithmetic'' shift.  But care should be
4747 taken since Standard C doesn't require that behavior.  On those
4748 few processors without a native arithmetic shift (for instance Cray
4749 vector systems) zero bits may be shifted in, the same as a shift of an
4750 unsigned type.
4752 @item Integer @code{/}
4753 C divides signed integers by truncating their quotient toward zero,
4754 yielding the same result as Fortran.  However, before C99 the standard
4755 allowed C implementations to take the floor or ceiling of the quotient
4756 in some cases.  Hardly any implementations took advantage of this
4757 freedom, though, and it's probably not worth worrying about this issue
4758 nowadays.
4759 @end table
4762 @node Particular Functions
4763 @subsection Particular Function Checks
4764 @cindex Function, checking
4766 These macros check for particular C functions---whether they exist, and
4767 in some cases how they respond when given certain arguments.
4769 @anchor{AC_FUNC_ALLOCA}
4770 @defmac AC_FUNC_ALLOCA
4771 @acindex{FUNC_ALLOCA}
4772 @cvindex C_ALLOCA
4773 @cvindex HAVE_ALLOCA_H
4774 @ovindex ALLOCA
4775 @c @fuindex alloca
4776 @prindex @code{alloca}
4777 @hdrindex{alloca.h}
4778 @c @caindex working_alloca_h
4779 Check how to get @code{alloca}.  Tries to get a builtin version by
4780 checking for @file{alloca.h} or the predefined C preprocessor macros
4781 @code{__GNUC__} and @code{_AIX}.  If this macro finds @file{alloca.h},
4782 it defines @code{HAVE_ALLOCA_H}.
4784 If those attempts fail, it looks for the function in the standard C
4785 library.  If any of those methods succeed, it defines
4786 @code{HAVE_ALLOCA}.  Otherwise, it sets the output variable
4787 @code{ALLOCA} to @samp{$@{LIBOBJDIR@}alloca.o} and defines
4788 @code{C_ALLOCA} (so programs can periodically call @samp{alloca (0)} to
4789 garbage collect).  This variable is separate from @code{LIBOBJS} so
4790 multiple programs can share the value of @code{ALLOCA} without needing
4791 to create an actual library, in case only some of them use the code in
4792 @code{LIBOBJS}.  The @samp{$@{LIBOBJDIR@}} prefix serves the same
4793 purpose as in @code{LIBOBJS} (@pxref{AC_LIBOBJ vs LIBOBJS}).
4795 This macro does not try to get @code{alloca} from the System V R3
4796 @file{libPW} or the System V R4 @file{libucb} because those libraries
4797 contain some incompatible functions that cause trouble.  Some versions
4798 do not even contain @code{alloca} or contain a buggy version.  If you
4799 still want to use their @code{alloca}, use @code{ar} to extract
4800 @file{alloca.o} from them instead of compiling @file{alloca.c}.
4802 Source files that use @code{alloca} should start with a piece of code
4803 like the following, to declare it properly.
4805 @example
4806 @group
4807 #ifdef HAVE_ALLOCA_H
4808 # include <alloca.h>
4809 #elif defined __GNUC__
4810 # define alloca __builtin_alloca
4811 #elif defined _AIX
4812 # define alloca __alloca
4813 #elif defined _MSC_VER
4814 # include <malloc.h>
4815 # define alloca _alloca
4816 #else
4817 # include <stddef.h>
4818 # ifdef  __cplusplus
4819 extern "C"
4820 # endif
4821 void *alloca (size_t);
4822 #endif
4823 @end group
4824 @end example
4825 @end defmac
4827 @defmac AC_FUNC_CHOWN
4828 @acindex{FUNC_CHOWN}
4829 @cvindex HAVE_CHOWN
4830 @c @fuindex chown
4831 @prindex @code{chown}
4832 @caindex func_chown_works
4833 If the @code{chown} function is available and works (in particular, it
4834 should accept @option{-1} for @code{uid} and @code{gid}), define
4835 @code{HAVE_CHOWN}.  The result of this macro is cached in the
4836 @code{ac_cv_func_chown_works} variable.
4837 @end defmac
4839 @anchor{AC_FUNC_CLOSEDIR_VOID}
4840 @defmac AC_FUNC_CLOSEDIR_VOID
4841 @acindex{FUNC_CLOSEDIR_VOID}
4842 @cvindex CLOSEDIR_VOID
4843 @c @fuindex closedir
4844 @prindex @code{closedir}
4845 @caindex func_closedir_void
4846 If the @code{closedir} function does not return a meaningful value,
4847 define @code{CLOSEDIR_VOID}.  Otherwise, callers ought to check its
4848 return value for an error indicator.
4850 Currently this test is implemented by running a test program.  When
4851 cross compiling the pessimistic assumption that @code{closedir} does not
4852 return a meaningful value is made.
4854 The result of this macro is cached in the @code{ac_cv_func_closedir_void}
4855 variable.
4857 This macro is obsolescent, as @code{closedir} returns a meaningful value
4858 on current systems.  New programs need not use this macro.
4859 @end defmac
4861 @defmac AC_FUNC_ERROR_AT_LINE
4862 @acindex{FUNC_ERROR_AT_LINE}
4863 @c @fuindex error_at_line
4864 @prindex @code{error_at_line}
4865 @caindex lib_error_at_line
4866 If the @code{error_at_line} function is not found, require an
4867 @code{AC_LIBOBJ} replacement of @samp{error}.
4869 The result of this macro is cached in the @code{ac_cv_lib_error_at_line}
4870 variable.
4871 @end defmac
4873 @defmac AC_FUNC_FNMATCH
4874 @acindex{FUNC_FNMATCH}
4875 @c @fuindex fnmatch
4876 @prindex @code{fnmatch}
4877 @caindex func_fnmatch_works
4878 If the @code{fnmatch} function conforms to Posix, define
4879 @code{HAVE_FNMATCH}.  Detect common implementation bugs, for example,
4880 the bugs in Solaris 2.4.
4882 Unlike the other specific
4883 @code{AC_FUNC} macros, @code{AC_FUNC_FNMATCH} does not replace a
4884 broken/missing @code{fnmatch}.  This is for historical reasons.
4885 See @code{AC_REPLACE_FNMATCH} below.
4887 The result of this macro is cached in the @code{ac_cv_func_fnmatch_works}
4888 variable.
4890 This macro is obsolescent.  New programs should use Gnulib's
4891 @code{fnmatch-posix} module.  @xref{Gnulib}.
4892 @end defmac
4894 @defmac AC_FUNC_FNMATCH_GNU
4895 @acindex{FUNC_FNMATCH_GNU}
4896 @c @fuindex fnmatch
4897 @prindex @code{fnmatch}
4898 @caindex func_fnmatch_gnu
4899 Behave like @code{AC_REPLACE_FNMATCH} (@emph{replace}) but also test
4900 whether @code{fnmatch} supports GNU extensions.  Detect common
4901 implementation bugs, for example, the bugs in the GNU C
4902 Library 2.1.
4904 The result of this macro is cached in the @code{ac_cv_func_fnmatch_gnu}
4905 variable.
4907 This macro is obsolescent.  New programs should use Gnulib's
4908 @code{fnmatch-gnu} module.  @xref{Gnulib}.
4909 @end defmac
4911 @anchor{AC_FUNC_FORK}
4912 @defmac AC_FUNC_FORK
4913 @acindex{FUNC_FORK}
4914 @cvindex HAVE_VFORK_H
4915 @cvindex HAVE_WORKING_FORK
4916 @cvindex HAVE_WORKING_VFORK
4917 @cvindex vfork
4918 @c @fuindex fork
4919 @prindex @code{fork}
4920 @c @fuindex vfork
4921 @prindex @code{vfork}
4922 @hdrindex{vfork.h}
4923 @c @caindex func_fork
4924 @c @caindex func_fork_works
4925 This macro checks for the @code{fork} and @code{vfork} functions.  If a
4926 working @code{fork} is found, define @code{HAVE_WORKING_FORK}.  This macro
4927 checks whether @code{fork} is just a stub by trying to run it.
4929 If @file{vfork.h} is found, define @code{HAVE_VFORK_H}.  If a working
4930 @code{vfork} is found, define @code{HAVE_WORKING_VFORK}.  Otherwise,
4931 define @code{vfork} to be @code{fork} for backward compatibility with
4932 previous versions of @command{autoconf}.  This macro checks for several known
4933 errors in implementations of @code{vfork} and considers the system to not
4934 have a working @code{vfork} if it detects any of them.  It is not considered
4935 to be an implementation error if a child's invocation of @code{signal}
4936 modifies the parent's signal handler, since child processes rarely change
4937 their signal handlers.
4939 Since this macro defines @code{vfork} only for backward compatibility with
4940 previous versions of @command{autoconf} you're encouraged to define it
4941 yourself in new code:
4942 @example
4943 @group
4944 #ifndef HAVE_WORKING_VFORK
4945 # define vfork fork
4946 #endif
4947 @end group
4948 @end example
4949 @end defmac
4951 @defmac AC_FUNC_FSEEKO
4952 @acindex{FUNC_FSEEKO}
4953 @cvindex _LARGEFILE_SOURCE
4954 @cvindex HAVE_FSEEKO
4955 @c @fuindex fseeko
4956 @prindex @code{fseeko}
4957 @c @fuindex ftello
4958 @prindex @code{ftello}
4959 @c @caindex sys_largefile_source
4960 If the @code{fseeko} function is available, define @code{HAVE_FSEEKO}.
4961 Define @code{_LARGEFILE_SOURCE} if necessary to make the prototype
4962 visible on some systems (e.g., glibc 2.2).  Otherwise linkage problems
4963 may occur when compiling with @code{AC_SYS_LARGEFILE} on
4964 largefile-sensitive systems where @code{off_t} does not default to a
4965 64bit entity.  All systems with @code{fseeko} also supply @code{ftello}.
4966 @end defmac
4968 @defmac AC_FUNC_GETGROUPS
4969 @acindex{FUNC_GETGROUPS}
4970 @cvindex HAVE_GETGROUPS
4971 @ovindex GETGROUPS_LIBS
4972 @c @fuindex getgroups
4973 @prindex @code{getgroups}
4974 @caindex func_getgroups_works
4975 If the @code{getgroups} function is available and works (unlike on
4976 Ultrix 4.3, where @samp{getgroups (0, 0)} always fails), define
4977 @code{HAVE_GETGROUPS}.  Set @code{GETGROUPS_LIBS} to any libraries
4978 needed to get that function.  This macro runs @code{AC_TYPE_GETGROUPS}.
4979 @end defmac
4981 @anchor{AC_FUNC_GETLOADAVG}
4982 @defmac AC_FUNC_GETLOADAVG
4983 @acindex{FUNC_GETLOADAVG}
4984 @cvindex SVR4
4985 @cvindex DGUX
4986 @cvindex UMAX
4987 @cvindex UMAX4_3
4988 @cvindex HAVE_NLIST_H
4989 @cvindex NLIST_NAME_UNION
4990 @cvindex GETLOADAVG_PRIVILEGED
4991 @cvindex NEED_SETGID
4992 @cvindex C_GETLOADAVG
4993 @ovindex LIBOBJS
4994 @ovindex NEED_SETGID
4995 @ovindex KMEM_GROUP
4996 @ovindex GETLOADAVG_LIBS
4997 @c @fuindex getloadavg
4998 @prindex @code{getloadavg}
4999 Check how to get the system load averages.  To perform its tests
5000 properly, this macro needs the file @file{getloadavg.c}; therefore, be
5001 sure to set the @code{AC_LIBOBJ} replacement directory properly (see
5002 @ref{Generic Functions}, @code{AC_CONFIG_LIBOBJ_DIR}).
5004 If the system has the @code{getloadavg} function, define
5005 @code{HAVE_GETLOADAVG}, and set @code{GETLOADAVG_LIBS} to any libraries
5006 necessary to get that function.  Also add @code{GETLOADAVG_LIBS} to
5007 @code{LIBS}.  Otherwise, require an @code{AC_LIBOBJ} replacement for
5008 @samp{getloadavg} with source code in @file{@var{dir}/getloadavg.c}, and
5009 possibly define several other C preprocessor macros and output
5010 variables:
5012 @enumerate
5013 @item
5014 Define @code{C_GETLOADAVG}.
5016 @item
5017 Define @code{SVR4}, @code{DGUX}, @code{UMAX}, or @code{UMAX4_3} if on
5018 those systems.
5020 @item
5021 @hdrindex{nlist.h}
5022 If @file{nlist.h} is found, define @code{HAVE_NLIST_H}.
5024 @item
5025 If @samp{struct nlist} has an @samp{n_un.n_name} member, define
5026 @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}.  The obsolete symbol
5027 @code{NLIST_NAME_UNION} is still defined, but do not depend upon it.
5029 @item
5030 Programs may need to be installed set-group-ID (or set-user-ID) for
5031 @code{getloadavg} to work.  In this case, define
5032 @code{GETLOADAVG_PRIVILEGED}, set the output variable @code{NEED_SETGID}
5033 to @samp{true} (and otherwise to @samp{false}), and set
5034 @code{KMEM_GROUP} to the name of the group that should own the installed
5035 program.
5036 @end enumerate
5038 The @code{AC_FUNC_GETLOADAVG} macro is obsolescent.  New programs should
5039 use Gnulib's @code{getloadavg} module.  @xref{Gnulib}.
5040 @end defmac
5042 @anchor{AC_FUNC_GETMNTENT}
5043 @defmac AC_FUNC_GETMNTENT
5044 @acindex{FUNC_GETMNTENT}
5045 @cvindex HAVE_GETMNTENT
5046 @c @fuindex getmntent
5047 @prindex @code{getmntent}
5048 @caindex search_getmntent
5049 Check for @code{getmntent} in the standard C library, and then in the
5050 @file{sun}, @file{seq}, and @file{gen} libraries, for UNICOS,
5051 IRIX 4, PTX, and UnixWare, respectively.  Then, if
5052 @code{getmntent} is available, define @code{HAVE_GETMNTENT} and set
5053 @code{ac_cv_func_getmntent} to @code{yes}.  Otherwise set
5054 @code{ac_cv_func_getmntent} to @code{no}.
5056 The result of this macro can be overridden by setting the cache variable
5057 @code{ac_cv_search_getmntent}.
5058 @end defmac
5060 @defmac AC_FUNC_GETPGRP
5061 @acindex{FUNC_GETPGRP}
5062 @cvindex GETPGRP_VOID
5063 @c @fuindex getpgid
5064 @c @fuindex getpgrp
5065 @prindex @code{getpgid}
5066 @prindex @code{getpgrp}
5067 @caindex func_getpgrp_void
5068 Define @code{GETPGRP_VOID} if it is an error to pass 0 to
5069 @code{getpgrp}; this is the Posix behavior.  On older BSD
5070 systems, you must pass 0 to @code{getpgrp}, as it takes an argument and
5071 behaves like Posix's @code{getpgid}.
5073 @example
5074 #ifdef GETPGRP_VOID
5075   pid = getpgrp ();
5076 #else
5077   pid = getpgrp (0);
5078 #endif
5079 @end example
5081 This macro does not check whether
5082 @code{getpgrp} exists at all; if you need to work in that situation,
5083 first call @code{AC_CHECK_FUNC} for @code{getpgrp}.
5085 The result of this macro is cached in the @code{ac_cv_func_getpgrp_void}
5086 variable.
5088 This macro is obsolescent, as current systems have a @code{getpgrp}
5089 whose signature conforms to Posix.  New programs need not use this macro.
5090 @end defmac
5092 @defmac AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
5093 @acindex{FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK}
5094 @cvindex LSTAT_FOLLOWS_SLASHED_SYMLINK
5095 @c @fuindex lstat
5096 @prindex @code{lstat}
5097 @caindex func_lstat_dereferences_slashed_symlink
5098 If @file{link} is a symbolic link, then @code{lstat} should treat
5099 @file{link/} the same as @file{link/.}.  However, many older
5100 @code{lstat} implementations incorrectly ignore trailing slashes.
5102 It is safe to assume that if @code{lstat} incorrectly ignores
5103 trailing slashes, then other symbolic-link-aware functions like
5104 @code{unlink} also incorrectly ignore trailing slashes.
5106 If @code{lstat} behaves properly, define
5107 @code{LSTAT_FOLLOWS_SLASHED_SYMLINK}, otherwise require an
5108 @code{AC_LIBOBJ} replacement of @code{lstat}.
5110 The result of this macro is cached in the
5111 @code{ac_cv_func_lstat_dereferences_slashed_symlink} variable.
5112 @end defmac
5114 @defmac AC_FUNC_MALLOC
5115 @acindex{FUNC_MALLOC}
5116 @cvindex HAVE_MALLOC
5117 @cvindex malloc
5118 @c @fuindex malloc
5119 @prindex @code{malloc}
5120 @caindex func_malloc_0_nonnull
5121 If the @code{malloc} function is compatible with the GNU C
5122 library @code{malloc} (i.e., @samp{malloc (0)} returns a valid
5123 pointer), define @code{HAVE_MALLOC} to 1.  Otherwise define
5124 @code{HAVE_MALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
5125 @samp{malloc}, and define @code{malloc} to @code{rpl_malloc} so that the
5126 native @code{malloc} is not used in the main project.
5128 Typically, the replacement file @file{malloc.c} should look like (note
5129 the @samp{#undef malloc}):
5131 @verbatim
5132 #include <config.h>
5133 #undef malloc
5135 #include <sys/types.h>
5137 void *malloc ();
5139 /* Allocate an N-byte block of memory from the heap.
5140    If N is zero, allocate a 1-byte block.  */
5142 void *
5143 rpl_malloc (size_t n)
5145   if (n == 0)
5146     n = 1;
5147   return malloc (n);
5149 @end verbatim
5151 The result of this macro is cached in the
5152 @code{ac_cv_func_malloc_0_nonnull} variable.
5153 @end defmac
5155 @defmac AC_FUNC_MBRTOWC
5156 @acindex{FUNC_MBRTOWC}
5157 @cvindex HAVE_MBRTOWC
5158 @c @fuindex mbrtowc
5159 @prindex @code{mbrtowc}
5160 @caindex func_mbrtowc
5161 Define @code{HAVE_MBRTOWC} to 1 if the function @code{mbrtowc} and the
5162 type @code{mbstate_t} are properly declared.
5164 The result of this macro is cached in the @code{ac_cv_func_mbrtowc}
5165 variable.
5166 @end defmac
5168 @defmac AC_FUNC_MEMCMP
5169 @acindex{FUNC_MEMCMP}
5170 @ovindex LIBOBJS
5171 @c @fuindex memcmp
5172 @prindex @code{memcmp}
5173 @caindex func_memcmp_working
5174 If the @code{memcmp} function is not available, or does not work on
5175 8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16
5176 bytes or more and with at least one buffer not starting on a 4-byte
5177 boundary (such as the one on NeXT x86 OpenStep), require an
5178 @code{AC_LIBOBJ} replacement for @samp{memcmp}.
5180 The result of this macro is cached in the
5181 @code{ac_cv_func_memcmp_working} variable.
5183 This macro is obsolescent, as current systems have a working
5184 @code{memcmp}.  New programs need not use this macro.
5185 @end defmac
5187 @defmac AC_FUNC_MKTIME
5188 @acindex{FUNC_MKTIME}
5189 @ovindex LIBOBJS
5190 @c @fuindex mktime
5191 @prindex @code{mktime}
5192 @caindex func_working_mktime
5193 If the @code{mktime} function is not available, or does not work
5194 correctly, require an @code{AC_LIBOBJ} replacement for @samp{mktime}.
5195 For the purposes of this test, @code{mktime} should conform to the
5196 Posix standard and should be the inverse of
5197 @code{localtime}.
5199 The result of this macro is cached in the
5200 @code{ac_cv_func_working_mktime} variable.
5201 @end defmac
5203 @anchor{AC_FUNC_MMAP}
5204 @defmac AC_FUNC_MMAP
5205 @acindex{FUNC_MMAP}
5206 @cvindex HAVE_MMAP
5207 @c @fuindex mmap
5208 @prindex @code{mmap}
5209 @caindex func_mmap_fixed_mapped
5210 If the @code{mmap} function exists and works correctly, define
5211 @code{HAVE_MMAP}.  This checks only private fixed mapping of already-mapped
5212 memory.
5214 The result of this macro is cached in the
5215 @code{ac_cv_func_mmap_fixed_mapped} variable.
5216 @end defmac
5218 @defmac AC_FUNC_OBSTACK
5219 @acindex{FUNC_OBSTACK}
5220 @cvindex HAVE_OBSTACK
5221 @cindex obstack
5222 @caindex func_obstack
5223 If the obstacks are found, define @code{HAVE_OBSTACK}, else require an
5224 @code{AC_LIBOBJ} replacement for @samp{obstack}.
5226 The result of this macro is cached in the @code{ac_cv_func_obstack}
5227 variable.
5228 @end defmac
5230 @defmac AC_FUNC_REALLOC
5231 @acindex{FUNC_REALLOC}
5232 @cvindex HAVE_REALLOC
5233 @cvindex realloc
5234 @c @fuindex realloc
5235 @prindex @code{realloc}
5236 @caindex func_realloc_0_nonnull
5237 If the @code{realloc} function is compatible with the GNU C
5238 library @code{realloc} (i.e., @samp{realloc (NULL, 0)} returns a
5239 valid pointer), define @code{HAVE_REALLOC} to 1.  Otherwise define
5240 @code{HAVE_REALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
5241 @samp{realloc}, and define @code{realloc} to @code{rpl_realloc} so that
5242 the native @code{realloc} is not used in the main project.  See
5243 @code{AC_FUNC_MALLOC} for details.
5245 The result of this macro is cached in the
5246 @code{ac_cv_func_realloc_0_nonnull} variable.
5247 @end defmac
5249 @defmac AC_FUNC_SELECT_ARGTYPES
5250 @acindex{FUNC_SELECT_ARGTYPES}
5251 @cvindex SELECT_TYPE_ARG1
5252 @cvindex SELECT_TYPE_ARG234
5253 @cvindex SELECT_TYPE_ARG5
5254 @c @fuindex select
5255 @prindex @code{select}
5256 @c @caindex func_select_args
5257 Determines the correct type to be passed for each of the
5258 @code{select} function's arguments, and defines those types
5259 in @code{SELECT_TYPE_ARG1}, @code{SELECT_TYPE_ARG234}, and
5260 @code{SELECT_TYPE_ARG5} respectively.  @code{SELECT_TYPE_ARG1} defaults
5261 to @samp{int}, @code{SELECT_TYPE_ARG234} defaults to @samp{int *},
5262 and @code{SELECT_TYPE_ARG5} defaults to @samp{struct timeval *}.
5264 This macro is obsolescent, as current systems have a @code{select} whose
5265 signature conforms to Posix.  New programs need not use this macro.
5266 @end defmac
5268 @defmac AC_FUNC_SETPGRP
5269 @acindex{FUNC_SETPGRP}
5270 @cvindex SETPGRP_VOID
5271 @c @fuindex setpgrp
5272 @prindex @code{setpgrp}
5273 @caindex func_setpgrp_void
5274 If @code{setpgrp} takes no argument (the Posix version), define
5275 @code{SETPGRP_VOID}.  Otherwise, it is the BSD version, which takes
5276 two process IDs as arguments.  This macro does not check whether
5277 @code{setpgrp} exists at all; if you need to work in that situation,
5278 first call @code{AC_CHECK_FUNC} for @code{setpgrp}.
5280 The result of this macro is cached in the @code{ac_cv_func_setpgrp_void}
5281 variable.
5283 This macro is obsolescent, as current systems have a @code{setpgrp}
5284 whose signature conforms to Posix.  New programs need not use this macro.
5285 @end defmac
5287 @defmac AC_FUNC_STAT
5288 @defmacx AC_FUNC_LSTAT
5289 @acindex{FUNC_STAT}
5290 @acindex{FUNC_LSTAT}
5291 @cvindex HAVE_STAT_EMPTY_STRING_BUG
5292 @cvindex HAVE_LSTAT_EMPTY_STRING_BUG
5293 @c @fuindex stat
5294 @prindex @code{stat}
5295 @c @fuindex lstat
5296 @prindex @code{lstat}
5297 @caindex func_stat_empty_string_bug
5298 @caindex func_lstat_empty_string_bug
5299 Determine whether @code{stat} or @code{lstat} have the bug that it
5300 succeeds when given the zero-length file name as argument.  The @code{stat}
5301 and @code{lstat} from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do
5302 this.
5304 If it does, then define @code{HAVE_STAT_EMPTY_STRING_BUG} (or
5305 @code{HAVE_LSTAT_EMPTY_STRING_BUG}) and ask for an @code{AC_LIBOBJ}
5306 replacement of it.
5308 The results of these macros are cached in the
5309 @code{ac_cv_func_stat_empty_string_bug} and the
5310 @code{ac_cv_func_lstat_empty_string_bug} variables, respectively.
5312 These macros are obsolescent, as no current systems have the bug.
5313 New programs need not use these macros.
5314 @end defmac
5316 @anchor{AC_FUNC_STRCOLL}
5317 @defmac AC_FUNC_STRCOLL
5318 @acindex{FUNC_STRCOLL}
5319 @cvindex HAVE_STRCOLL
5320 @c @fuindex strcoll
5321 @prindex @code{strcoll}
5322 @caindex func_strcoll_works
5323 If the @code{strcoll} function exists and works correctly, define
5324 @code{HAVE_STRCOLL}.  This does a bit more than
5325 @samp{AC_CHECK_FUNCS(strcoll)}, because some systems have incorrect
5326 definitions of @code{strcoll} that should not be used.
5328 The result of this macro is cached in the @code{ac_cv_func_strcoll_works}
5329 variable.
5330 @end defmac
5332 @defmac AC_FUNC_STRERROR_R
5333 @acindex{FUNC_STRERROR_R}
5334 @cvindex HAVE_STRERROR_R
5335 @cvindex HAVE_DECL_STRERROR_R
5336 @cvindex STRERROR_R_CHAR_P
5337 @c @fuindex strerror_r
5338 @caindex func_strerror_r_char_p
5339 @prindex @code{strerror_r}
5340 If @code{strerror_r} is available, define @code{HAVE_STRERROR_R}, and if
5341 it is declared, define @code{HAVE_DECL_STRERROR_R}.  If it returns a
5342 @code{char *} message, define @code{STRERROR_R_CHAR_P}; otherwise it
5343 returns an @code{int} error number.  The Thread-Safe Functions option of
5344 Posix requires @code{strerror_r} to return @code{int}, but
5345 many systems (including, for example, version 2.2.4 of the GNU C
5346 Library) return a @code{char *} value that is not necessarily equal to
5347 the buffer argument.
5349 The result of this macro is cached in the
5350 @code{ac_cv_func_strerror_r_char_p} variable.
5351 @end defmac
5353 @anchor{AC_FUNC_STRFTIME}
5354 @defmac AC_FUNC_STRFTIME
5355 @acindex{FUNC_STRFTIME}
5356 @cvindex HAVE_STRFTIME
5357 @c @fuindex strftime
5358 @prindex @code{strftime}
5359 Check for @code{strftime} in the @file{intl} library, for SCO Unix.
5360 Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}.
5362 This macro is obsolescent, as no current systems require the @file{intl}
5363 library for @code{strftime}.  New programs need not use this macro.
5364 @end defmac
5366 @defmac AC_FUNC_STRTOD
5367 @acindex{FUNC_STRTOD}
5368 @ovindex POW_LIB
5369 @c @fuindex strtod
5370 @prindex @code{strtod}
5371 @caindex func_strtod
5372 @caindex func_pow
5373 If the @code{strtod} function does not exist or doesn't work correctly,
5374 ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}.  In this case,
5375 because @file{strtod.c} is likely to need @samp{pow}, set the output
5376 variable @code{POW_LIB} to the extra library needed.
5378 This macro caches its result in the @code{ac_cv_func_strtod} variable
5379 and depends upon the result in the @code{ac_cv_func_pow} variable.
5380 @end defmac
5382 @defmac AC_FUNC_STRTOLD
5383 @acindex{FUNC_STRTOLD}
5384 @cvindex HAVE_STRTOLD
5385 @prindex @code{strtold}
5386 @caindex func_strtold
5387 If the @code{strtold} function exists and conforms to C99, define
5388 @code{HAVE_STRTOLD}.
5390 This macro caches its result in the @code{ac_cv_func_strtold} variable.
5391 @end defmac
5393 @defmac AC_FUNC_STRNLEN
5394 @acindex{FUNC_STRNLEN}
5395 @cvindex HAVE_STRNLEN
5396 @c @fuindex strnlen
5397 @prindex @code{strnlen}
5398 @caindex func_strnlen_working
5399 If the @code{strnlen} function is not available, or is buggy (like the one
5400 from AIX 4.3), require an @code{AC_LIBOBJ} replacement for it.
5402 This macro caches its result in the @code{ac_cv_func_strnlen_working}
5403 variable.
5404 @end defmac
5406 @anchor{AC_FUNC_UTIME_NULL}
5407 @defmac AC_FUNC_UTIME_NULL
5408 @acindex{FUNC_UTIME_NULL}
5409 @cvindex HAVE_UTIME_NULL
5410 @c @fuindex utime
5411 @prindex @code{utime}
5412 @caindex func_utime_null
5413 If @samp{utime (@var{file}, NULL)} sets @var{file}'s timestamp to
5414 the present, define @code{HAVE_UTIME_NULL}.
5416 This macro caches its result in the @code{ac_cv_func_utime_null}
5417 variable.
5419 This macro is obsolescent, as all current systems have a @code{utime}
5420 that behaves this way.  New programs need not use this macro.
5421 @end defmac
5423 @anchor{AC_FUNC_VPRINTF}
5424 @defmac AC_FUNC_VPRINTF
5425 @acindex{FUNC_VPRINTF}
5426 @cvindex HAVE_VPRINTF
5427 @cvindex HAVE_DOPRNT
5428 @c @fuindex vprintf
5429 @prindex @code{vprintf}
5430 @c @fuindex vsprintf
5431 @prindex @code{vsprintf}
5432 If @code{vprintf} is found, define @code{HAVE_VPRINTF}.  Otherwise, if
5433 @code{_doprnt} is found, define @code{HAVE_DOPRNT}.  (If @code{vprintf}
5434 is available, you may assume that @code{vfprintf} and @code{vsprintf}
5435 are also available.)
5437 This macro is obsolescent, as all current systems have @code{vprintf}.
5438 New programs need not use this macro.
5439 @end defmac
5441 @defmac AC_REPLACE_FNMATCH
5442 @acindex{REPLACE_FNMATCH}
5443 @c @fuindex fnmatch
5444 @prindex @code{fnmatch}
5445 @hdrindex{fnmatch.h}
5446 @caindex func_fnmatch_works
5447 If the @code{fnmatch} function does not conform to Posix (see
5448 @code{AC_FUNC_FNMATCH}), ask for its @code{AC_LIBOBJ} replacement.
5450 The files @file{fnmatch.c}, @file{fnmatch_loop.c}, and @file{fnmatch_.h}
5451 in the @code{AC_LIBOBJ} replacement directory are assumed to contain a
5452 copy of the source code of GNU @code{fnmatch}.  If necessary,
5453 this source code is compiled as an @code{AC_LIBOBJ} replacement, and the
5454 @file{fnmatch_.h} file is linked to @file{fnmatch.h} so that it can be
5455 included in place of the system @code{<fnmatch.h>}.
5457 This macro caches its result in the @code{ac_cv_func_fnmatch_works}
5458 variable.
5460 This macro is obsolescent, as it assumes the use of particular source
5461 files.  New programs should use Gnulib's @code{fnmatch-posix} module,
5462 which provides this macro along with the source files.  @xref{Gnulib}.
5463 @end defmac
5467 @node Generic Functions
5468 @subsection Generic Function Checks
5470 These macros are used to find functions not covered by the ``particular''
5471 test macros.  If the functions might be in libraries other than the
5472 default C library, first call @code{AC_CHECK_LIB} for those libraries.
5473 If you need to check the behavior of a function as well as find out
5474 whether it is present, you have to write your own test for
5475 it (@pxref{Writing Tests}).
5477 @anchor{AC_CHECK_FUNC}
5478 @defmac AC_CHECK_FUNC (@var{function}, @ovar{action-if-found}, @
5479   @ovar{action-if-not-found})
5480 @acindex{CHECK_FUNC}
5481 @caindex func_@var{function}
5482 If C function @var{function} is available, run shell commands
5483 @var{action-if-found}, otherwise @var{action-if-not-found}.  If you just
5484 want to define a symbol if the function is available, consider using
5485 @code{AC_CHECK_FUNCS} instead.  This macro checks for functions with C
5486 linkage even when @code{AC_LANG(C++)} has been called, since C is more
5487 standardized than C++.  (@pxref{Language Choice}, for more information
5488 about selecting the language for checks.)
5490 This macro caches its result in the @code{ac_cv_func_@var{function}}
5491 variable.
5492 @end defmac
5494 @anchor{AC_CHECK_FUNCS}
5495 @defmac AC_CHECK_FUNCS (@var{function}@dots{}, @ovar{action-if-found}, @
5496   @ovar{action-if-not-found})
5497 @acindex{CHECK_FUNCS}
5498 @cvindex HAVE_@var{function}
5499 For each @var{function} enumerated in the blank-or-newline-separated argument
5500 list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
5501 If @var{action-if-found} is given, it is additional shell code to
5502 execute when one of the functions is found.  You can give it a value of
5503 @samp{break} to break out of the loop on the first match.  If
5504 @var{action-if-not-found} is given, it is executed when one of the
5505 functions is not found.
5507 Results are cached for each @var{function} as in @code{AC_CHECK_FUNC}.
5508 @end defmac
5510 @defmac AC_CHECK_FUNCS_ONCE (@var{function}@dots{})
5511 @acindex{CHECK_FUNCS_ONCE}
5512 @cvindex HAVE_@var{function}
5513 For each @var{function} enumerated in the blank-or-newline-separated argument
5514 list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
5515 This is a once-only variant of @code{AC_CHECK_FUNCS}.  It generates the
5516 checking code at most once, so that @command{configure} is smaller and
5517 faster; but the checks cannot be conditionalized and are always done once,
5518 early during the @command{configure} run.
5519 @end defmac
5521 @sp 1
5523 Autoconf follows a philosophy that was formed over the years by those
5524 who have struggled for portability: isolate the portability issues in
5525 specific files, and then program as if you were in a Posix
5526 environment.  Some functions may be missing or unfixable, and your
5527 package must be ready to replace them.
5529 Suitable replacements for many such problem functions are available from
5530 Gnulib (@pxref{Gnulib}).
5532 @defmac AC_LIBOBJ (@var{function})
5533 @acindex{LIBOBJ}
5534 @ovindex LIBOBJS
5535 Specify that @samp{@var{function}.c} must be included in the executables
5536 to replace a missing or broken implementation of @var{function}.
5538 Technically, it adds @samp{@var{function}.$ac_objext} to the output
5539 variable @code{LIBOBJS} if it is not already in, and calls
5540 @code{AC_LIBSOURCE} for @samp{@var{function}.c}.  You should not
5541 directly change @code{LIBOBJS}, since this is not traceable.
5542 @end defmac
5544 @defmac AC_LIBSOURCE (@var{file})
5545 @acindex{LIBSOURCE}
5546 Specify that @var{file} might be needed to compile the project.  If you
5547 need to know what files might be needed by a @file{configure.ac}, you
5548 should trace @code{AC_LIBSOURCE}.  @var{file} must be a literal.
5550 This macro is called automatically from @code{AC_LIBOBJ}, but you must
5551 call it explicitly if you pass a shell variable to @code{AC_LIBOBJ}.  In
5552 that case, since shell variables cannot be traced statically, you must
5553 pass to @code{AC_LIBSOURCE} any possible files that the shell variable
5554 might cause @code{AC_LIBOBJ} to need.  For example, if you want to pass
5555 a variable @code{$foo_or_bar} to @code{AC_LIBOBJ} that holds either
5556 @code{"foo"} or @code{"bar"}, you should do:
5558 @example
5559 AC_LIBSOURCE([foo.c])
5560 AC_LIBSOURCE([bar.c])
5561 AC_LIBOBJ([$foo_or_bar])
5562 @end example
5564 @noindent
5565 There is usually a way to avoid this, however, and you are encouraged to
5566 simply call @code{AC_LIBOBJ} with literal arguments.
5568 Note that this macro replaces the obsolete @code{AC_LIBOBJ_DECL}, with
5569 slightly different semantics: the old macro took the function name,
5570 e.g., @code{foo}, as its argument rather than the file name.
5571 @end defmac
5573 @defmac AC_LIBSOURCES (@var{files})
5574 @acindex{LIBSOURCES}
5575 Like @code{AC_LIBSOURCE}, but accepts one or more @var{files} in a
5576 comma-separated M4 list.  Thus, the above example might be rewritten:
5578 @example
5579 AC_LIBSOURCES([foo.c, bar.c])
5580 AC_LIBOBJ([$foo_or_bar])
5581 @end example
5582 @end defmac
5584 @defmac AC_CONFIG_LIBOBJ_DIR (@var{directory})
5585 @acindex{CONFIG_LIBOBJ_DIR}
5586 Specify that @code{AC_LIBOBJ} replacement files are to be found in
5587 @var{directory}, a name relative to the top level of the
5588 source tree.  The replacement directory defaults to @file{.}, the top
5589 level directory, and the most typical value is @file{lib}, corresponding
5590 to @samp{AC_CONFIG_LIBOBJ_DIR([lib])}.
5592 @command{configure} might need to know the replacement directory for the
5593 following reasons: (i) some checks use the replacement files, (ii) some
5594 macros bypass broken system headers by installing links to the
5595 replacement headers (iii) when used in conjunction with Automake,
5596 within each makefile, @var{directory} is used as a relative path
5597 from @code{$(top_srcdir)} to each object named in @code{LIBOBJS} and
5598 @code{LTLIBOBJS}, etc.
5599 @end defmac
5601 @sp 1
5603 It is common to merely check for the existence of a function, and ask
5604 for its @code{AC_LIBOBJ} replacement if missing.  The following macro is
5605 a convenient shorthand.
5607 @defmac AC_REPLACE_FUNCS (@var{function}@dots{})
5608 @acindex{REPLACE_FUNCS}
5609 @cvindex HAVE_@var{function}
5610 @ovindex LIBOBJS
5611 Like @code{AC_CHECK_FUNCS}, but uses @samp{AC_LIBOBJ(@var{function})} as
5612 @var{action-if-not-found}.  You can declare your replacement function by
5613 enclosing the prototype in @samp{#ifndef HAVE_@var{function}}.  If the
5614 system has the function, it probably declares it in a header file you
5615 should be including, so you shouldn't redeclare it lest your declaration
5616 conflict.
5617 @end defmac
5619 @node Header Files
5620 @section Header Files
5621 @cindex Header, checking
5623 The following macros check for the presence of certain C header files.
5624 If there is no macro specifically defined to check for a header file you need,
5625 and you don't need to check for any special properties of
5626 it, then you can use one of the general header-file check macros.
5628 @menu
5629 * Header Portability::          Collected knowledge on common headers
5630 * Particular Headers::          Special handling to find certain headers
5631 * Generic Headers::             How to find other headers
5632 @end menu
5634 @node Header Portability
5635 @subsection Portability of Headers
5636 @cindex Portability of headers
5637 @cindex Header portability
5639 This section tries to collect knowledge about common headers, and the
5640 problems they cause.  By definition, this list always requires
5641 additions.  Please help us keeping it as complete as possible.
5643 @table @asis
5645 @item @file{limits.h}
5646 C99 says that @file{limits.h} defines @code{LLONG_MIN},
5647 @code{LLONG_MAX}, and @code{ULLONG_MAX}, but many almost-C99
5648 environments (e.g., default GCC 4.0.2 + glibc 2.4) do not
5649 define them.
5651 @item @file{inttypes.h} vs.@: @file{stdint.h}
5652 @hdrindex{inttypes.h}
5653 @hdrindex{stdint.h}
5654 The C99 standard says that @file{inttypes.h} includes
5655 @file{stdint.h}, so there's no need to include @file{stdint.h}
5656 separately in a standard environment.  Some implementations have
5657 @file{inttypes.h} but not @file{stdint.h} (e.g., Solaris 7), but we don't
5658 know of any implementation that has @file{stdint.h} but not
5659 @file{inttypes.h}.
5661 @item @file{linux/irda.h}
5662 @hdrindex{linux/irda.h}
5663 It requires @file{linux/types.h} and @file{sys/socket.h}.
5665 @item @file{linux/random.h}
5666 @hdrindex{linux/random.h}
5667 It requires @file{linux/types.h}.
5669 @item @file{net/if.h}
5670 @hdrindex{net/if.h}
5671 On Darwin, this file requires that @file{sys/socket.h} be included
5672 beforehand.  One should run:
5674 @example
5675 AC_CHECK_HEADERS([sys/socket.h])
5676 AC_CHECK_HEADERS([net/if.h], [], [],
5677 [#include <stdio.h>
5678 #ifdef STDC_HEADERS
5679 # include <stdlib.h>
5680 # include <stddef.h>
5681 #else
5682 # ifdef HAVE_STDLIB_H
5683 #  include <stdlib.h>
5684 # endif
5685 #endif
5686 #ifdef HAVE_SYS_SOCKET_H
5687 # include <sys/socket.h>
5688 #endif
5690 @end example
5692 @item @file{netinet/if_ether.h}
5693 @hdrindex{netinet/if_ether.h}
5694 On Darwin, this file requires that @file{stdio.h} and
5695 @file{sys/socket.h} be included beforehand.  One should run:
5697 @example
5698 AC_CHECK_HEADERS([sys/socket.h])
5699 AC_CHECK_HEADERS([netinet/if_ether.h], [], [],
5700 [#include <stdio.h>
5701 #ifdef STDC_HEADERS
5702 # include <stdlib.h>
5703 # include <stddef.h>
5704 #else
5705 # ifdef HAVE_STDLIB_H
5706 #  include <stdlib.h>
5707 # endif
5708 #endif
5709 #ifdef HAVE_SYS_SOCKET_H
5710 # include <sys/socket.h>
5711 #endif
5713 @end example
5715 @item @file{stdint.h}
5716 See above, item @file{inttypes.h} vs.@: @file{stdint.h}.
5718 @item @file{stdlib.h}
5719 @hdrindex{stdlib.h}
5720 On many systems (e.g., Darwin), @file{stdio.h} is a prerequisite.
5722 @item @file{sys/mount.h}
5723 @hdrindex{sys/mount.h}
5724 On FreeBSD 4.8 on ia32 and using gcc version 2.95.4,
5725 @file{sys/params.h} is a prerequisite.
5727 @item @file{sys/ptem.h}
5728 @hdrindex{sys/ptem.h}
5729 On Solaris 8, @file{sys/stream.h} is a prerequisite.
5731 @item @file{sys/socket.h}
5732 @hdrindex{sys/socket.h}
5733 On Darwin, @file{stdlib.h} is a prerequisite.
5735 @item @file{sys/ucred.h}
5736 @hdrindex{sys/ucred.h}
5737 On Tru64 5.1, @file{sys/types.h} is a prerequisite.
5739 @item @file{X11/extensions/scrnsaver.h}
5740 @hdrindex{X11/extensions/scrnsaver.h}
5741 Using XFree86, this header requires @file{X11/Xlib.h}, which is probably
5742 so required that you might not even consider looking for it.
5744 @example
5745 AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], [], [],
5746 [[#include <X11/Xlib.h>
5748 @end example
5749 @end table
5752 @node Particular Headers
5753 @subsection Particular Header Checks
5755 These macros check for particular system header files---whether they
5756 exist, and in some cases whether they declare certain symbols.
5758 @defmac AC_HEADER_ASSERT
5759 @acindex{HEADER_ASSERT}
5760 @cvindex NDEBUG
5761 @hdrindex{assert.h}
5762 Check whether to enable assertions in the style of @file{assert.h}.
5763 Assertions are enabled by default, but the user can override this by
5764 invoking @command{configure} with the @option{--disable-assert} option.
5765 @end defmac
5767 @anchor{AC_HEADER_DIRENT}
5768 @defmac AC_HEADER_DIRENT
5769 @acindex{HEADER_DIRENT}
5770 @cvindex HAVE_DIRENT_H
5771 @cvindex HAVE_NDIR_H
5772 @cvindex HAVE_SYS_DIR_H
5773 @cvindex HAVE_SYS_NDIR_H
5774 @hdrindex{dirent.h}
5775 @hdrindex{sys/ndir.h}
5776 @hdrindex{sys/dir.h}
5777 @hdrindex{ndir.h}
5778 Check for the following header files.  For the first one that is
5779 found and defines @samp{DIR}, define the listed C preprocessor macro:
5781 @multitable {@file{sys/ndir.h}} {@code{HAVE_SYS_NDIR_H}}
5782 @item @file{dirent.h}   @tab @code{HAVE_DIRENT_H}
5783 @item @file{sys/ndir.h} @tab @code{HAVE_SYS_NDIR_H}
5784 @item @file{sys/dir.h}  @tab @code{HAVE_SYS_DIR_H}
5785 @item @file{ndir.h}     @tab @code{HAVE_NDIR_H}
5786 @end multitable
5788 The directory-library declarations in your source code should look
5789 something like the following:
5791 @example
5792 @group
5793 #include <sys/types.h>
5794 #ifdef HAVE_DIRENT_H
5795 # include <dirent.h>
5796 # define NAMLEN(dirent) strlen ((dirent)->d_name)
5797 #else
5798 # define dirent direct
5799 # define NAMLEN(dirent) ((dirent)->d_namlen)
5800 # ifdef HAVE_SYS_NDIR_H
5801 #  include <sys/ndir.h>
5802 # endif
5803 # ifdef HAVE_SYS_DIR_H
5804 #  include <sys/dir.h>
5805 # endif
5806 # ifdef HAVE_NDIR_H
5807 #  include <ndir.h>
5808 # endif
5809 #endif
5810 @end group
5811 @end example
5813 Using the above declarations, the program would declare variables to be
5814 of type @code{struct dirent}, not @code{struct direct}, and would access
5815 the length of a directory entry name by passing a pointer to a
5816 @code{struct dirent} to the @code{NAMLEN} macro.
5818 This macro also checks for the SCO Xenix @file{dir} and @file{x} libraries.
5820 This macro is obsolescent, as all current systems with directory
5821 libraries have @code{<dirent.h>}.  New programs need not use this macro.
5823 Also see @code{AC_STRUCT_DIRENT_D_INO} and
5824 @code{AC_STRUCT_DIRENT_D_TYPE} (@pxref{Particular Structures}).
5825 @end defmac
5827 @anchor{AC_HEADER_MAJOR}
5828 @defmac AC_HEADER_MAJOR
5829 @acindex{HEADER_MAJOR}
5830 @cvindex MAJOR_IN_MKDEV
5831 @cvindex MAJOR_IN_SYSMACROS
5832 @hdrindex{sys/mkdev.h}
5833 @hdrindex{sys/sysmacros.h}
5834 If @file{sys/types.h} does not define @code{major}, @code{minor}, and
5835 @code{makedev}, but @file{sys/mkdev.h} does, define
5836 @code{MAJOR_IN_MKDEV}; otherwise, if @file{sys/sysmacros.h} does, define
5837 @code{MAJOR_IN_SYSMACROS}.
5838 @end defmac
5840 @defmac AC_HEADER_RESOLV
5841 @acindex{HEADER_RESOLV}
5842 @cvindex HAVE_RESOLV_H
5843 @hdrindex{resolv.h}
5844 Checks for header @file{resolv.h}, checking for prerequisites first.
5845 To properly use @file{resolv.h}, your code should contain something like
5846 the following:
5848 @verbatim
5849 #ifdef HAVE_SYS_TYPES_H
5850 #  include <sys/types.h>
5851 #endif
5852 #ifdef HAVE_NETINET_IN_H
5853 #  include <netinet/in.h>   /* inet_ functions / structs */
5854 #endif
5855 #ifdef HAVE_ARPA_NAMESER_H
5856 #  include <arpa/nameser.h> /* DNS HEADER struct */
5857 #endif
5858 #ifdef HAVE_NETDB_H
5859 #  include <netdb.h>
5860 #endif
5861 #include <resolv.h>
5862 @end verbatim
5863 @end defmac
5865 @anchor{AC_HEADER_STAT}
5866 @defmac AC_HEADER_STAT
5867 @acindex{HEADER_STAT}
5868 @cvindex STAT_MACROS_BROKEN
5869 @hdrindex{sys/stat.h}
5870 If the macros @code{S_ISDIR}, @code{S_ISREG}, etc.@: defined in
5871 @file{sys/stat.h} do not work properly (returning false positives),
5872 define @code{STAT_MACROS_BROKEN}.  This is the case on Tektronix UTekV,
5873 Amdahl UTS and Motorola System V/88.
5875 This macro is obsolescent, as no current systems have the bug.
5876 New programs need not use this macro.
5877 @end defmac
5879 @defmac AC_HEADER_STDBOOL
5880 @acindex{HEADER_STDBOOL}
5881 @cvindex HAVE_STDBOOL_H
5882 @cvindex HAVE__BOOL
5883 @hdrindex{stdbool.h}
5884 @hdrindex{system.h}
5885 @caindex header_stdbool_h
5886 If @file{stdbool.h} exists and conforms to C99, define
5887 @code{HAVE_STDBOOL_H} to 1; if the type @code{_Bool} is defined, define
5888 @code{HAVE__BOOL} to 1.  To fulfill the C99 requirements, your
5889 @file{system.h} could contain the following code:
5891 @verbatim
5892 #ifdef HAVE_STDBOOL_H
5893 # include <stdbool.h>
5894 #else
5895 # ifndef HAVE__BOOL
5896 #  ifdef __cplusplus
5897 typedef bool _Bool;
5898 #  else
5899 #   define _Bool signed char
5900 #  endif
5901 # endif
5902 # define bool _Bool
5903 # define false 0
5904 # define true 1
5905 # define __bool_true_false_are_defined 1
5906 #endif
5907 @end verbatim
5909 Alternatively you can use the @samp{stdbool} package of Gnulib
5910 (@pxref{Gnulib}); it packages the above code into a replacement header
5911 and contains a few other bells and whistles.
5913 This macro caches its result in the @code{ac_cv_header_stdbool_h}
5914 variable.
5915 @end defmac
5917 @anchor{AC_HEADER_STDC}
5918 @defmac AC_HEADER_STDC
5919 @acindex{HEADER_STDC}
5920 @cvindex STDC_HEADERS
5921 @hdrindex{stdlib.h}
5922 @hdrindex{stdarg.h}
5923 @hdrindex{string.h}
5924 @hdrindex{float.h}
5925 @hdrindex{ctype.h}
5926 @caindex header_stdc
5927 Define @code{STDC_HEADERS} if the system has C header files
5928 conforming to ANSI C89 (ISO C90).
5929 Specifically, this macro checks for @file{stdlib.h}, @file{stdarg.h},
5930 @file{string.h}, and @file{float.h}; if the system has those, it
5931 probably has the rest of the C89 header files.  This macro also
5932 checks whether @file{string.h} declares @code{memchr} (and thus
5933 presumably the other @code{mem} functions), whether @file{stdlib.h}
5934 declare @code{free} (and thus presumably @code{malloc} and other related
5935 functions), and whether the @file{ctype.h} macros work on characters
5936 with the high bit set, as the C standard requires.
5938 If you use this macro, your code can refer to @code{STDC_HEADERS} to
5939 determine whether the system has conforming header files (and probably C
5940 library functions).
5942 This macro caches its result in the @code{ac_cv_header_stdc} variable.
5944 This macro is obsolescent, as current systems have conforming header
5945 files.  New programs need not use this macro.
5947 @hdrindex{string.h}
5948 @hdrindex{strings.h}
5949 Nowadays @file{string.h} is part of the C standard and declares functions like
5950 @code{strcpy}, and @file{strings.h} is standardized by Posix and declares
5951 BSD functions like @code{bcopy}; but
5952 historically, string functions were a major sticking point in this area.
5953 If you still want to worry about portability to ancient systems without
5954 standard headers, there is so much variation
5955 that it is probably easier to declare the functions you use than to
5956 figure out exactly what the system header files declare.  Some ancient systems
5957 contained a mix of functions from the C standard and from BSD;
5958 some were mostly standard but lacked @samp{memmove}; some defined the
5959 BSD functions as macros in @file{string.h} or
5960 @file{strings.h}; some had only the BSD functions but
5961 @file{string.h}; some declared the memory functions in @file{memory.h},
5962 some in @file{string.h}; etc.  It is probably sufficient to check for
5963 one string function and one memory function; if the library had the
5964 standard versions of those then it probably had most of the others.
5965 If you put the following in @file{configure.ac}:
5967 @example
5968 # This example is obsolescent.
5969 # Nowadays you can omit these macro calls.
5970 AC_HEADER_STDC
5971 AC_CHECK_FUNCS([strchr memcpy])
5972 @end example
5974 @noindent
5975 then, in your code, you can use declarations like this:
5977 @example
5978 @group
5979 /* This example is obsolescent.
5980    Nowadays you can just #include <string.h>.  */
5981 #ifdef STDC_HEADERS
5982 # include <string.h>
5983 #else
5984 # ifndef HAVE_STRCHR
5985 #  define strchr index
5986 #  define strrchr rindex
5987 # endif
5988 char *strchr (), *strrchr ();
5989 # ifndef HAVE_MEMCPY
5990 #  define memcpy(d, s, n) bcopy ((s), (d), (n))
5991 #  define memmove(d, s, n) bcopy ((s), (d), (n))
5992 # endif
5993 #endif
5994 @end group
5995 @end example
5997 @noindent
5998 If you use a function like @code{memchr}, @code{memset}, @code{strtok},
5999 or @code{strspn}, which have no BSD equivalent, then macros don't
6000 suffice to port to ancient hosts; you must provide an implementation of
6001 each function.  An easy
6002 way to incorporate your implementations only when needed (since the ones
6003 in system C libraries may be hand optimized) is to, taking @code{memchr}
6004 for example, put it in @file{memchr.c} and use
6005 @samp{AC_REPLACE_FUNCS([memchr])}.
6006 @end defmac
6008 @defmac AC_HEADER_SYS_WAIT
6009 @acindex{HEADER_SYS_WAIT}
6010 @cvindex HAVE_SYS_WAIT_H
6011 @hdrindex{sys/wait.h}
6012 @caindex header_sys_wait_h
6013 If @file{sys/wait.h} exists and is compatible with Posix, define
6014 @code{HAVE_SYS_WAIT_H}.  Incompatibility can occur if @file{sys/wait.h}
6015 does not exist, or if it uses the old BSD @code{union wait} instead
6016 of @code{int} to store a status value.  If @file{sys/wait.h} is not
6017 Posix compatible, then instead of including it, define the
6018 Posix macros with their usual interpretations.  Here is an
6019 example:
6021 @example
6022 @group
6023 #include <sys/types.h>
6024 #ifdef HAVE_SYS_WAIT_H
6025 # include <sys/wait.h>
6026 #endif
6027 #ifndef WEXITSTATUS
6028 # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
6029 #endif
6030 #ifndef WIFEXITED
6031 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
6032 #endif
6033 @end group
6034 @end example
6036 @noindent
6037 This macro caches its result in the @code{ac_cv_header_sys_wait_h}
6038 variable.
6040 This macro is obsolescent, as current systems are compatible with Posix.
6041 New programs need not use this macro.
6042 @end defmac
6044 @cvindex _POSIX_VERSION
6045 @hdrindex{unistd.h}
6046 @code{_POSIX_VERSION} is defined when @file{unistd.h} is included on
6047 Posix systems.  If there is no @file{unistd.h}, it is definitely
6048 not a Posix system.  However, some non-Posix systems do
6049 have @file{unistd.h}.
6051 The way to check whether the system supports Posix is:
6053 @example
6054 @group
6055 #ifdef HAVE_UNISTD_H
6056 # include <sys/types.h>
6057 # include <unistd.h>
6058 #endif
6060 #ifdef _POSIX_VERSION
6061 /* Code for Posix systems.  */
6062 #endif
6063 @end group
6064 @end example
6066 @anchor{AC_HEADER_TIME}
6067 @defmac AC_HEADER_TIME
6068 @acindex{HEADER_TIME}
6069 @cvindex TIME_WITH_SYS_TIME
6070 @hdrindex{time.h}
6071 @hdrindex{sys/time.h}
6072 @caindex header_time
6073 If a program may include both @file{time.h} and @file{sys/time.h},
6074 define @code{TIME_WITH_SYS_TIME}.  On some ancient systems,
6075 @file{sys/time.h} included @file{time.h}, but @file{time.h} was not
6076 protected against multiple inclusion, so programs could not explicitly
6077 include both files.  This macro is useful in programs that use, for
6078 example, @code{struct timeval} as well as
6079 @code{struct tm}.  It is best used in conjunction with
6080 @code{HAVE_SYS_TIME_H}, which can be checked for using
6081 @code{AC_CHECK_HEADERS([sys/time.h])}.
6083 @example
6084 @group
6085 #ifdef TIME_WITH_SYS_TIME
6086 # include <sys/time.h>
6087 # include <time.h>
6088 #else
6089 # ifdef HAVE_SYS_TIME_H
6090 #  include <sys/time.h>
6091 # else
6092 #  include <time.h>
6093 # endif
6094 #endif
6095 @end group
6096 @end example
6098 @noindent
6099 This macro caches its result in the @code{ac_cv_header_time} variable.
6101 This macro is obsolescent, as current systems can include both files
6102 when they exist.  New programs need not use this macro.
6103 @end defmac
6106 @defmac AC_HEADER_TIOCGWINSZ
6107 @acindex{HEADER_TIOCGWINSZ}
6108 @cvindex GWINSZ_IN_SYS_IOCTL
6109 @hdrindex{sys/ioctl.h}
6110 @hdrindex{termios.h}
6111 @c FIXME: I need clarifications from Jim.
6112 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
6113 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
6114 found in @file{<termios.h>}.
6116 Use:
6118 @example
6119 @group
6120 #ifdef HAVE_TERMIOS_H
6121 # include <termios.h>
6122 #endif
6124 #ifdef GWINSZ_IN_SYS_IOCTL
6125 # include <sys/ioctl.h>
6126 #endif
6127 @end group
6128 @end example
6129 @end defmac
6131 @node Generic Headers
6132 @subsection Generic Header Checks
6134 These macros are used to find system header files not covered by the
6135 ``particular'' test macros.  If you need to check the contents of a header
6136 as well as find out whether it is present, you have to write your own
6137 test for it (@pxref{Writing Tests}).
6139 @anchor{AC_CHECK_HEADER}
6140 @defmac AC_CHECK_HEADER (@var{header-file}, @ovar{action-if-found}, @
6141   @ovar{action-if-not-found}, @ovar{includes})
6142 @acindex{CHECK_HEADER}
6143 @caindex header_@var{header-file}
6144 If the system header file @var{header-file} is compilable, execute shell
6145 commands @var{action-if-found}, otherwise execute
6146 @var{action-if-not-found}.  If you just want to define a symbol if the
6147 header file is available, consider using @code{AC_CHECK_HEADERS}
6148 instead.
6150 @var{includes} is decoded to determine the appropriate include
6151 directives.  If omitted or empty, @file{configure} will check for both header
6152 existence (with the preprocessor) and usability (with the compiler),
6153 using @code{AC_INCLUDES_DEFAULT} for the compile test.  If
6154 there is a discrepancy between the results, a warning is issued to the
6155 user, and the compiler results are favored (@pxref{Present But
6156 Cannot Be Compiled}).  In general, favoring the compiler results means
6157 that a header will be treated as not found even though the file exists,
6158 because you did not provide enough prerequisites.
6160 Providing a non-empty @var{includes} argument allows the code to provide
6161 any prerequisites prior to including the header under test; it is common
6162 to use the argument @code{AC_INCLUDES_DEFAULT} (@pxref{Default
6163 Includes}).  With an explicit fourth argument, no preprocessor test is
6164 needed.  As a special case, an @var{includes} of exactly @samp{-}
6165 triggers the older preprocessor check, which merely determines existence
6166 of the file in the preprocessor search path; this should only be used as
6167 a last resort (it is safer to determine the actual prerequisites and
6168 perform a compiler check, or else use @code{AC_PREPROC_IFELSE} to make
6169 it obvious that only a preprocessor check is desired).
6171 This macro caches its result in the @code{ac_cv_header_@var{header-file}}
6172 variable, with characters not suitable for a variable name mapped to
6173 underscores.
6174 @end defmac
6176 @anchor{AC_CHECK_HEADERS}
6177 @defmac AC_CHECK_HEADERS (@var{header-file}@dots{}, @
6178   @ovar{action-if-found}, @ovar{action-if-not-found}, @
6179   @ovar{includes})
6180 @acindex{CHECK_HEADERS}
6181 @cvindex HAVE_@var{header}
6182 @caindex header_@var{header-file}
6183 For each given system header file @var{header-file} in the
6184 blank-separated argument list that exists, define
6185 @code{HAVE_@var{header-file}} (in all capitals).  If @var{action-if-found}
6186 is given, it is additional shell code to execute when one of the header
6187 files is found.  You can give it a value of @samp{break} to break out of
6188 the loop on the first match.  If @var{action-if-not-found} is given, it
6189 is executed when one of the header files is not found.
6191 @var{includes} is interpreted as in @code{AC_CHECK_HEADER}, in order to
6192 choose the set of preprocessor directives supplied before the header
6193 under test.
6195 This macro caches its result in the @code{ac_cv_header_@var{header-file}}
6196 variable, with characters not suitable for a variable name mapped to
6197 underscores.
6198 @end defmac
6200 Previous versions of Autoconf merely checked whether the header was
6201 accepted by the preprocessor.  This was changed because the old test was
6202 inappropriate for typical uses.  Headers are typically used to compile,
6203 not merely to preprocess, and the old behavior sometimes accepted
6204 headers that clashed at compile-time (@pxref{Present But Cannot Be
6205 Compiled}).  If you need to check whether a header is preprocessable,
6206 you can use @code{AC_PREPROC_IFELSE} (@pxref{Running the Preprocessor}).
6208 Actually requiring a header to compile improves the robustness of the
6209 test, but it also requires
6210 that you make sure that headers that must be included before the
6211 @var{header-file} be part of the @var{includes}, (@pxref{Default
6212 Includes}).  If looking for @file{bar.h}, which requires that
6213 @file{foo.h} be included before if it exists, we suggest the following
6214 scheme:
6216 @verbatim
6217 AC_CHECK_HEADERS([foo.h])
6218 AC_CHECK_HEADERS([bar.h], [], [],
6219 [#ifdef HAVE_FOO_H
6220 # include <foo.h>
6221 #endif
6223 @end verbatim
6225 The following variant generates smaller, faster @command{configure}
6226 files if you do not need the full power of @code{AC_CHECK_HEADERS}.
6228 @defmac AC_CHECK_HEADERS_ONCE (@var{header-file}@dots{})
6229 @acindex{CHECK_HEADERS_ONCE}
6230 @cvindex HAVE_@var{header}
6231 For each given system header file @var{header-file} in the
6232 blank-separated argument list that exists, define
6233 @code{HAVE_@var{header-file}} (in all capitals).
6234 This is a once-only variant of @code{AC_CHECK_HEADERS}.  It generates the
6235 checking code at most once, so that @command{configure} is smaller and
6236 faster; but the checks cannot be conditionalized and are always done once,
6237 early during the @command{configure} run.  Thus, this macro is only safe
6238 for checking headers that do not have prerequisites beyond what
6239 @code{AC_INCLUDES_DEFAULT} provides.
6240 @end defmac
6242 @node Declarations
6243 @section Declarations
6244 @cindex Declaration, checking
6246 The following macros check for the declaration of variables and
6247 functions.  If there is no macro specifically defined to check for a
6248 symbol you need, then you can use the general macros (@pxref{Generic
6249 Declarations}) or, for more complex tests, you may use
6250 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
6252 @menu
6253 * Particular Declarations::     Macros to check for certain declarations
6254 * Generic Declarations::        How to find other declarations
6255 @end menu
6257 @node Particular Declarations
6258 @subsection Particular Declaration Checks
6260 There are no specific macros for declarations.
6262 @node Generic Declarations
6263 @subsection Generic Declaration Checks
6265 These macros are used to find declarations not covered by the ``particular''
6266 test macros.
6268 @defmac AC_CHECK_DECL (@var{symbol}, @ovar{action-if-found}, @
6269   @ovar{action-if-not-found}, @dvar{includes, AC_INCLUDES_DEFAULT})
6270 @acindex{CHECK_DECL}
6271 @caindex have_decl_@var{symbol}
6272 If @var{symbol} (a function, variable, or constant) is not declared in
6273 @var{includes} and a declaration is needed, run the shell commands
6274 @var{action-if-not-found}, otherwise @var{action-if-found}.
6275 @var{includes} is a series of include directives, defaulting to
6276 @code{AC_INCLUDES_DEFAULT} (@pxref{Default Includes}), which are used
6277 prior to the declaration under test.
6279 This macro actually tests whether @var{symbol} is defined as a macro or
6280 can be used as an r-value, not whether it is really declared, because it
6281 is much safer to avoid introducing extra declarations when they are not
6282 needed.  In order to facilitate use of C++ and overloaded function
6283 declarations, it is possible to specify function argument types in
6284 parentheses for types which can be zero-initialized:
6286 @example
6287 AC_CHECK_DECL([basename(char *)])
6288 @end example
6290 This macro caches its result in the @code{ac_cv_have_decl_@var{symbol}}
6291 variable, with characters not suitable for a variable name mapped to
6292 underscores.
6293 @end defmac
6295 @anchor{AC_CHECK_DECLS}
6296 @defmac AC_CHECK_DECLS (@var{symbols}, @ovar{action-if-found}, @
6297   @ovar{action-if-not-found}, @dvar{includes, AC_INCLUDES_DEFAULT})
6298 @acindex{CHECK_DECLS}
6299 @cvindex HAVE_DECL_@var{symbol}
6300 @caindex have_decl_@var{symbol}
6301 For each of the @var{symbols} (@emph{comma}-separated list with optional
6302 function argument types for C++ overloads), define
6303 @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
6304 @var{symbol} is declared, otherwise to @samp{0}.  If
6305 @var{action-if-not-found} is given, it is additional shell code to
6306 execute when one of the function declarations is needed, otherwise
6307 @var{action-if-found} is executed.
6309 @var{includes} is a series of include directives, defaulting to
6310 @code{AC_INCLUDES_DEFAULT} (@pxref{Default Includes}), which are used
6311 prior to the declarations under test.
6313 This macro uses an M4 list as first argument:
6314 @example
6315 AC_CHECK_DECLS([strdup])
6316 AC_CHECK_DECLS([strlen])
6317 AC_CHECK_DECLS([malloc, realloc, calloc, free])
6318 AC_CHECK_DECLS([j0], [], [], [[#include <math.h>]])
6319 AC_CHECK_DECLS([[basename(char *)], [dirname(char *)]])
6320 @end example
6322 Unlike the other @samp{AC_CHECK_*S} macros, when a @var{symbol} is not
6323 declared, @code{HAVE_DECL_@var{symbol}} is defined to @samp{0} instead
6324 of leaving @code{HAVE_DECL_@var{symbol}} undeclared.  When you are
6325 @emph{sure} that the check was performed, use
6326 @code{HAVE_DECL_@var{symbol}} in @code{#if}:
6328 @example
6329 #if !HAVE_DECL_SYMBOL
6330 extern char *symbol;
6331 #endif
6332 @end example
6334 @noindent
6335 If the test may have not been performed, however, because it is safer
6336 @emph{not} to declare a symbol than to use a declaration that conflicts
6337 with the system's one, you should use:
6339 @example
6340 #if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC
6341 void *malloc (size_t *s);
6342 #endif
6343 @end example
6345 @noindent
6346 You fall into the second category only in extreme situations: either
6347 your files may be used without being configured, or they are used during
6348 the configuration.  In most cases the traditional approach is enough.
6350 This macro caches its results in @code{ac_cv_have_decl_@var{symbol}}
6351 variables, with characters not suitable for a variable name mapped to
6352 underscores.
6353 @end defmac
6355 @defmac AC_CHECK_DECLS_ONCE (@var{symbols})
6356 @acindex{CHECK_DECLS_ONCE}
6357 @cvindex HAVE_DECL_@var{symbol}
6358 For each of the @var{symbols} (@emph{comma}-separated list), define
6359 @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
6360 @var{symbol} is declared in the default include files, otherwise to
6361 @samp{0}.  This is a once-only variant of @code{AC_CHECK_DECLS}.  It
6362 generates the checking code at most once, so that @command{configure} is
6363 smaller and faster; but the checks cannot be conditionalized and are
6364 always done once, early during the @command{configure} run.
6365 @end defmac
6368 @node Structures
6369 @section Structures
6370 @cindex Structure, checking
6372 The following macros check for the presence of certain members in C
6373 structures.  If there is no macro specifically defined to check for a
6374 member you need, then you can use the general structure-member macros
6375 (@pxref{Generic Structures}) or, for more complex tests, you may use
6376 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
6378 @menu
6379 * Particular Structures::       Macros to check for certain structure members
6380 * Generic Structures::          How to find other structure members
6381 @end menu
6383 @node Particular Structures
6384 @subsection Particular Structure Checks
6386 The following macros check for certain structures or structure members.
6388 @defmac AC_STRUCT_DIRENT_D_INO
6389 @acindex{STRUCT_DIRENT_D_INO}
6390 @cvindex HAVE_STRUCT_DIRENT_D_INO
6391 @c @caindex header_dirent_dirent_h
6392 @c @caindex member_struct_dirent_d_ino
6393 Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
6394 Headers}).  Then, if @code{struct dirent} contains a @code{d_ino}
6395 member, define @code{HAVE_STRUCT_DIRENT_D_INO}.
6397 @code{HAVE_STRUCT_DIRENT_D_INO} indicates only the presence of
6398 @code{d_ino}, not whether its contents are always reliable.
6399 Traditionally, a zero @code{d_ino} indicated a deleted directory entry,
6400 though current systems hide this detail from the user and never return
6401 zero @code{d_ino} values.
6402 Many current systems report an incorrect @code{d_ino} for a directory
6403 entry that is a mount point.
6404 @end defmac
6406 @defmac AC_STRUCT_DIRENT_D_TYPE
6407 @acindex{STRUCT_DIRENT_D_TYPE}
6408 @cvindex HAVE_STRUCT_DIRENT_D_TYPE
6409 @c @caindex header_dirent_dirent_h
6410 @c @caindex member_struct_dirent_d_type
6411 Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
6412 Headers}).  Then, if @code{struct dirent} contains a @code{d_type}
6413 member, define @code{HAVE_STRUCT_DIRENT_D_TYPE}.
6414 @end defmac
6416 @anchor{AC_STRUCT_ST_BLOCKS}
6417 @defmac AC_STRUCT_ST_BLOCKS
6418 @acindex{STRUCT_ST_BLOCKS}
6419 @cvindex HAVE_STRUCT_STAT_ST_BLOCKS
6420 @cvindex HAVE_ST_BLOCKS
6421 @ovindex LIBOBJS
6422 @caindex member_struct_stat_st_blocks
6423 If @code{struct stat} contains an @code{st_blocks} member, define
6424 @code{HAVE_STRUCT_STAT_ST_BLOCKS}.  Otherwise, require an
6425 @code{AC_LIBOBJ} replacement of @samp{fileblocks}.  The former name,
6426 @code{HAVE_ST_BLOCKS} is to be avoided, as its support will cease in the
6427 future.
6429 This macro caches its result in the @code{ac_cv_member_struct_stat_st_blocks}
6430 variable.
6431 @end defmac
6433 @defmac AC_STRUCT_TM
6434 @acindex{STRUCT_TM}
6435 @cvindex TM_IN_SYS_TIME
6436 @hdrindex{time.h}
6437 @hdrindex{sys/time.h}
6438 If @file{time.h} does not define @code{struct tm}, define
6439 @code{TM_IN_SYS_TIME}, which means that including @file{sys/time.h}
6440 had better define @code{struct tm}.
6442 This macro is obsolescent, as @file{time.h} defines @code{struct tm} in
6443 current systems.  New programs need not use this macro.
6444 @end defmac
6446 @anchor{AC_STRUCT_TIMEZONE}
6447 @defmac AC_STRUCT_TIMEZONE
6448 @acindex{STRUCT_TIMEZONE}
6449 @cvindex HAVE_DECL_TZNAME
6450 @cvindex HAVE_STRUCT_TM_TM_ZONE
6451 @cvindex HAVE_TM_ZONE
6452 @cvindex HAVE_TZNAME
6453 @c @caindex member_struct_tm_tm_zone
6454 @c @caindex struct_tm
6455 Figure out how to get the current timezone.  If @code{struct tm} has a
6456 @code{tm_zone} member, define @code{HAVE_STRUCT_TM_TM_ZONE} (and the
6457 obsoleted @code{HAVE_TM_ZONE}).  Otherwise, if the external array
6458 @code{tzname} is found, define @code{HAVE_TZNAME}; if it is declared,
6459 define @code{HAVE_DECL_TZNAME}.
6460 @end defmac
6462 @node Generic Structures
6463 @subsection Generic Structure Checks
6465 These macros are used to find structure members not covered by the
6466 ``particular'' test macros.
6468 @defmac AC_CHECK_MEMBER (@var{aggregate}.@var{member}, @
6469   @ovar{action-if-found}, @ovar{action-if-not-found}, @
6470   @dvar{includes, AC_INCLUDES_DEFAULT})
6471 @acindex{CHECK_MEMBER}
6472 @caindex member_@var{aggregate}_@var{member}
6473 Check whether @var{member} is a member of the aggregate @var{aggregate}.
6474 If no @var{includes} are specified, the default includes are used
6475 (@pxref{Default Includes}).
6477 @example
6478 AC_CHECK_MEMBER([struct passwd.pw_gecos], [],
6479                 [AC_MSG_ERROR([we need `passwd.pw_gecos'])],
6480                 [[#include <pwd.h>]])
6481 @end example
6483 You can use this macro for submembers:
6485 @example
6486 AC_CHECK_MEMBER(struct top.middle.bot)
6487 @end example
6489 This macro caches its result in the
6490 @code{av_cv_member_@var{aggregate}_@var{member}} variable, with
6491 characters not suitable for a variable name mapped to underscores.
6492 @end defmac
6494 @anchor{AC_CHECK_MEMBERS}
6495 @defmac AC_CHECK_MEMBERS (@var{members}, @ovar{action-if-found}, @
6496   @ovar{action-if-not-found}, @dvar{includes, AC_INCLUDES_DEFAULT})
6497 @acindex{CHECK_MEMBERS}
6498 @cvindex HAVE_@var{aggregate}_@var{member}
6499 Check for the existence of each @samp{@var{aggregate}.@var{member}} of
6500 @var{members} using the previous macro.  When @var{member} belongs to
6501 @var{aggregate}, define @code{HAVE_@var{aggregate}_@var{member}} (in all
6502 capitals, with spaces and dots replaced by underscores).  If
6503 @var{action-if-found} is given, it is executed for each of the found
6504 members.  If @var{action-if-not-found} is given, it is executed for each
6505 of the members that could not be found.
6507 @var{includes} is a series of include directives, defaulting to
6508 @code{AC_INCLUDES_DEFAULT} (@pxref{Default Includes}), which are used
6509 prior to the members under test.
6511 This macro uses M4 lists:
6512 @example
6513 AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize])
6514 @end example
6515 @end defmac
6518 @node Types
6519 @section Types
6520 @cindex Types
6521 @cindex C types
6523 The following macros check for C types, either builtin or typedefs.  If
6524 there is no macro specifically defined to check for a type you need, and
6525 you don't need to check for any special properties of it, then you can
6526 use a general type-check macro.
6528 @menu
6529 * Particular Types::            Special handling to find certain types
6530 * Generic Types::               How to find other types
6531 @end menu
6533 @node Particular Types
6534 @subsection Particular Type Checks
6536 @hdrindex{sys/types.h}
6537 @hdrindex{stdlib.h}
6538 @hdrindex{stdint.h}
6539 @hdrindex{inttypes.h}
6540 These macros check for particular C types in @file{sys/types.h},
6541 @file{stdlib.h}, @file{stdint.h}, @file{inttypes.h} and others, if they
6542 exist.
6544 The Gnulib @code{stdint} module is an alternate way to define many of
6545 these symbols; it is useful if you prefer your code to assume a
6546 C99-or-better environment.  @xref{Gnulib}.
6548 @anchor{AC_TYPE_GETGROUPS}
6549 @defmac AC_TYPE_GETGROUPS
6550 @acindex{TYPE_GETGROUPS}
6551 @cvindex GETGROUPS_T
6552 @caindex type_getgroups
6553 Define @code{GETGROUPS_T} to be whichever of @code{gid_t} or @code{int}
6554 is the base type of the array argument to @code{getgroups}.
6556 This macro caches the base type in the @code{ac_cv_type_getgroups}
6557 variable.
6558 @end defmac
6560 @defmac AC_TYPE_INT8_T
6561 @acindex{TYPE_INT8_T}
6562 @cvindex HAVE_INT8_T
6563 @cvindex int8_t
6564 @caindex c_int8_t
6565 If @file{stdint.h} or @file{inttypes.h} does not define the type
6566 @code{int8_t}, define @code{int8_t} to a signed
6567 integer type that is exactly 8 bits wide and that uses two's complement
6568 representation, if such a type exists.
6569 If you are worried about porting to hosts that lack such a type, you can
6570 use the results of this macro in C89-or-later code as follows:
6572 @example
6573 #if HAVE_STDINT_H
6574 # include <stdint.h>
6575 #endif
6576 #if defined INT8_MAX || defined int8_t
6577  @emph{code using int8_t}
6578 #else
6579  @emph{complicated alternative using >8-bit 'signed char'}
6580 #endif
6581 @end example
6583 This macro caches the type in the @code{ac_cv_c_int8_t} variable.
6584 @end defmac
6586 @defmac AC_TYPE_INT16_T
6587 @acindex{TYPE_INT16_T}
6588 @cvindex HAVE_INT16_T
6589 @cvindex int16_t
6590 @caindex c_int16_t
6591 This is like @code{AC_TYPE_INT8_T}, except for 16-bit integers.
6592 @end defmac
6594 @defmac AC_TYPE_INT32_T
6595 @acindex{TYPE_INT32_T}
6596 @cvindex HAVE_INT32_T
6597 @cvindex int32_t
6598 @caindex c_int32_t
6599 This is like @code{AC_TYPE_INT8_T}, except for 32-bit integers.
6600 @end defmac
6602 @defmac AC_TYPE_INT64_T
6603 @acindex{TYPE_INT64_T}
6604 @cvindex HAVE_INT64_T
6605 @cvindex int64_t
6606 @caindex c_int64_t
6607 This is like @code{AC_TYPE_INT8_T}, except for 64-bit integers.
6608 @end defmac
6610 @defmac AC_TYPE_INTMAX_T
6611 @acindex{TYPE_INTMAX_T}
6612 @cvindex HAVE_INTMAX_T
6613 @cvindex intmax_t
6614 @c @caindex type_intmax_t
6615 If @file{stdint.h} or @file{inttypes.h} defines the type @code{intmax_t},
6616 define @code{HAVE_INTMAX_T}.  Otherwise, define @code{intmax_t} to the
6617 widest signed integer type.
6618 @end defmac
6620 @defmac AC_TYPE_INTPTR_T
6621 @acindex{TYPE_INTPTR_T}
6622 @cvindex HAVE_INTPTR_T
6623 @cvindex intptr_t
6624 @c @caindex type_intptr_t
6625 If @file{stdint.h} or @file{inttypes.h} defines the type @code{intptr_t},
6626 define @code{HAVE_INTPTR_T}.  Otherwise, define @code{intptr_t} to a
6627 signed integer type wide enough to hold a pointer, if such a type
6628 exists.
6629 @end defmac
6631 @defmac AC_TYPE_LONG_DOUBLE
6632 @acindex{TYPE_LONG_DOUBLE}
6633 @cvindex HAVE_LONG_DOUBLE
6634 @caindex type_long_double
6635 If the C compiler supports a working @code{long double} type, define
6636 @code{HAVE_LONG_DOUBLE}.  The @code{long double} type might have the
6637 same range and precision as @code{double}.
6639 This macro caches its result in the @code{ac_cv_type_long_double}
6640 variable.
6642 This macro is obsolescent, as current C compilers support @code{long
6643 double}.  New programs need not use this macro.
6644 @end defmac
6646 @defmac AC_TYPE_LONG_DOUBLE_WIDER
6647 @acindex{TYPE_LONG_DOUBLE_WIDER}
6648 @cvindex HAVE_LONG_DOUBLE_WIDER
6649 @caindex type_long_double_wider
6650 If the C compiler supports a working @code{long double} type with more
6651 range or precision than the @code{double} type, define
6652 @code{HAVE_LONG_DOUBLE_WIDER}.
6654 This macro caches its result in the @code{ac_cv_type_long_double_wider}
6655 variable.
6656 @end defmac
6658 @defmac AC_TYPE_LONG_LONG_INT
6659 @acindex{TYPE_LONG_LONG_INT}
6660 @cvindex HAVE_LONG_LONG_INT
6661 @caindex type_long_long_int
6662 If the C compiler supports a working @code{long long int} type, define
6663 @code{HAVE_LONG_LONG_INT}.  However, this test does not test
6664 @code{long long int} values in preprocessor @code{#if} expressions,
6665 because too many compilers mishandle such expressions.
6666 @xref{Preprocessor Arithmetic}.
6668 This macro caches its result in the @code{ac_cv_type_long_long_int}
6669 variable.
6670 @end defmac
6672 @defmac AC_TYPE_MBSTATE_T
6673 @acindex{TYPE_MBSTATE_T}
6674 @cvindex mbstate_t
6675 @hdrindex{wchar.h}
6676 @caindex type_mbstate_t
6677 Define @code{HAVE_MBSTATE_T} if @code{<wchar.h>} declares the
6678 @code{mbstate_t} type.  Also, define @code{mbstate_t} to be a type if
6679 @code{<wchar.h>} does not declare it.
6681 This macro caches its result in the @code{ac_cv_type_mbstate_t}
6682 variable.
6683 @end defmac
6685 @anchor{AC_TYPE_MODE_T}
6686 @defmac AC_TYPE_MODE_T
6687 @acindex{TYPE_MODE_T}
6688 @cvindex mode_t
6689 @caindex type_mode_t
6690 Define @code{mode_t} to a suitable type, if standard headers do not
6691 define it.
6693 This macro caches its result in the @code{ac_cv_type_mode_t} variable.
6694 @end defmac
6696 @anchor{AC_TYPE_OFF_T}
6697 @defmac AC_TYPE_OFF_T
6698 @acindex{TYPE_OFF_T}
6699 @cvindex off_t
6700 @caindex type_off_t
6701 Define @code{off_t} to a suitable type, if standard headers do not
6702 define it.
6704 This macro caches its result in the @code{ac_cv_type_off_t} variable.
6705 @end defmac
6707 @anchor{AC_TYPE_PID_T}
6708 @defmac AC_TYPE_PID_T
6709 @acindex{TYPE_PID_T}
6710 @cvindex pid_t
6711 @caindex type_pid_t
6712 Define @code{pid_t} to a suitable type, if standard headers do not
6713 define it.
6715 This macro caches its result in the @code{ac_cv_type_pid_t} variable.
6716 @end defmac
6718 @anchor{AC_TYPE_SIZE_T}
6719 @defmac AC_TYPE_SIZE_T
6720 @acindex{TYPE_SIZE_T}
6721 @cvindex size_t
6722 @caindex type_size_t
6723 Define @code{size_t} to a suitable type, if standard headers do not
6724 define it.
6726 This macro caches its result in the @code{ac_cv_type_size_t} variable.
6727 @end defmac
6729 @defmac AC_TYPE_SSIZE_T
6730 @acindex{TYPE_SSIZE_T}
6731 @cvindex ssize_t
6732 @caindex type_ssize_t
6733 Define @code{ssize_t} to a suitable type, if standard headers do not
6734 define it.
6736 This macro caches its result in the @code{ac_cv_type_ssize_t} variable.
6737 @end defmac
6739 @anchor{AC_TYPE_UID_T}
6740 @defmac AC_TYPE_UID_T
6741 @acindex{TYPE_UID_T}
6742 @cvindex uid_t
6743 @cvindex gid_t
6744 @caindex type_uid_t
6745 Define @code{uid_t} and @code{gid_t} to suitable types, if standard
6746 headers do not define them.
6748 This macro caches its result in the @code{ac_cv_type_uid_t} variable.
6749 @end defmac
6751 @defmac AC_TYPE_UINT8_T
6752 @acindex{TYPE_UINT8_T}
6753 @cvindex HAVE_UINT8_T
6754 @cvindex uint8_t
6755 @caindex c_uint8_t
6756 If @file{stdint.h} or @file{inttypes.h} does not define the type
6757 @code{uint8_t}, define @code{uint8_t} to an
6758 unsigned integer type that is exactly 8 bits wide, if such a type
6759 exists.
6760 This is like @code{AC_TYPE_INT8_T}, except for unsigned integers.
6761 @end defmac
6763 @defmac AC_TYPE_UINT16_T
6764 @acindex{TYPE_UINT16_T}
6765 @cvindex HAVE_UINT16_T
6766 @cvindex uint16_t
6767 @caindex c_uint16_t
6768 This is like @code{AC_TYPE_UINT8_T}, except for 16-bit integers.
6769 @end defmac
6771 @defmac AC_TYPE_UINT32_T
6772 @acindex{TYPE_UINT32_T}
6773 @cvindex HAVE_UINT32_T
6774 @cvindex uint32_t
6775 @caindex c_uint32_t
6776 This is like @code{AC_TYPE_UINT8_T}, except for 32-bit integers.
6777 @end defmac
6779 @defmac AC_TYPE_UINT64_T
6780 @acindex{TYPE_UINT64_T}
6781 @cvindex HAVE_UINT64_T
6782 @cvindex uint64_t
6783 @caindex c_uint64_t
6784 This is like @code{AC_TYPE_UINT8_T}, except for 64-bit integers.
6785 @end defmac
6787 @defmac AC_TYPE_UINTMAX_T
6788 @acindex{TYPE_UINTMAX_T}
6789 @cvindex HAVE_UINTMAX_T
6790 @cvindex uintmax_t
6791 @c @caindex type_uintmax_t
6792 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintmax_t},
6793 define @code{HAVE_UINTMAX_T}.  Otherwise, define @code{uintmax_t} to the
6794 widest unsigned integer type.
6795 @end defmac
6797 @defmac AC_TYPE_UINTPTR_T
6798 @acindex{TYPE_UINTPTR_T}
6799 @cvindex HAVE_UINTPTR_T
6800 @cvindex uintptr_t
6801 @c @caindex type_uintptr_t
6802 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintptr_t},
6803 define @code{HAVE_UINTPTR_T}.  Otherwise, define @code{uintptr_t} to an
6804 unsigned integer type wide enough to hold a pointer, if such a type
6805 exists.
6806 @end defmac
6808 @defmac AC_TYPE_UNSIGNED_LONG_LONG_INT
6809 @acindex{TYPE_UNSIGNED_LONG_LONG_INT}
6810 @cvindex HAVE_UNSIGNED_LONG_LONG_INT
6811 @caindex type_unsigned_long_long_int
6812 If the C compiler supports a working @code{unsigned long long int} type,
6813 define @code{HAVE_UNSIGNED_LONG_LONG_INT}.  However, this test does not test
6814 @code{unsigned long long int} values in preprocessor @code{#if} expressions,
6815 because too many compilers mishandle such expressions.
6816 @xref{Preprocessor Arithmetic}.
6818 This macro caches its result in the @code{ac_cv_type_unsigned_long_long_int}
6819 variable.
6820 @end defmac
6822 @node Generic Types
6823 @subsection Generic Type Checks
6825 These macros are used to check for types not covered by the ``particular''
6826 test macros.
6828 @defmac AC_CHECK_TYPE (@var{type}, @ovar{action-if-found}, @
6829   @ovar{action-if-not-found}, @dvar{includes, AC_INCLUDES_DEFAULT})
6830 @acindex{CHECK_TYPE}
6831 @caindex type_@var{type}
6832 Check whether @var{type} is defined.  It may be a compiler builtin type
6833 or defined by the @var{includes}.  @var{includes} is a series of include
6834 directives, defaulting to @code{AC_INCLUDES_DEFAULT} (@pxref{Default
6835 Includes}), which are used prior to the type under test.
6837 In C, @var{type} must be a type-name, so that the expression @samp{sizeof
6838 (@var{type})} is valid (but @samp{sizeof ((@var{type}))} is not).  The
6839 same test is applied when compiling for C++, which means that in C++
6840 @var{type} should be a type-id and should not be an anonymous
6841 @samp{struct} or @samp{union}.
6843 This macro caches its result in the @code{ac_cv_type_@var{type}}
6844 variable, with @samp{*} mapped to @samp{p} and other characters not
6845 suitable for a variable name mapped to underscores.
6846 @end defmac
6849 @defmac AC_CHECK_TYPES (@var{types}, @ovar{action-if-found}, @
6850   @ovar{action-if-not-found}, @dvar{includes, AC_INCLUDES_DEFAULT})
6851 @acindex{CHECK_TYPES}
6852 @cvindex HAVE_@var{type}
6853 For each @var{type} of the @var{types} that is defined, define
6854 @code{HAVE_@var{type}} (in all capitals).  Each @var{type} must follow
6855 the rules of @code{AC_CHECK_TYPE}.  If no @var{includes} are
6856 specified, the default includes are used (@pxref{Default Includes}).  If
6857 @var{action-if-found} is given, it is additional shell code to execute
6858 when one of the types is found.  If @var{action-if-not-found} is given,
6859 it is executed when one of the types is not found.
6861 This macro uses M4 lists:
6862 @example
6863 AC_CHECK_TYPES([ptrdiff_t])
6864 AC_CHECK_TYPES([unsigned long long int, uintmax_t])
6865 AC_CHECK_TYPES([float_t], [], [], [[#include <math.h>]])
6866 @end example
6868 @end defmac
6870 Autoconf, up to 2.13, used to provide to another version of
6871 @code{AC_CHECK_TYPE}, broken by design.  In order to keep backward
6872 compatibility, a simple heuristic, quite safe but not totally, is
6873 implemented.  In case of doubt, read the documentation of the former
6874 @code{AC_CHECK_TYPE}, see @ref{Obsolete Macros}.
6877 @node Compilers and Preprocessors
6878 @section Compilers and Preprocessors
6879 @cindex Compilers
6880 @cindex Preprocessors
6882 @ovindex EXEEXT
6883 All the tests for compilers (@code{AC_PROG_CC}, @code{AC_PROG_CXX},
6884 @code{AC_PROG_F77}) define the output variable @code{EXEEXT} based on
6885 the output of the compiler, typically to the empty string if
6886 Posix and @samp{.exe} if a DOS variant.
6888 @ovindex OBJEXT
6889 They also define the output variable @code{OBJEXT} based on the
6890 output of the compiler, after @file{.c} files have been excluded, typically
6891 to @samp{o} if Posix, @samp{obj} if a DOS variant.
6893 If the compiler being used does not produce executables, the tests fail.  If
6894 the executables can't be run, and cross-compilation is not enabled, they
6895 fail too.  @xref{Manual Configuration}, for more on support for cross
6896 compiling.
6898 @menu
6899 * Specific Compiler Characteristics::  Some portability issues
6900 * Generic Compiler Characteristics::  Language independent tests and features
6901 * C Compiler::                  Checking its characteristics
6902 * C++ Compiler::                Likewise
6903 * Objective C Compiler::        Likewise
6904 * Objective C++ Compiler::      Likewise
6905 * Erlang Compiler and Interpreter::  Likewise
6906 * Fortran Compiler::            Likewise
6907 @end menu
6909 @node Specific Compiler Characteristics
6910 @subsection Specific Compiler Characteristics
6912 Some compilers exhibit different behaviors.
6914 @table @asis
6915 @item Static/Dynamic Expressions
6916 Autoconf relies on a trick to extract one bit of information from the C
6917 compiler: using negative array sizes.  For instance the following
6918 excerpt of a C source demonstrates how to test whether @samp{int} objects are 4
6919 bytes wide:
6921 @example
6922 static int test_array[sizeof (int) == 4 ? 1 : -1];
6923 @end example
6925 @noindent
6926 To our knowledge, there is a single compiler that does not support this
6927 trick: the HP C compilers (the real ones, not only the
6928 ``bundled'') on HP-UX 11.00.
6929 They incorrectly reject the above program with the diagnostic
6930 ``Variable-length arrays cannot have static storage.''
6931 This bug comes from HP compilers' mishandling of @code{sizeof (int)},
6932 not from the @code{? 1 : -1}, and
6933 Autoconf works around this problem by casting @code{sizeof (int)} to
6934 @code{long int} before comparing it.
6935 @end table
6937 @node Generic Compiler Characteristics
6938 @subsection Generic Compiler Characteristics
6940 @anchor{AC_CHECK_SIZEOF}
6941 @defmac AC_CHECK_SIZEOF (@var{type-or-expr}, @ovar{unused}, @
6942   @dvar{includes, AC_INCLUDES_DEFAULT})
6943 @acindex{CHECK_SIZEOF}
6944 @cvindex SIZEOF_@var{type-or-expr}
6945 @caindex sizeof_@var{type-or-expr}
6946 Define @code{SIZEOF_@var{type-or-expr}} (@pxref{Standard Symbols}) to be
6947 the size in bytes of @var{type-or-expr}, which may be either a type or
6948 an expression returning a value that has a size.  If the expression
6949 @samp{sizeof (@var{type-or-expr})} is invalid, the result is 0.
6950 @var{includes} is a series of include directives, defaulting to
6951 @code{AC_INCLUDES_DEFAULT} (@pxref{Default Includes}), which are used
6952 prior to the expression under test.
6954 This macro now works even when cross-compiling.  The @var{unused}
6955 argument was used when cross-compiling.
6957 For example, the call
6959 @example
6960 @c If you change this example, adjust tests/semantics.at:AC_CHECK_SIZEOF struct.
6961 AC_CHECK_SIZEOF([int *])
6962 @end example
6964 @noindent
6965 defines @code{SIZEOF_INT_P} to be 8 on DEC Alpha AXP systems.
6967 This macro caches its result in the @code{ac_cv_sizeof_@var{type-or-expr}}
6968 variable, with @samp{*} mapped to @samp{p} and other characters not
6969 suitable for a variable name mapped to underscores.
6970 @end defmac
6972 @defmac AC_CHECK_ALIGNOF (@var{type}, @dvar{includes, AC_INCLUDES_DEFAULT})
6973 @acindex{CHECK_ALIGNOF}
6974 @cvindex ALIGNOF_@var{type}
6975 @caindex alignof_@var{type-or-expr}
6976 Define @code{ALIGNOF_@var{type}} (@pxref{Standard Symbols}) to be the
6977 alignment in bytes of @var{type}.  @samp{@var{type} y;} must be valid as
6978 a structure member declaration.  If @samp{type} is unknown, the result
6979 is 0.  If no @var{includes} are specified, the default includes are used
6980 (@pxref{Default Includes}).
6982 This macro caches its result in the @code{ac_cv_alignof_@var{type-or-expr}}
6983 variable, with @samp{*} mapped to @samp{p} and other characters not
6984 suitable for a variable name mapped to underscores.
6985 @end defmac
6987 @defmac AC_COMPUTE_INT (@var{var}, @var{expression}, @
6988   @dvar{includes, AC_INCLUDES_DEFAULT}, @ovar{action-if-fails})
6989 @acindex{COMPUTE_INT}
6990 Store into the shell variable @var{var} the value of the integer
6991 @var{expression}.  The
6992 value should fit in an initializer in a C variable of type @code{signed
6993 long}.  To support cross compilation (in which case, the macro only works on
6994 hosts that use twos-complement arithmetic), it should be possible to evaluate
6995 the expression at compile-time.  If no @var{includes} are specified, the
6996 default includes are used (@pxref{Default Includes}).
6998 Execute @var{action-if-fails} if the value cannot be determined correctly.
6999 @end defmac
7001 @defmac AC_LANG_WERROR
7002 @acindex{LANG_WERROR}
7003 Normally Autoconf ignores warnings generated by the compiler, linker, and
7004 preprocessor.  If this macro is used, warnings count as fatal
7005 errors for the current language.  This macro is useful when the
7006 results of configuration are used where warnings are unacceptable; for
7007 instance, if parts of a program are built with the GCC
7008 @option{-Werror}
7009 option.  If the whole program is built using @option{-Werror} it is
7010 often simpler to put @option{-Werror} in the compiler flags (@code{CFLAGS},
7011 etc.).
7012 @end defmac
7014 @defmac AC_OPENMP
7015 @acindex{OPENMP}
7016 @cvindex _OPENMP
7017 @ovindex OPENMP_CFLAGS
7018 @ovindex OPENMP_CXXFLAGS
7019 @ovindex OPENMP_FFLAGS
7020 @ovindex OPENMP_FCFLAGS
7021 OpenMP (@url{http://@/www.openmp.org/}) specifies extensions of C, C++,
7022 and Fortran that simplify optimization of shared memory parallelism,
7023 which is a common problem on multicore CPUs.
7025 If the current language is C, the macro @code{AC_OPENMP} sets the
7026 variable @code{OPENMP_CFLAGS} to the C compiler flags needed for
7027 supporting OpenMP@.  @code{OPENMP_CFLAGS} is set to empty if the
7028 compiler already supports OpenMP, if it has no way to activate OpenMP
7029 support, or if the user rejects OpenMP support by invoking
7030 @samp{configure} with the @samp{--disable-openmp} option.
7032 @code{OPENMP_CFLAGS} needs to be used when compiling programs, when
7033 preprocessing program source, and when linking programs.  Therefore you
7034 need to add @code{$(OPENMP_CFLAGS)} to the @code{CFLAGS} of C programs
7035 that use OpenMP@.  If you preprocess OpenMP-specific C code, you also
7036 need to add @code{$(OPENMP_CFLAGS)} to @code{CPPFLAGS}.  The presence of
7037 OpenMP support is revealed at compile time by the preprocessor macro
7038 @code{_OPENMP}.
7040 Linking a program with @code{OPENMP_CFLAGS} typically adds one more
7041 shared library to the program's dependencies, so its use is recommended
7042 only on programs that actually require OpenMP.
7044 If the current language is C++, @code{AC_OPENMP} sets the variable
7045 @code{OPENMP_CXXFLAGS}, suitably for the C++ compiler.  The same remarks
7046 hold as for C.
7048 If the current language is Fortran 77 or Fortran, @code{AC_OPENMP} sets
7049 the variable @code{OPENMP_FFLAGS} or @code{OPENMP_FCFLAGS},
7050 respectively.  Similar remarks as for C hold, except that
7051 @code{CPPFLAGS} is not used for Fortran, and no preprocessor macro
7052 signals OpenMP support.
7054 For portability, it is best to avoid spaces between @samp{#} and
7055 @samp{pragma omp}.  That is, write @samp{#pragma omp}, not
7056 @samp{# pragma omp}.  The Sun WorkShop 6.2 C compiler chokes on the
7057 latter.
7058 @end defmac
7060 @node C Compiler
7061 @subsection C Compiler Characteristics
7063 The following macros provide ways to find and exercise a C Compiler.
7064 There are a few constructs that ought to be avoided, but do not deserve
7065 being checked for, since they can easily be worked around.
7067 @table @asis
7068 @item Don't use lines containing solitary backslashes
7069 They tickle a bug in the HP-UX C compiler (checked on
7070 HP-UX 10.20,
7071 11.00, and 11i).  When given the following source:
7073 @example
7074 #ifdef __STDC__
7076 * A comment with backslash-newlines in it.  %@{ %@} *\
7079 char str[] = "\\
7080 " A string with backslash-newlines in it %@{ %@} \\
7082 char apostrophe = '\\
7086 #endif
7087 @end example
7089 @noindent
7090 the compiler incorrectly fails with the diagnostics ``Non-terminating
7091 comment at end of file'' and ``Missing @samp{#endif} at end of file.''
7092 Removing the lines with solitary backslashes solves the problem.
7094 @item Don't compile several files at once if output matters to you
7095 Some compilers, such as HP's, report names of files being
7096 compiled when given more than one file operand.  For instance:
7098 @example
7099 $ @kbd{cc a.c b.c}
7100 a.c:
7101 b.c:
7102 @end example
7104 @noindent
7105 This can cause problems if you observe the output of the compiler to
7106 detect failures.  Invoking @samp{cc -c a.c && cc -c b.c && cc -o c a.o
7107 b.o} solves the issue.
7109 @item Don't rely on @code{#error} failing
7110 The IRIX C compiler does not fail when #error is preprocessed; it
7111 simply emits a diagnostic and continues, exiting successfully.  So,
7112 instead of an error directive like @code{#error "Unsupported word size"}
7113 it is more portable to use an invalid directive like @code{#Unsupported
7114 word size} in Autoconf tests.  In ordinary source code, @code{#error} is
7115 OK, since installers with inadequate compilers like IRIX can simply
7116 examine these compilers' diagnostic output.
7118 @item Don't rely on correct @code{#line} support
7119 On Solaris, @command{c89} (at least Sun C 5.3 through 5.8)
7120 diagnoses @code{#line} directives whose line
7121 numbers are greater than 32767.  Nothing in Posix
7122 makes this invalid.  That is why Autoconf stopped issuing
7123 @code{#line} directives.
7124 @end table
7126 @defmac AC_PROG_CC (@ovar{compiler-search-list})
7127 @acindex{PROG_CC}
7128 @evindex CC
7129 @evindex CFLAGS
7130 @ovindex CC
7131 @ovindex CFLAGS
7132 @caindex prog_cc_c89
7133 Determine a C compiler to use.  If @code{CC} is not already set in the
7134 environment, check for @code{gcc} and @code{cc}, then for other C
7135 compilers.  Set output variable @code{CC} to the name of the compiler
7136 found.
7138 This macro may, however, be invoked with an optional first argument
7139 which, if specified, must be a blank-separated list of C compilers to
7140 search for.  This just gives the user an opportunity to specify an
7141 alternative search list for the C compiler.  For example, if you didn't
7142 like the default order, then you could invoke @code{AC_PROG_CC} like
7143 this:
7145 @example
7146 AC_PROG_CC([gcc cl cc])
7147 @end example
7149 If the C compiler does not handle function prototypes correctly by
7150 default, try to add an option to output variable @code{CC} to make it
7151 so.  This macro tries various options that select standard-conformance
7152 modes on various systems.
7154 After calling this macro you can check whether the C compiler has been
7155 set to accept ANSI C89 (ISO C90); if not, the shell
7156 variable
7157 @code{ac_cv_prog_cc_c89} is set to @samp{no}.  See also
7158 @code{AC_C_PROTOTYPES} below.
7160 If using the GNU C compiler, set shell variable @code{GCC} to
7161 @samp{yes}.  If output variable @code{CFLAGS} was not already set, set
7162 it to @option{-g -O2} for the GNU C compiler (@option{-O2} on systems
7163 where GCC does not accept @option{-g}), or @option{-g} for
7164 other compilers.  If your package does not like this default, then it is
7165 acceptable to insert the line @samp{: $@{CFLAGS=""@}} after @code{AC_INIT}
7166 and before @code{AC_PROG_CC} to select an empty default instead.
7168 Many Autoconf macros use a compiler, and thus call
7169 @samp{AC_REQUIRE([AC_PROG_CC])} to ensure that the compiler has been
7170 determined before the body of the outermost @code{AC_DEFUN} macro.
7171 Although @code{AC_PROG_CC} is safe to directly expand multiple times, it
7172 performs certain checks (such as the proper value of @env{EXEEXT}) only
7173 on the first invocation.  Therefore, care must be used when invoking
7174 this macro from within another macro rather than at the top level
7175 (@pxref{Expanded Before Required}).
7176 @end defmac
7178 @anchor{AC_PROG_CC_C_O}
7179 @defmac AC_PROG_CC_C_O
7180 @acindex{PROG_CC_C_O}
7181 @cvindex NO_MINUS_C_MINUS_O
7182 @caindex prog_cc_@var{compiler}_c_o
7183 If the C compiler does not accept the @option{-c} and @option{-o} options
7184 simultaneously, define @code{NO_MINUS_C_MINUS_O}.  This macro actually
7185 tests both the compiler found by @code{AC_PROG_CC}, and, if different,
7186 the first @code{cc} in the path.  The test fails if one fails.  This
7187 macro was created for GNU Make to choose the default C compilation
7188 rule.
7190 For the compiler @var{compiler}, this macro caches its result in the
7191 @code{ac_cv_prog_cc_@var{compiler}_c_o} variable.
7192 @end defmac
7195 @defmac AC_PROG_CPP
7196 @acindex{PROG_CPP}
7197 @evindex CPP
7198 @ovindex CPP
7199 Set output variable @code{CPP} to a command that runs the
7200 C preprocessor.  If @samp{$CC -E} doesn't work, @file{/lib/cpp} is used.
7201 It is only portable to run @code{CPP} on files with a @file{.c}
7202 extension.
7204 Some preprocessors don't indicate missing include files by the error
7205 status.  For such preprocessors an internal variable is set that causes
7206 other macros to check the standard error from the preprocessor and
7207 consider the test failed if any warnings have been reported.
7208 For most preprocessors, though, warnings do not cause include-file
7209 tests to fail unless @code{AC_PROG_CPP_WERROR} is also specified.
7210 @end defmac
7212 @defmac AC_PROG_CPP_WERROR
7213 @acindex{PROG_CPP_WERROR}
7214 @ovindex CPP
7215 This acts like @code{AC_PROG_CPP}, except it treats warnings from the
7216 preprocessor as errors even if the preprocessor exit status indicates
7217 success.  This is useful for avoiding headers that generate mandatory
7218 warnings, such as deprecation notices.
7219 @end defmac
7222 The following macros check for C compiler or machine architecture
7223 features.  To check for characteristics not listed here, use
7224 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
7225 @code{AC_RUN_IFELSE} (@pxref{Runtime}).
7227 @defmac AC_PROG_CC_STDC
7228 @acindex{PROG_CC_STDC}
7229 @caindex prog_cc_stdc
7230 If the C compiler cannot compile ISO Standard C (currently
7231 C99), try to add an option to output variable @code{CC} to make it work.
7232 If the compiler does not support C99, fall back to supporting
7233 ANSI C89 (ISO C90).
7235 After calling this macro you can check whether the C compiler has been
7236 set to accept Standard C; if not, the shell variable
7237 @code{ac_cv_prog_cc_stdc} is set to @samp{no}.
7238 @end defmac
7240 @defmac AC_PROG_CC_C89
7241 @acindex{PROG_CC_C89}
7242 @caindex prog_cc_c89
7243 If the C compiler is not in ANSI C89 (ISO C90) mode by
7244 default, try to add an option to output variable @code{CC} to make it
7245 so.  This macro tries various options that select ANSI C89 on
7246 some system or another, preferring extended functionality modes over
7247 strict conformance modes.  It considers the compiler to be in
7248 ANSI C89 mode if it handles function prototypes correctly.
7250 After calling this macro you can check whether the C compiler has been
7251 set to accept ANSI C89; if not, the shell variable
7252 @code{ac_cv_prog_cc_c89} is set to @samp{no}.
7254 This macro is called automatically by @code{AC_PROG_CC}.
7255 @end defmac
7257 @defmac AC_PROG_CC_C99
7258 @acindex{PROG_CC_C99}
7259 @caindex prog_cc_c99
7260 If the C compiler is not in C99 mode by default, try to add an
7261 option to output variable @code{CC} to make it so.  This macro tries
7262 various options that select C99 on some system or another, preferring
7263 extended functionality modes over strict conformance modes.  It
7264 considers the compiler to be in C99 mode if it handles @code{_Bool},
7265 @code{//} comments, flexible array members, @code{inline}, signed and
7266 unsigned @code{long long int}, mixed code and declarations, named
7267 initialization of structs,
7268 @code{restrict}, @code{va_copy}, varargs macros, variable declarations
7269 in @code{for} loops, and variable length arrays.
7271 After calling this macro you can check whether the C compiler has been
7272 set to accept C99; if not, the shell variable
7273 @code{ac_cv_prog_cc_c99} is set to @samp{no}.
7274 @end defmac
7276 @defmac AC_C_BACKSLASH_A
7277 @acindex{C_BACKSLASH_A}
7278 @cvindex HAVE_C_BACKSLASH_A
7279 Define @samp{HAVE_C_BACKSLASH_A} to 1 if the C compiler understands
7280 @samp{\a}.
7282 This macro is obsolescent, as current C compilers understand @samp{\a}.
7283 New programs need not use this macro.
7284 @end defmac
7286 @anchor{AC_C_BIGENDIAN}
7287 @defmac AC_C_BIGENDIAN (@ovar{action-if-true}, @ovar{action-if-false}, @
7288   @ovar{action-if-unknown}, @ovar{action-if-universal})
7289 @acindex{C_BIGENDIAN}
7290 @cvindex WORDS_BIGENDIAN
7291 @cindex Endianness
7292 If words are stored with the most significant byte first (like Motorola
7293 and SPARC CPUs), execute @var{action-if-true}.  If words are stored with
7294 the least significant byte first (like Intel and VAX CPUs), execute
7295 @var{action-if-false}.
7297 This macro runs a test-case if endianness cannot be determined from the
7298 system header files.  When cross-compiling, the test-case is not run but
7299 grep'ed for some magic values.  @var{action-if-unknown} is executed if
7300 the latter case fails to determine the byte sex of the host system.
7302 In some cases a single run of a compiler can generate code for multiple
7303 architectures.  This can happen, for example, when generating Mac OS X
7304 universal binary files, which work on both PowerPC and Intel
7305 architectures.  In this case, the different variants might be for
7306 different architectures whose endiannesses differ.  If
7307 @command{configure} detects this, it executes @var{action-if-universal}
7308 instead of @var{action-if-unknown}.
7310 The default for @var{action-if-true} is to define
7311 @samp{WORDS_BIGENDIAN}.  The default for @var{action-if-false} is to do
7312 nothing.  The default for @var{action-if-unknown} is to
7313 abort configure and tell the installer how to bypass this test.
7314 And finally, the default for @var{action-if-universal} is to ensure that
7315 @samp{WORDS_BIGENDIAN} is defined if and only if a universal build is
7316 detected and the current code is big-endian; this default works only if
7317 @command{autoheader} is used (@pxref{autoheader Invocation}).
7319 If you use this macro without specifying @var{action-if-universal}, you
7320 should also use @code{AC_CONFIG_HEADERS}; otherwise
7321 @samp{WORDS_BIGENDIAN} may be set incorrectly for Mac OS X universal
7322 binary files.
7323 @end defmac
7325 @anchor{AC_C_CONST}
7326 @defmac AC_C_CONST
7327 @acindex{C_CONST}
7328 @cvindex const
7329 @caindex c_const
7330 If the C compiler does not fully support the @code{const} keyword,
7331 define @code{const} to be empty.  Some C compilers that do
7332 not define @code{__STDC__} do support @code{const}; some compilers that
7333 define @code{__STDC__} do not completely support @code{const}.  Programs
7334 can simply use @code{const} as if every C compiler supported it; for
7335 those that don't, the makefile or configuration header file
7336 defines it as empty.
7338 Occasionally installers use a C++ compiler to compile C code, typically
7339 because they lack a C compiler.  This causes problems with @code{const},
7340 because C and C++ treat @code{const} differently.  For example:
7342 @example
7343 const int foo;
7344 @end example
7346 @noindent
7347 is valid in C but not in C++.  These differences unfortunately cannot be
7348 papered over by defining @code{const} to be empty.
7350 If @command{autoconf} detects this situation, it leaves @code{const} alone,
7351 as this generally yields better results in practice.  However, using a
7352 C++ compiler to compile C code is not recommended or supported, and
7353 installers who run into trouble in this area should get a C compiler
7354 like GCC to compile their C code.
7356 This macro caches its result in the @code{ac_cv_c_const} variable.
7358 This macro is obsolescent, as current C compilers support @code{const}.
7359 New programs need not use this macro.
7360 @end defmac
7362 @defmac AC_C_RESTRICT
7363 @acindex{C_RESTRICT}
7364 @cvindex restrict
7365 @caindex c_restrict
7366 If the C compiler recognizes a variant spelling for the @code{restrict}
7367 keyword (@code{__restrict}, @code{__restrict__}, or @code{_Restrict}),
7368 then define @code{restrict} to that; this is more likely to do the right
7369 thing with compilers that support language variants where plain
7370 @code{restrict} is not a keyword.  Otherwise, if the C compiler
7371 recognizes the @code{restrict} keyword, don't do anything.
7372 Otherwise, define @code{restrict} to be empty.
7373 Thus, programs may simply use @code{restrict} as if every C compiler
7374 supported it; for those that do not, the makefile
7375 or configuration header defines it away.
7377 Although support in C++ for the @code{restrict} keyword is not
7378 required, several C++ compilers do accept the keyword.
7379 This macro works for them, too.
7381 This macro caches @samp{no} in the @code{ac_cv_c_restrict} variable
7382 if @code{restrict} is not supported, and a supported spelling otherwise.
7383 @end defmac
7385 @defmac AC_C_VOLATILE
7386 @acindex{C_VOLATILE}
7387 @cvindex volatile
7388 If the C compiler does not understand the keyword @code{volatile},
7389 define @code{volatile} to be empty.  Programs can simply use
7390 @code{volatile} as if every C compiler supported it; for those that do
7391 not, the makefile or configuration header defines it as
7392 empty.
7394 If the correctness of your program depends on the semantics of
7395 @code{volatile}, simply defining it to be empty does, in a sense, break
7396 your code.  However, given that the compiler does not support
7397 @code{volatile}, you are at its mercy anyway.  At least your
7398 program compiles, when it wouldn't before.
7399 @xref{Volatile Objects}, for more about @code{volatile}.
7401 In general, the @code{volatile} keyword is a standard C feature, so
7402 you might expect that @code{volatile} is available only when
7403 @code{__STDC__} is defined.  However, Ultrix 4.3's native compiler does
7404 support volatile, but does not define @code{__STDC__}.
7406 This macro is obsolescent, as current C compilers support @code{volatile}.
7407 New programs need not use this macro.
7408 @end defmac
7410 @anchor{AC_C_INLINE}
7411 @defmac AC_C_INLINE
7412 @acindex{C_INLINE}
7413 @cvindex inline
7414 If the C compiler supports the keyword @code{inline}, do nothing.
7415 Otherwise define @code{inline} to @code{__inline__} or @code{__inline}
7416 if it accepts one of those, otherwise define @code{inline} to be empty.
7417 @end defmac
7419 @anchor{AC_C_CHAR_UNSIGNED}
7420 @defmac AC_C_CHAR_UNSIGNED
7421 @acindex{C_CHAR_UNSIGNED}
7422 @cvindex __CHAR_UNSIGNED__
7423 If the C type @code{char} is unsigned, define @code{__CHAR_UNSIGNED__},
7424 unless the C compiler predefines it.
7426 These days, using this macro is not necessary.  The same information can
7427 be determined by this portable alternative, thus avoiding the use of
7428 preprocessor macros in the namespace reserved for the implementation.
7430 @example
7431 #include <limits.h>
7432 #if CHAR_MIN == 0
7433 # define CHAR_UNSIGNED 1
7434 #endif
7435 @end example
7436 @end defmac
7438 @defmac AC_C_STRINGIZE
7439 @acindex{C_STRINGIZE}
7440 @cvindex HAVE_STRINGIZE
7441 If the C preprocessor supports the stringizing operator, define
7442 @code{HAVE_STRINGIZE}.  The stringizing operator is @samp{#} and is
7443 found in macros such as this:
7445 @example
7446 #define x(y) #y
7447 @end example
7449 This macro is obsolescent, as current C compilers support the
7450 stringizing operator.  New programs need not use this macro.
7451 @end defmac
7453 @defmac AC_C_FLEXIBLE_ARRAY_MEMBER
7454 @acindex{C_FLEXIBLE_ARRAY_MEMBER}
7455 @cvindex FLEXIBLE_ARRAY_MEMBER
7456 If the C compiler supports flexible array members, define
7457 @code{FLEXIBLE_ARRAY_MEMBER} to nothing; otherwise define it to 1.
7458 That way, a declaration like this:
7460 @example
7461 struct s
7462   @{
7463     size_t n_vals;
7464     double val[FLEXIBLE_ARRAY_MEMBER];
7465   @};
7466 @end example
7468 @noindent
7469 will let applications use the ``struct hack'' even with compilers that
7470 do not support flexible array members.  To allocate and use such an
7471 object, you can use code like this:
7473 @example
7474 size_t i;
7475 size_t n = compute_value_count ();
7476 struct s *p =
7477    malloc (offsetof (struct s, val)
7478            + n * sizeof (double));
7479 p->n_vals = n;
7480 for (i = 0; i < n; i++)
7481   p->val[i] = compute_value (i);
7482 @end example
7483 @end defmac
7485 @defmac AC_C_VARARRAYS
7486 @acindex{C_VARARRAYS}
7487 @cvindex HAVE_C_VARARRAYS
7488 If the C compiler supports variable-length arrays, define
7489 @code{HAVE_C_VARARRAYS}.  A variable-length array is an array of automatic
7490 storage duration whose length is determined at run time, when the array
7491 is declared.
7492 @end defmac
7494 @defmac AC_C_TYPEOF
7495 @acindex{C_TYPEOF}
7496 @cvindex HAVE_TYPEOF
7497 @cvindex typeof
7498 If the C compiler supports GCC's @code{typeof} syntax either
7499 directly or
7500 through a different spelling of the keyword (e.g., @code{__typeof__}),
7501 define @code{HAVE_TYPEOF}.  If the support is available only through a
7502 different spelling, define @code{typeof} to that spelling.
7503 @end defmac
7505 @defmac AC_C_PROTOTYPES
7506 @acindex{C_PROTOTYPES}
7507 @cvindex PROTOTYPES
7508 @cvindex __PROTOTYPES
7509 @cvindex PARAMS
7510 If function prototypes are understood by the compiler (as determined by
7511 @code{AC_PROG_CC}), define @code{PROTOTYPES} and @code{__PROTOTYPES}.
7512 Defining @code{__PROTOTYPES} is for the benefit of
7513 header files that cannot use macros that infringe on user name space.
7515 This macro is obsolescent, as current C compilers support prototypes.
7516 New programs need not use this macro.
7517 @end defmac
7519 @anchor{AC_PROG_GCC_TRADITIONAL}
7520 @defmac AC_PROG_GCC_TRADITIONAL
7521 @acindex{PROG_GCC_TRADITIONAL}
7522 @ovindex CC
7523 Add @option{-traditional} to output variable @code{CC} if using the
7524 GNU C compiler and @code{ioctl} does not work properly without
7525 @option{-traditional}.  That usually happens when the fixed header files
7526 have not been installed on an old system.
7528 This macro is obsolescent, since current versions of the GNU C
7529 compiler fix the header files automatically when installed.
7530 @end defmac
7533 @node C++ Compiler
7534 @subsection C++ Compiler Characteristics
7537 @defmac AC_PROG_CXX (@ovar{compiler-search-list})
7538 @acindex{PROG_CXX}
7539 @evindex CXX
7540 @evindex CXXFLAGS
7541 @ovindex CXX
7542 @ovindex CXXFLAGS
7543 Determine a C++ compiler to use.  Check whether the environment variable
7544 @code{CXX} or @code{CCC} (in that order) is set; if so, then set output
7545 variable @code{CXX} to its value.
7547 Otherwise, if the macro is invoked without an argument, then search for
7548 a C++ compiler under the likely names (first @code{g++} and @code{c++}
7549 then other names).  If none of those checks succeed, then as a last
7550 resort set @code{CXX} to @code{g++}.
7552 This macro may, however, be invoked with an optional first argument
7553 which, if specified, must be a blank-separated list of C++ compilers to
7554 search for.  This just gives the user an opportunity to specify an
7555 alternative search list for the C++ compiler.  For example, if you
7556 didn't like the default order, then you could invoke @code{AC_PROG_CXX}
7557 like this:
7559 @example
7560 AC_PROG_CXX([gcc cl KCC CC cxx cc++ xlC aCC c++ g++])
7561 @end example
7563 If using the GNU C++ compiler, set shell variable @code{GXX} to
7564 @samp{yes}.  If output variable @code{CXXFLAGS} was not already set, set
7565 it to @option{-g -O2} for the GNU C++ compiler (@option{-O2} on
7566 systems where G++ does not accept @option{-g}), or @option{-g} for other
7567 compilers.  If your package does not like this default, then it is
7568 acceptable to insert the line @samp{: $@{CXXFLAGS=""@}} after @code{AC_INIT}
7569 and before @code{AC_PROG_CXX} to select an empty default instead.
7571 @end defmac
7573 @defmac AC_PROG_CXXCPP
7574 @acindex{PROG_CXXCPP}
7575 @evindex CXXCPP
7576 @ovindex CXXCPP
7577 Set output variable @code{CXXCPP} to a command that runs the C++
7578 preprocessor.  If @samp{$CXX -E} doesn't work, @file{/lib/cpp} is used.
7579 It is portable to run @code{CXXCPP} only on files with a @file{.c},
7580 @file{.C}, @file{.cc}, or @file{.cpp} extension.
7582 Some preprocessors don't indicate missing include files by the error
7583 status.  For such preprocessors an internal variable is set that causes
7584 other macros to check the standard error from the preprocessor and
7585 consider the test failed if any warnings have been reported.  However,
7586 it is not known whether such broken preprocessors exist for C++.
7587 @end defmac
7589 @defmac AC_PROG_CXX_C_O
7590 @acindex{PROG_CXX_C_O}
7591 @cvindex CXX_NO_MINUS_C_MINUS_O
7592 Test whether the C++ compiler accepts the options @option{-c} and
7593 @option{-o} simultaneously, and define @code{CXX_NO_MINUS_C_MINUS_O},
7594 if it does not.
7595 @end defmac
7598 @node Objective C Compiler
7599 @subsection Objective C Compiler Characteristics
7602 @defmac AC_PROG_OBJC (@ovar{compiler-search-list})
7603 @acindex{PROG_OBJC}
7604 @evindex OBJC
7605 @evindex OBJCFLAGS
7606 @ovindex OBJC
7607 @ovindex OBJCFLAGS
7608 Determine an Objective C compiler to use.  If @code{OBJC} is not already
7609 set in the environment, check for Objective C compilers.  Set output
7610 variable @code{OBJC} to the name of the compiler found.
7612 This macro may, however, be invoked with an optional first argument
7613 which, if specified, must be a blank-separated list of Objective C compilers to
7614 search for.  This just gives the user an opportunity to specify an
7615 alternative search list for the Objective C compiler.  For example, if you
7616 didn't like the default order, then you could invoke @code{AC_PROG_OBJC}
7617 like this:
7619 @example
7620 AC_PROG_OBJC([gcc objcc objc])
7621 @end example
7623 If using the GNU Objective C compiler, set shell variable
7624 @code{GOBJC} to @samp{yes}.  If output variable @code{OBJCFLAGS} was not
7625 already set, set it to @option{-g -O2} for the GNU Objective C
7626 compiler (@option{-O2} on systems where @command{gcc} does not accept
7627 @option{-g}), or @option{-g} for other compilers.
7628 @end defmac
7630 @defmac AC_PROG_OBJCPP
7631 @acindex{PROG_OBJCPP}
7632 @evindex OBJCPP
7633 @ovindex OBJCPP
7634 Set output variable @code{OBJCPP} to a command that runs the Objective C
7635 preprocessor.  If @samp{$OBJC -E} doesn't work, @file{/lib/cpp} is used.
7636 @end defmac
7639 @node Objective C++ Compiler
7640 @subsection Objective C++ Compiler Characteristics
7643 @defmac AC_PROG_OBJCXX (@ovar{compiler-search-list})
7644 @acindex{PROG_OBJCXX}
7645 @evindex OBJCXX
7646 @evindex OBJCXXFLAGS
7647 @ovindex OBJCXX
7648 @ovindex OBJCXXFLAGS
7649 Determine an Objective C++ compiler to use.  If @code{OBJCXX} is not already
7650 set in the environment, check for Objective C++ compilers.  Set output
7651 variable @code{OBJCXX} to the name of the compiler found.
7653 This macro may, however, be invoked with an optional first argument
7654 which, if specified, must be a blank-separated list of Objective C++ compilers
7655 to search for.  This just gives the user an opportunity to specify an
7656 alternative search list for the Objective C++ compiler.  For example, if you
7657 didn't like the default order, then you could invoke @code{AC_PROG_OBJCXX}
7658 like this:
7660 @example
7661 AC_PROG_OBJCXX([gcc g++ objcc++ objcxx])
7662 @end example
7664 If using the GNU Objective C++ compiler, set shell variable
7665 @code{GOBJCXX} to @samp{yes}.  If output variable @code{OBJCXXFLAGS} was not
7666 already set, set it to @option{-g -O2} for the GNU Objective C++
7667 compiler (@option{-O2} on systems where @command{gcc} does not accept
7668 @option{-g}), or @option{-g} for other compilers.
7669 @end defmac
7671 @defmac AC_PROG_OBJCXXCPP
7672 @acindex{PROG_OBJCXXCPP}
7673 @evindex OBJCXXCPP
7674 @ovindex OBJCXXCPP
7675 Set output variable @code{OBJCXXCPP} to a command that runs the Objective C++
7676 preprocessor.  If @samp{$OBJCXX -E} doesn't work, @file{/lib/cpp} is used.
7677 @end defmac
7680 @node Erlang Compiler and Interpreter
7681 @subsection Erlang Compiler and Interpreter Characteristics
7682 @cindex Erlang
7684 Autoconf defines the following macros for determining paths to the essential
7685 Erlang/OTP programs:
7687 @defmac AC_ERLANG_PATH_ERLC (@ovar{value-if-not-found}, @dvar{path, $PATH})
7688 @acindex{ERLANG_PATH_ERLC}
7689 @evindex ERLC
7690 @evindex ERLCFLAGS
7691 @ovindex ERLC
7692 @ovindex ERLCFLAGS
7693 Determine an Erlang compiler to use.  If @code{ERLC} is not already set in the
7694 environment, check for @command{erlc}.  Set output variable @code{ERLC} to the
7695 complete path of the compiler command found.  In addition, if @code{ERLCFLAGS}
7696 is not set in the environment, set it to an empty value.
7698 The two optional arguments have the same meaning as the two last arguments of
7699 macro @code{AC_PROG_PATH} for looking for the @command{erlc} program.  For
7700 example, to look for @command{erlc} only in the @file{/usr/lib/erlang/bin}
7701 directory:
7703 @example
7704 AC_ERLANG_PATH_ERLC([not found], [/usr/lib/erlang/bin])
7705 @end example
7706 @end defmac
7708 @defmac AC_ERLANG_NEED_ERLC (@dvar{path, $PATH})
7709 @acindex{ERLANG_NEED_ERLC}
7710 A simplified variant of the @code{AC_ERLANG_PATH_ERLC} macro, that prints an
7711 error message and exits the @command{configure} script if the @command{erlc}
7712 program is not found.
7713 @end defmac
7715 @defmac AC_ERLANG_PATH_ERL (@ovar{value-if-not-found}, @dvar{path, $PATH})
7716 @acindex{ERLANG_PATH_ERL}
7717 @evindex ERL
7718 @ovindex ERL
7719 Determine an Erlang interpreter to use.  If @code{ERL} is not already
7720 set in the
7721 environment, check for @command{erl}.  Set output variable @code{ERL} to the
7722 complete path of the interpreter command found.
7724 The two optional arguments have the same meaning as the two last arguments of
7725 macro @code{AC_PROG_PATH} for looking for the @command{erl} program.  For
7726 example, to look for @command{erl} only in the @file{/usr/lib/erlang/bin}
7727 directory:
7729 @example
7730 AC_ERLANG_PATH_ERL([not found], [/usr/lib/erlang/bin])
7731 @end example
7732 @end defmac
7734 @defmac AC_ERLANG_NEED_ERL (@dvar{path, $PATH})
7735 @acindex{ERLANG_NEED_ERL}
7736 A simplified variant of the @code{AC_ERLANG_PATH_ERL} macro, that prints an
7737 error message and exits the @command{configure} script if the @command{erl}
7738 program is not found.
7739 @end defmac
7742 @node Fortran Compiler
7743 @subsection Fortran Compiler Characteristics
7744 @cindex Fortran
7745 @cindex F77
7747 The Autoconf Fortran support is divided into two categories: legacy
7748 Fortran 77 macros (@code{F77}), and modern Fortran macros (@code{FC}).
7749 The former are intended for traditional Fortran 77 code, and have output
7750 variables like @code{F77}, @code{FFLAGS}, and @code{FLIBS}.  The latter
7751 are for newer programs that can (or must) compile under the newer
7752 Fortran standards, and have output variables like @code{FC},
7753 @code{FCFLAGS}, and @code{FCLIBS}.
7755 Except for the macros @code{AC_FC_SRCEXT}, @code{AC_FC_FREEFORM},
7756 @code{AC_FC_FIXEDFORM}, and @code{AC_FC_LINE_LENGTH} (see below), the
7757 @code{FC} and @code{F77} macros behave almost identically, and so they
7758 are documented together in this section.
7761 @defmac AC_PROG_F77 (@ovar{compiler-search-list})
7762 @acindex{PROG_F77}
7763 @evindex F77
7764 @evindex FFLAGS
7765 @ovindex F77
7766 @ovindex FFLAGS
7767 Determine a Fortran 77 compiler to use.  If @code{F77} is not already
7768 set in the environment, then check for @code{g77} and @code{f77}, and
7769 then some other names.  Set the output variable @code{F77} to the name
7770 of the compiler found.
7772 This macro may, however, be invoked with an optional first argument
7773 which, if specified, must be a blank-separated list of Fortran 77
7774 compilers to search for.  This just gives the user an opportunity to
7775 specify an alternative search list for the Fortran 77 compiler.  For
7776 example, if you didn't like the default order, then you could invoke
7777 @code{AC_PROG_F77} like this:
7779 @example
7780 AC_PROG_F77([fl32 f77 fort77 xlf g77 f90 xlf90])
7781 @end example
7783 If using @code{g77} (the GNU Fortran 77 compiler), then
7784 set the shell variable @code{G77} to @samp{yes}.
7785 If the output variable @code{FFLAGS} was not already set in the
7786 environment, then set it to @option{-g -02} for @code{g77} (or @option{-O2}
7787 where @code{g77} does not accept @option{-g}).  Otherwise, set
7788 @code{FFLAGS} to @option{-g} for all other Fortran 77 compilers.
7789 @end defmac
7791 @defmac AC_PROG_FC (@ovar{compiler-search-list}, @ovar{dialect})
7792 @acindex{PROG_FC}
7793 @evindex FC
7794 @evindex FCFLAGS
7795 @ovindex FC
7796 @ovindex FCFLAGS
7797 Determine a Fortran compiler to use.  If @code{FC} is not already set in
7798 the environment, then @code{dialect} is a hint to indicate what Fortran
7799 dialect to search for; the default is to search for the newest available
7800 dialect.  Set the output variable @code{FC} to the name of the compiler
7801 found.
7803 By default, newer dialects are preferred over older dialects, but if
7804 @code{dialect} is specified then older dialects are preferred starting
7805 with the specified dialect.  @code{dialect} can currently be one of
7806 Fortran 77, Fortran 90, or Fortran 95.  However, this is only a hint of
7807 which compiler @emph{name} to prefer (e.g., @code{f90} or @code{f95}),
7808 and no attempt is made to guarantee that a particular language standard
7809 is actually supported.  Thus, it is preferable that you avoid the
7810 @code{dialect} option, and use AC_PROG_FC only for code compatible with
7811 the latest Fortran standard.
7813 This macro may, alternatively, be invoked with an optional first argument
7814 which, if specified, must be a blank-separated list of Fortran
7815 compilers to search for, just as in @code{AC_PROG_F77}.
7817 If the output variable @code{FCFLAGS} was not already set in the
7818 environment, then set it to @option{-g -02} for GNU @code{g77} (or
7819 @option{-O2} where @code{g77} does not accept @option{-g}).  Otherwise,
7820 set @code{FCFLAGS} to @option{-g} for all other Fortran compilers.
7821 @end defmac
7823 @defmac AC_PROG_F77_C_O
7824 @defmacx AC_PROG_FC_C_O
7825 @acindex{PROG_F77_C_O}
7826 @acindex{PROG_FC_C_O}
7827 @cvindex F77_NO_MINUS_C_MINUS_O
7828 @cvindex FC_NO_MINUS_C_MINUS_O
7829 Test whether the Fortran compiler accepts the options @option{-c} and
7830 @option{-o} simultaneously, and define @code{F77_NO_MINUS_C_MINUS_O} or
7831 @code{FC_NO_MINUS_C_MINUS_O}, respectively, if it does not.
7832 @end defmac
7834 The following macros check for Fortran compiler characteristics.
7835 To check for characteristics not listed here, use
7836 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
7837 @code{AC_RUN_IFELSE} (@pxref{Runtime}), making sure to first set the
7838 current language to Fortran 77 or Fortran via @code{AC_LANG([Fortran 77])}
7839 or @code{AC_LANG(Fortran)} (@pxref{Language Choice}).
7842 @defmac AC_F77_LIBRARY_LDFLAGS
7843 @defmacx AC_FC_LIBRARY_LDFLAGS
7844 @acindex{F77_LIBRARY_LDFLAGS}
7845 @ovindex FLIBS
7846 @acindex{FC_LIBRARY_LDFLAGS}
7847 @ovindex FCLIBS
7848 Determine the linker flags (e.g., @option{-L} and @option{-l}) for the
7849 @dfn{Fortran intrinsic and runtime libraries} that are required to
7850 successfully link a Fortran program or shared library.  The output
7851 variable @code{FLIBS} or @code{FCLIBS} is set to these flags (which
7852 should be included after @code{LIBS} when linking).
7854 This macro is intended to be used in those situations when it is
7855 necessary to mix, e.g., C++ and Fortran source code in a single
7856 program or shared library (@pxref{Mixing Fortran 77 With C and C++, , ,
7857 automake, GNU Automake}).
7859 For example, if object files from a C++ and Fortran compiler must be
7860 linked together, then the C++ compiler/linker must be used for linking
7861 (since special C++-ish things need to happen at link time like calling
7862 global constructors, instantiating templates, enabling exception
7863 support, etc.).
7865 However, the Fortran intrinsic and runtime libraries must be linked in
7866 as well, but the C++ compiler/linker doesn't know by default how to add
7867 these Fortran 77 libraries.  Hence, this macro was created to determine
7868 these Fortran libraries.
7870 The macros @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
7871 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} are probably also necessary to
7872 link C/C++ with Fortran; see below.  Further, it is highly recommended
7873 that you use @code{AC_CONFIG_HEADERS} (@pxref{Configuration Headers})
7874 because the complex defines that the function wrapper macros create
7875 may not work with C/C++ compiler drivers.
7876 @end defmac
7878 @defmac AC_F77_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
7879 @defmacx AC_FC_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
7880 @acindex{F77_DUMMY_MAIN}
7881 @cvindex F77_DUMMY_MAIN
7882 With many compilers, the Fortran libraries detected by
7883 @code{AC_F77_LIBRARY_LDFLAGS} or @code{AC_FC_LIBRARY_LDFLAGS} provide
7884 their own @code{main} entry function that initializes things like
7885 Fortran I/O, and which then calls a user-provided entry function named
7886 (say) @code{MAIN__} to run the user's program.  The
7887 @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
7888 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros figure out how to deal with
7889 this interaction.
7891 When using Fortran for purely numerical functions (no I/O, etc.)@: often
7892 one prefers to provide one's own @code{main} and skip the Fortran
7893 library initializations.  In this case, however, one may still need to
7894 provide a dummy @code{MAIN__} routine in order to prevent linking errors
7895 on some systems.  @code{AC_F77_DUMMY_MAIN} or @code{AC_FC_DUMMY_MAIN}
7896 detects whether any such routine is @emph{required} for linking, and
7897 what its name is; the shell variable @code{F77_DUMMY_MAIN} or
7898 @code{FC_DUMMY_MAIN} holds this name, @code{unknown} when no solution
7899 was found, and @code{none} when no such dummy main is needed.
7901 By default, @var{action-if-found} defines @code{F77_DUMMY_MAIN} or
7902 @code{FC_DUMMY_MAIN} to the name of this routine (e.g., @code{MAIN__})
7903 @emph{if} it is required.  @var{action-if-not-found} defaults to
7904 exiting with an error.
7906 In order to link with Fortran routines, the user's C/C++ program should
7907 then include the following code to define the dummy main if it is
7908 needed:
7910 @example
7911 @c If you change this example, adjust tests/fortran.at:AC_F77_DUMMY_MAIN usage.
7912 #ifdef F77_DUMMY_MAIN
7913 #  ifdef __cplusplus
7914      extern "C"
7915 #  endif
7916    int F77_DUMMY_MAIN () @{ return 1; @}
7917 #endif
7918 @end example
7920 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
7922 Note that this macro is called automatically from @code{AC_F77_WRAPPERS}
7923 or @code{AC_FC_WRAPPERS}; there is generally no need to call it
7924 explicitly unless one wants to change the default actions.
7925 @end defmac
7927 @defmac AC_F77_MAIN
7928 @defmacx AC_FC_MAIN
7929 @acindex{F77_MAIN}
7930 @cvindex F77_MAIN
7931 @acindex{FC_MAIN}
7932 @cvindex FC_MAIN
7933 As discussed above, many Fortran libraries allow you to provide an entry
7934 point called (say) @code{MAIN__} instead of the usual @code{main}, which
7935 is then called by a @code{main} function in the Fortran libraries that
7936 initializes things like Fortran I/O@.  The
7937 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros detect whether it is
7938 @emph{possible} to utilize such an alternate main function, and defines
7939 @code{F77_MAIN} and @code{FC_MAIN} to the name of the function.  (If no
7940 alternate main function name is found, @code{F77_MAIN} and @code{FC_MAIN} are
7941 simply defined to @code{main}.)
7943 Thus, when calling Fortran routines from C that perform things like I/O,
7944 one should use this macro and declare the "main" function like so:
7946 @example
7947 @c If you change this example, adjust tests/fortran.at:AC_F77_DUMMY_MAIN usage.
7948 #ifdef __cplusplus
7949   extern "C"
7950 #endif
7951 int F77_MAIN (int argc, char *argv[]);
7952 @end example
7954 (Again, replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
7955 @end defmac
7957 @defmac AC_F77_WRAPPERS
7958 @defmacx AC_FC_WRAPPERS
7959 @acindex{F77_WRAPPERS}
7960 @cvindex F77_FUNC
7961 @cvindex F77_FUNC_
7962 @acindex{FC_WRAPPERS}
7963 @cvindex FC_FUNC
7964 @cvindex FC_FUNC_
7965 Defines C macros @code{F77_FUNC (name, NAME)}, @code{FC_FUNC (name, NAME)},
7966 @code{F77_FUNC_(name, NAME)}, and @code{FC_FUNC_(name, NAME)} to properly
7967 mangle the names of C/C++ identifiers, and identifiers with underscores,
7968 respectively, so that they match the name-mangling scheme used by the
7969 Fortran compiler.
7971 Fortran is case-insensitive, and in order to achieve this the Fortran
7972 compiler converts all identifiers into a canonical case and format.  To
7973 call a Fortran subroutine from C or to write a C function that is
7974 callable from Fortran, the C program must explicitly use identifiers in
7975 the format expected by the Fortran compiler.  In order to do this, one
7976 simply wraps all C identifiers in one of the macros provided by
7977 @code{AC_F77_WRAPPERS} or @code{AC_FC_WRAPPERS}.  For example, suppose
7978 you have the following Fortran 77 subroutine:
7980 @example
7981 @c If you change this example, adjust tests/fortran.at:AC_F77_DUMMY_MAIN usage.
7982       subroutine foobar (x, y)
7983       double precision x, y
7984       y = 3.14159 * x
7985       return
7986       end
7987 @end example
7989 You would then declare its prototype in C or C++ as:
7991 @example
7992 @c If you change this example, adjust tests/fortran.at:AC_F77_DUMMY_MAIN usage.
7993 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
7994 #ifdef __cplusplus
7995 extern "C"  /* prevent C++ name mangling */
7996 #endif
7997 void FOOBAR_F77 (double *x, double *y);
7998 @end example
8000 Note that we pass both the lowercase and uppercase versions of the
8001 function name to @code{F77_FUNC} so that it can select the right one.
8002 Note also that all parameters to Fortran 77 routines are passed as
8003 pointers (@pxref{Mixing Fortran 77 With C and C++, , , automake, GNU
8004 Automake}).
8006 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
8008 Although Autoconf tries to be intelligent about detecting the
8009 name-mangling scheme of the Fortran compiler, there may be Fortran
8010 compilers that it doesn't support yet.  In this case, the above code
8011 generates a compile-time error, but some other behavior
8012 (e.g., disabling Fortran-related features) can be induced by checking
8013 whether @code{F77_FUNC} or @code{FC_FUNC} is defined.
8015 Now, to call that routine from a C program, we would do something like:
8017 @example
8018 @c If you change this example, adjust tests/fortran.at:AC_F77_DUMMY_MAIN usage.
8020     double x = 2.7183, y;
8021     FOOBAR_F77 (&x, &y);
8023 @end example
8025 If the Fortran identifier contains an underscore (e.g., @code{foo_bar}),
8026 you should use @code{F77_FUNC_} or @code{FC_FUNC_} instead of
8027 @code{F77_FUNC} or @code{FC_FUNC} (with the same arguments).  This is
8028 because some Fortran compilers mangle names differently if they contain
8029 an underscore.
8030 @end defmac
8032 @defmac AC_F77_FUNC (@var{name}, @ovar{shellvar})
8033 @defmacx AC_FC_FUNC (@var{name}, @ovar{shellvar})
8034 @acindex{F77_FUNC}
8035 @acindex{FC_FUNC}
8036 Given an identifier @var{name}, set the shell variable @var{shellvar} to
8037 hold the mangled version @var{name} according to the rules of the
8038 Fortran linker (see also @code{AC_F77_WRAPPERS} or
8039 @code{AC_FC_WRAPPERS}).  @var{shellvar} is optional; if it is not
8040 supplied, the shell variable is simply @var{name}.  The purpose of
8041 this macro is to give the caller a way to access the name-mangling
8042 information other than through the C preprocessor as above, for example,
8043 to call Fortran routines from some language other than C/C++.
8044 @end defmac
8046 @defmac AC_FC_SRCEXT (@var{ext}, @ovar{action-if-success}, @
8047   @ovar{action-if-failure})
8048 @acindex{FC_SRCEXT}
8049 By default, the @code{FC} macros perform their tests using a @file{.f}
8050 extension for source-code files.  Some compilers, however, only enable
8051 newer language features for appropriately named files, e.g., Fortran 90
8052 features only for @file{.f90} files.  On the other hand, some other
8053 compilers expect all source files to end in @file{.f} and require
8054 special flags to support other file name extensions.  The
8055 @code{AC_FC_SRCEXT} macro deals with both of these issues.
8057 The @code{AC_FC_SRCEXT} tries to get the @code{FC} compiler to accept files
8058 ending with the extension .@var{ext} (i.e., @var{ext} does @emph{not}
8059 contain the dot).  If any special compiler flags are needed for this, it
8060 stores them in the output variable @code{FCFLAGS_}@var{ext}.  This
8061 extension and these flags are then used for all subsequent @code{FC} tests
8062 (until @code{AC_FC_SRCEXT} is called again).
8064 For example, you would use @code{AC_FC_SRCEXT(f90)} to employ the
8065 @file{.f90} extension in future tests, and it would set the
8066 @code{FCFLAGS_f90} output variable with any extra flags that are needed
8067 to compile such files.
8069 The @code{FCFLAGS_}@var{ext} can @emph{not} be simply absorbed into
8070 @code{FCFLAGS}, for two reasons based on the limitations of some
8071 compilers.  First, only one @code{FCFLAGS_}@var{ext} can be used at a
8072 time, so files with different extensions must be compiled separately.
8073 Second, @code{FCFLAGS_}@var{ext} must appear @emph{immediately} before
8074 the source-code file name when compiling.  So, continuing the example
8075 above, you might compile a @file{foo.f90} file in your makefile with the
8076 command:
8078 @example
8079 foo.o: foo.f90
8080      $(FC) -c $(FCFLAGS) $(FCFLAGS_f90) '$(srcdir)/foo.f90'
8081 @end example
8083 If @code{AC_FC_SRCEXT} succeeds in compiling files with the @var{ext}
8084 extension, it calls @var{action-if-success} (defaults to nothing).  If
8085 it fails, and cannot find a way to make the @code{FC} compiler accept such
8086 files, it calls @var{action-if-failure} (defaults to exiting with an
8087 error message).
8089 @end defmac
8091 @defmac AC_FC_FREEFORM (@ovar{action-if-success}, @ovar{action-if-failure})
8092 @acindex{FC_FREEFORM}
8094 The @code{AC_FC_FREEFORM} tries to ensure that the Fortran compiler
8095 (@code{$FC}) allows free-format source code (as opposed to the older
8096 fixed-format style from Fortran 77).  If necessary, it may add some
8097 additional flags to @code{FCFLAGS}.
8099 This macro is most important if you are using the default @file{.f}
8100 extension, since many compilers interpret this extension as indicating
8101 fixed-format source unless an additional flag is supplied.  If you
8102 specify a different extension with @code{AC_FC_SRCEXT}, such as
8103 @file{.f90}, then @code{AC_FC_FREEFORM} ordinarily succeeds without
8104 modifying @code{FCFLAGS}.  For extensions which the compiler does not
8105 know about, the flag set by the @code{AC_FC_SRCEXT} macro might let
8106 the compiler assume Fortran 77 by default, however.
8108 If @code{AC_FC_FREEFORM} succeeds in compiling free-form source, it
8109 calls @var{action-if-success} (defaults to nothing).  If it fails, it
8110 calls @var{action-if-failure} (defaults to exiting with an error
8111 message).
8112 @end defmac
8114 @defmac AC_FC_FIXEDFORM (@ovar{action-if-success}, @ovar{action-if-failure})
8115 @acindex{FC_FIXEDFORM}
8117 The @code{AC_FC_FIXEDFORM} tries to ensure that the Fortran compiler
8118 (@code{$FC}) allows the old fixed-format source code (as opposed to
8119 free-format style).  If necessary, it may add some additional flags to
8120 @code{FCFLAGS}.
8122 This macro is needed for some compilers alias names like @command{xlf95}
8123 which assume free-form source code by default, and in case you want to
8124 use fixed-form source with an extension like @file{.f90} which many
8125 compilers interpret as free-form by default.  If you specify a different
8126 extension with @code{AC_FC_SRCEXT}, such as @file{.f}, then
8127 @code{AC_FC_FIXEDFORM} ordinarily succeeds without modifying
8128 @code{FCFLAGS}.
8130 If @code{AC_FC_FIXEDFORM} succeeds in compiling fixed-form source, it
8131 calls @var{action-if-success} (defaults to nothing).  If it fails, it
8132 calls @var{action-if-failure} (defaults to exiting with an error
8133 message).
8134 @end defmac
8136 @defmac AC_FC_LINE_LENGTH (@ovar{length}, @ovar{action-if-success}, @
8137   @ovar{action-if-failure})
8138 @acindex{FC_LINE_LENGTH}
8140 The @code{AC_FC_LINE_LENGTH} macro tries to ensure that the Fortran compiler
8141 (@code{$FC}) accepts long source code lines.  The @var{length} argument
8142 may be given as 80, 132, or unlimited, and defaults to 132.  Note that
8143 line lengths above 254 columns are not portable, and some compilers
8144 do not accept more than 132 columns at least for fixed format source.
8145 If necessary, it may add some additional flags to @code{FCFLAGS}.
8147 If @code{AC_FC_LINE_LENGTH} succeeds in compiling fixed-form source, it
8148 calls @var{action-if-success} (defaults to nothing).  If it fails, it
8149 calls @var{action-if-failure} (defaults to exiting with an error
8150 message).
8151 @end defmac
8154 @node System Services
8155 @section System Services
8157 The following macros check for operating system services or capabilities.
8159 @anchor{AC_PATH_X}
8160 @defmac AC_PATH_X
8161 @acindex{PATH_X}
8162 @evindex XMKMF
8163 @cindex X Window System
8164 Try to locate the X Window System include files and libraries.  If the
8165 user gave the command line options @option{--x-includes=@var{dir}} and
8166 @option{--x-libraries=@var{dir}}, use those directories.
8168 If either or both were not given, get the missing values by running
8169 @code{xmkmf} (or an executable pointed to by the @code{XMKMF}
8170 environment variable) on a trivial @file{Imakefile} and examining the
8171 makefile that it produces.  Setting @code{XMKMF} to @samp{false}
8172 disables this method.
8174 If this method fails to find the X Window System, @command{configure}
8175 looks for the files in several directories where they often reside.
8176 If either method is successful, set the shell variables
8177 @code{x_includes} and @code{x_libraries} to their locations, unless they
8178 are in directories the compiler searches by default.
8180 If both methods fail, or the user gave the command line option
8181 @option{--without-x}, set the shell variable @code{no_x} to @samp{yes};
8182 otherwise set it to the empty string.
8183 @end defmac
8185 @anchor{AC_PATH_XTRA}
8186 @defmac AC_PATH_XTRA
8187 @acindex{PATH_XTRA}
8188 @ovindex X_CFLAGS
8189 @ovindex X_LIBS
8190 @ovindex X_EXTRA_LIBS
8191 @ovindex X_PRE_LIBS
8192 @cvindex X_DISPLAY_MISSING
8193 An enhanced version of @code{AC_PATH_X}.  It adds the C compiler flags
8194 that X needs to output variable @code{X_CFLAGS}, and the X linker flags
8195 to @code{X_LIBS}.  Define @code{X_DISPLAY_MISSING} if X is not
8196 available.
8198 This macro also checks for special libraries that some systems need in
8199 order to compile X programs.  It adds any that the system needs to
8200 output variable @code{X_EXTRA_LIBS}.  And it checks for special X11R6
8201 libraries that need to be linked with before @option{-lX11}, and adds
8202 any found to the output variable @code{X_PRE_LIBS}.
8204 @c This is an incomplete kludge.  Make a real way to do it.
8205 @c If you need to check for other X functions or libraries yourself, then
8206 @c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
8207 @c @code{LIBS} temporarily, like this: (FIXME - add example)
8208 @end defmac
8210 @anchor{AC_SYS_INTERPRETER}
8211 @defmac AC_SYS_INTERPRETER
8212 @acindex{SYS_INTERPRETER}
8213 Check whether the system supports starting scripts with a line of the
8214 form @samp{#!/bin/sh} to select the interpreter to use for the script.
8215 After running this macro, shell code in @file{configure.ac} can check
8216 the shell variable @code{interpval}; it is set to @samp{yes}
8217 if the system supports @samp{#!}, @samp{no} if not.
8218 @end defmac
8220 @defmac AC_SYS_LARGEFILE
8221 @acindex{SYS_LARGEFILE}
8222 @cvindex _FILE_OFFSET_BITS
8223 @cvindex _LARGE_FILES
8224 @ovindex CC
8225 @cindex Large file support
8226 @cindex LFS
8227 Arrange for 64-bit file offsets, known as
8228 @uref{http://@/www.unix-systems@/.org/@/version2/@/whatsnew/@/lfs20mar.html,
8229 large-file support}.  On some hosts, one must use special compiler
8230 options to build programs that can access large files.  Append any such
8231 options to the output variable @code{CC}.  Define
8232 @code{_FILE_OFFSET_BITS} and @code{_LARGE_FILES} if necessary.
8234 Large-file support can be disabled by configuring with the
8235 @option{--disable-largefile} option.
8237 If you use this macro, check that your program works even when
8238 @code{off_t} is wider than @code{long int}, since this is common when
8239 large-file support is enabled.  For example, it is not correct to print
8240 an arbitrary @code{off_t} value @code{X} with @code{printf ("%ld",
8241 (long int) X)}.
8243 The LFS introduced the @code{fseeko} and @code{ftello} functions to
8244 replace their C counterparts @code{fseek} and @code{ftell} that do not
8245 use @code{off_t}.  Take care to use @code{AC_FUNC_FSEEKO} to make their
8246 prototypes available when using them and large-file support is
8247 enabled.
8248 @end defmac
8250 @anchor{AC_SYS_LONG_FILE_NAMES}
8251 @defmac AC_SYS_LONG_FILE_NAMES
8252 @acindex{SYS_LONG_FILE_NAMES}
8253 @cvindex HAVE_LONG_FILE_NAMES
8254 If the system supports file names longer than 14 characters, define
8255 @code{HAVE_LONG_FILE_NAMES}.
8256 @end defmac
8258 @defmac AC_SYS_POSIX_TERMIOS
8259 @acindex{SYS_POSIX_TERMIOS}
8260 @cindex Posix termios headers
8261 @cindex termios Posix headers
8262 @caindex sys_posix_termios
8263 Check to see if the Posix termios headers and functions are available on the
8264 system.  If so, set the shell variable @code{ac_cv_sys_posix_termios} to
8265 @samp{yes}.  If not, set the variable to @samp{no}.
8266 @end defmac
8268 @node Posix Variants
8269 @section Posix Variants
8271 The following macro makes it possible to use features of Posix that are
8272 extensions to C, as well as platform extensions not defined by Posix.
8274 @anchor{AC_USE_SYSTEM_EXTENSIONS}
8275 @defmac AC_USE_SYSTEM_EXTENSIONS
8276 @acindex{USE_SYSTEM_EXTENSIONS}
8277 @cvindex _ALL_SOURCE
8278 @cvindex _GNU_SOURCE
8279 @cvindex _MINIX
8280 @cvindex _POSIX_1_SOURCE
8281 @cvindex _POSIX_PTHREAD_SEMANTICS
8282 @cvindex _POSIX_SOURCE
8283 @cvindex _TANDEM_SOURCE
8284 @cvindex __EXTENSIONS__
8285 This macro was introduced in Autoconf 2.60.  If possible, enable
8286 extensions to C or Posix on hosts that normally disable the extensions,
8287 typically due to standards-conformance namespace issues.  This should be
8288 called before any macros that run the C compiler.  The following
8289 preprocessor macros are defined where appropriate:
8291 @table @code
8292 @item _GNU_SOURCE
8293 Enable extensions on GNU/Linux.
8294 @item __EXTENSIONS__
8295 Enable general extensions on Solaris.
8296 @item _POSIX_PTHREAD_SEMANTICS
8297 Enable threading extensions on Solaris.
8298 @item _TANDEM_SOURCE
8299 Enable extensions for the HP NonStop platform.
8300 @item _ALL_SOURCE
8301 Enable extensions for AIX 3, and for Interix.
8302 @item _POSIX_SOURCE
8303 Enable Posix functions for Minix.
8304 @item _POSIX_1_SOURCE
8305 Enable additional Posix functions for Minix.
8306 @item _MINIX
8307 Identify Minix platform.  This particular preprocessor macro is
8308 obsolescent, and may be removed in a future release of Autoconf.
8309 @end table
8310 @end defmac
8313 @node Erlang Libraries
8314 @section Erlang Libraries
8315 @cindex Erlang, Library, checking
8317 The following macros check for an installation of Erlang/OTP, and for the
8318 presence of certain Erlang libraries.  All those macros require the
8319 configuration of an Erlang interpreter and an Erlang compiler
8320 (@pxref{Erlang Compiler and Interpreter}).
8322 @defmac AC_ERLANG_SUBST_ERTS_VER
8323 @acindex{ERLANG_SUBST_ERTS_VER}
8324 @ovindex ERLANG_ERTS_VER
8325 Set the output variable @code{ERLANG_ERTS_VER} to the version of the
8326 Erlang runtime system (as returned by Erlang's
8327 @code{erlang:system_info(version)} function).  The result of this test
8328 is cached if caching is enabled when running @command{configure}.  The
8329 @code{ERLANG_ERTS_VER} variable is not intended to be used for testing
8330 for features of specific ERTS versions, but to be used for substituting
8331 the ERTS version in Erlang/OTP release resource files (@code{.rel}
8332 files), as shown below.
8333 @end defmac
8335 @defmac AC_ERLANG_SUBST_ROOT_DIR
8336 @acindex{ERLANG_SUBST_ROOT_DIR}
8337 @ovindex ERLANG_ROOT_DIR
8338 Set the output variable @code{ERLANG_ROOT_DIR} to the path to the base
8339 directory in which Erlang/OTP is installed (as returned by Erlang's
8340 @code{code:root_dir/0} function).  The result of this test is cached if
8341 caching is enabled when running @command{configure}.
8342 @end defmac
8344 @defmac AC_ERLANG_SUBST_LIB_DIR
8345 @acindex{ERLANG_SUBST_LIB_DIR}
8346 @ovindex ERLANG_LIB_DIR
8347 Set the output variable @code{ERLANG_LIB_DIR} to the path of the library
8348 directory of Erlang/OTP (as returned by Erlang's
8349 @code{code:lib_dir/0} function), which subdirectories each contain an installed
8350 Erlang/OTP library.  The result of this test is cached if caching is enabled
8351 when running @command{configure}.
8352 @end defmac
8354 @defmac AC_ERLANG_CHECK_LIB (@var{library}, @ovar{action-if-found}, @
8355   @ovar{action-if-not-found})
8356 @acindex{ERLANG_CHECK_LIB}
8357 @ovindex ERLANG_LIB_DIR_@var{library}
8358 @ovindex ERLANG_LIB_VER_@var{library}
8359 Test whether the Erlang/OTP library @var{library} is installed by
8360 calling Erlang's @code{code:lib_dir/1} function.  The result of this
8361 test is cached if caching is enabled when running @command{configure}.
8362 @var{action-if-found} is a list of shell commands to run if the library
8363 is installed; @var{action-if-not-found} is a list of shell commands to
8364 run if it is not.  Additionally, if the library is installed, the output
8365 variable @samp{ERLANG_LIB_DIR_@var{library}} is set to the path to the
8366 library installation directory, and the output variable
8367 @samp{ERLANG_LIB_VER_@var{library}} is set to the version number that is
8368 part of the subdirectory name, if it is in the standard form
8369 (@code{@var{library}-@var{version}}).  If the directory name does not
8370 have a version part, @samp{ERLANG_LIB_VER_@var{library}} is set to the
8371 empty string.  If the library is not installed,
8372 @samp{ERLANG_LIB_DIR_@var{library}} and
8373 @samp{ERLANG_LIB_VER_@var{library}} are set to @code{"not found"}.  For
8374 example, to check if library @code{stdlib} is installed:
8376 @example
8377 AC_ERLANG_CHECK_LIB([stdlib],
8378   [echo "stdlib version \"$ERLANG_LIB_VER_stdlib\""
8379    echo "is installed in \"$ERLANG_LIB_DIR_stdlib\""],
8380   [AC_MSG_ERROR([stdlib was not found!])])
8381 @end example
8383 The @samp{ERLANG_LIB_VER_@var{library}} variables (set by
8384 @code{AC_ERLANG_CHECK_LIB}) and the @code{ERLANG_ERTS_VER} variable (set
8385 by @code{AC_ERLANG_SUBST_ERTS_VER}) are not intended to be used for
8386 testing for features of specific versions of libraries or of the Erlang
8387 runtime system.  Those variables are intended to be substituted in
8388 Erlang release resource files (@code{.rel} files).  For instance, to
8389 generate a @file{example.rel} file for an application depending on the
8390 @code{stdlib} library, @file{configure.ac} could contain:
8392 @example
8393 AC_ERLANG_SUBST_ERTS_VER
8394 AC_ERLANG_CHECK_LIB([stdlib],
8395   [],
8396   [AC_MSG_ERROR([stdlib was not found!])])
8397 AC_CONFIG_FILES([example.rel])
8398 @end example
8400 @noindent
8401 The @file{example.rel.in} file used to generate @file{example.rel}
8402 should contain:
8404 @example
8405 @{release,
8406     @{"@@PACKAGE@@", "@@VERSION@@"@},
8407     @{erts, "@@ERLANG_ERTS_VER@@"@},
8408     [@{stdlib, "@@ERLANG_LIB_VER_stdlib@@"@},
8409      @{@@PACKAGE@@, "@@VERSION@@"@}]@}.
8410 @end example
8411 @end defmac
8413 In addition to the above macros, which test installed Erlang libraries, the
8414 following macros determine the paths to the directories into which newly built
8415 Erlang libraries are to be installed:
8417 @defmac AC_ERLANG_SUBST_INSTALL_LIB_DIR
8418 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
8419 @ovindex ERLANG_INSTALL_LIB_DIR
8421 Set the @code{ERLANG_INSTALL_LIB_DIR} output variable to the directory into
8422 which every built Erlang library should be installed in a separate
8423 subdirectory.
8424 If this variable is not set in the environment when @command{configure} runs,
8425 its default value is @code{$@{libdir@}/erlang/lib}.
8426 @end defmac
8428 @defmac AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR (@var{library}, @var{version})
8429 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
8430 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
8432 Set the @samp{ERLANG_INSTALL_LIB_DIR_@var{library}} output variable to the
8433 directory into which the built Erlang library @var{library} version
8434 @var{version} should be installed.  If this variable is not set in the
8435 environment when @command{configure} runs, its default value is
8436 @samp{$ERLANG_INSTALL_LIB_DIR/@var{library}-@var{version}}, the value of the
8437 @code{ERLANG_INSTALL_LIB_DIR} variable being set by the
8438 @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR} macro.
8439 @end defmac
8445 @c ========================================================= Writing Tests
8447 @node Writing Tests
8448 @chapter Writing Tests
8450 If the existing feature tests don't do something you need, you have to
8451 write new ones.  These macros are the building blocks.  They provide
8452 ways for other macros to check whether various kinds of features are
8453 available and report the results.
8455 This chapter contains some suggestions and some of the reasons why the
8456 existing tests are written the way they are.  You can also learn a lot
8457 about how to write Autoconf tests by looking at the existing ones.  If
8458 something goes wrong in one or more of the Autoconf tests, this
8459 information can help you understand the assumptions behind them, which
8460 might help you figure out how to best solve the problem.
8462 These macros check the output of the compiler system of the current
8463 language (@pxref{Language Choice}).  They do not cache the results of
8464 their tests for future use (@pxref{Caching Results}), because they don't
8465 know enough about the information they are checking for to generate a
8466 cache variable name.  They also do not print any messages, for the same
8467 reason.  The checks for particular kinds of features call these macros
8468 and do cache their results and print messages about what they're
8469 checking for.
8471 When you write a feature test that could be applicable to more than one
8472 software package, the best thing to do is encapsulate it in a new macro.
8473 @xref{Writing Autoconf Macros}, for how to do that.
8475 @menu
8476 * Language Choice::             Selecting which language to use for testing
8477 * Writing Test Programs::       Forging source files for compilers
8478 * Running the Preprocessor::    Detecting preprocessor symbols
8479 * Running the Compiler::        Detecting language or header features
8480 * Running the Linker::          Detecting library features
8481 * Runtime::                     Testing for runtime features
8482 * Systemology::                 A zoology of operating systems
8483 * Multiple Cases::              Tests for several possible values
8484 @end menu
8486 @node Language Choice
8487 @section Language Choice
8488 @cindex Language
8490 Autoconf-generated @command{configure} scripts check for the C compiler and
8491 its features by default.  Packages that use other programming languages
8492 (maybe more than one, e.g., C and C++) need to test features of the
8493 compilers for the respective languages.  The following macros determine
8494 which programming language is used in the subsequent tests in
8495 @file{configure.ac}.
8497 @anchor{AC_LANG}
8498 @defmac AC_LANG (@var{language})
8499 Do compilation tests using the compiler, preprocessor, and file
8500 extensions for the specified @var{language}.
8502 Supported languages are:
8504 @table @samp
8505 @item C
8506 Do compilation tests using @code{CC} and @code{CPP} and use extension
8507 @file{.c} for test programs.  Use compilation flags: @code{CPPFLAGS} with
8508 @code{CPP}, and both @code{CPPFLAGS} and @code{CFLAGS} with @code{CC}.
8510 @item C++
8511 Do compilation tests using @code{CXX} and @code{CXXCPP} and use
8512 extension @file{.C} for test programs.  Use compilation flags:
8513 @code{CPPFLAGS} with @code{CXXCPP}, and both @code{CPPFLAGS} and
8514 @code{CXXFLAGS} with @code{CXX}.
8516 @item Fortran 77
8517 Do compilation tests using @code{F77} and use extension @file{.f} for
8518 test programs.  Use compilation flags: @code{FFLAGS}.
8520 @item Fortran
8521 Do compilation tests using @code{FC} and use extension @file{.f} (or
8522 whatever has been set by @code{AC_FC_SRCEXT}) for test programs.  Use
8523 compilation flags: @code{FCFLAGS}.
8525 @item Erlang
8526 @ovindex ERLC
8527 @ovindex ERL
8528 @ovindex ERLCFLAGS
8529 Compile and execute tests using @code{ERLC} and @code{ERL} and use extension
8530 @file{.erl} for test Erlang modules.  Use compilation flags: @code{ERLCFLAGS}.
8532 @item Objective C
8533 Do compilation tests using @code{OBJC} and @code{OBJCPP} and use
8534 extension @file{.m} for test programs.  Use compilation flags:
8535 @code{CPPFLAGS} with @code{OBJCPP}, and both @code{CPPFLAGS} and
8536 @code{OBJCFLAGS} with @code{OBJC}.
8538 @item Objective C++
8539 Do compilation tests using @code{OBJCXX} and @code{OBJCXXCPP} and use
8540 extension @file{.mm} for test programs.  Use compilation flags:
8541 @code{CPPFLAGS} with @code{OBJCXXCPP}, and both @code{CPPFLAGS} and
8542 @code{OBJCXXFLAGS} with @code{OBJCXX}.
8543 @end table
8544 @end defmac
8546 @anchor{AC_LANG_PUSH}
8547 @defmac AC_LANG_PUSH (@var{language})
8548 @acindex{LANG_PUSH}
8549 Remember the current language (as set by @code{AC_LANG}) on a stack, and
8550 then select the @var{language}.  Use this macro and @code{AC_LANG_POP}
8551 in macros that need to temporarily switch to a particular language.
8552 @end defmac
8554 @defmac AC_LANG_POP (@ovar{language})
8555 @acindex{LANG_POP}
8556 Select the language that is saved on the top of the stack, as set by
8557 @code{AC_LANG_PUSH}, and remove it from the stack.
8559 If given, @var{language} specifies the language we just @emph{quit}.  It
8560 is a good idea to specify it when it's known (which should be the
8561 case@dots{}), since Autoconf detects inconsistencies.
8563 @example
8564 AC_LANG_PUSH([Fortran 77])
8565 # Perform some tests on Fortran 77.
8566 # @dots{}
8567 AC_LANG_POP([Fortran 77])
8568 @end example
8569 @end defmac
8571 @defmac AC_LANG_ASSERT (@var{language})
8572 @acindex{LANG_ASSERT} Check statically that the current language is
8573 @var{language}.  You should use this in your language specific macros
8574 to avoid that they be called with an inappropriate language.
8576 This macro runs only at @command{autoconf} time, and incurs no cost at
8577 @command{configure} time.  Sadly enough and because Autoconf is a two
8578 layer language @footnote{Because M4 is not aware of Sh code,
8579 especially conditionals, some optimizations that look nice statically
8580 may produce incorrect results at runtime.}, the macros
8581 @code{AC_LANG_PUSH} and @code{AC_LANG_POP} cannot be ``optimizing'',
8582 therefore as much as possible you ought to avoid using them to wrap
8583 your code, rather, require from the user to run the macro with a
8584 correct current language, and check it with @code{AC_LANG_ASSERT}.
8585 And anyway, that may help the user understand she is running a Fortran
8586 macro while expecting a result about her Fortran 77 compiler@enddots{}
8587 @end defmac
8590 @defmac AC_REQUIRE_CPP
8591 @acindex{REQUIRE_CPP}
8592 Ensure that whichever preprocessor would currently be used for tests has
8593 been found.  Calls @code{AC_REQUIRE} (@pxref{Prerequisite Macros}) with an
8594 argument of either @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP},
8595 depending on which language is current.
8596 @end defmac
8599 @node Writing Test Programs
8600 @section Writing Test Programs
8602 Autoconf tests follow a common scheme: feed some program with some
8603 input, and most of the time, feed a compiler with some source file.
8604 This section is dedicated to these source samples.
8606 @menu
8607 * Guidelines::                  General rules for writing test programs
8608 * Test Functions::              Avoiding pitfalls in test programs
8609 * Generating Sources::          Source program boilerplate
8610 @end menu
8612 @node Guidelines
8613 @subsection Guidelines for Test Programs
8615 The most important rule to follow when writing testing samples is:
8617 @center @emph{Look for realism.}
8619 This motto means that testing samples must be written with the same
8620 strictness as real programs are written.  In particular, you should
8621 avoid ``shortcuts'' and simplifications.
8623 Don't just play with the preprocessor if you want to prepare a
8624 compilation.  For instance, using @command{cpp} to check whether a header is
8625 functional might let your @command{configure} accept a header which
8626 causes some @emph{compiler} error.  Do not hesitate to check a header with
8627 other headers included before, especially required headers.
8629 Make sure the symbols you use are properly defined, i.e., refrain from
8630 simply declaring a function yourself instead of including the proper
8631 header.
8633 Test programs should not write to standard output.  They
8634 should exit with status 0 if the test succeeds, and with status 1
8635 otherwise, so that success
8636 can be distinguished easily from a core dump or other failure;
8637 segmentation violations and other failures produce a nonzero exit
8638 status.  Unless you arrange for @code{exit} to be declared, test
8639 programs should @code{return}, not @code{exit}, from @code{main},
8640 because on many systems @code{exit} is not declared by default.
8642 Test programs can use @code{#if} or @code{#ifdef} to check the values of
8643 preprocessor macros defined by tests that have already run.  For
8644 example, if you call @code{AC_HEADER_STDBOOL}, then later on in
8645 @file{configure.ac} you can have a test program that includes
8646 @file{stdbool.h} conditionally:
8648 @example
8649 @group
8650 #ifdef HAVE_STDBOOL_H
8651 # include <stdbool.h>
8652 #endif
8653 @end group
8654 @end example
8656 Both @code{#if HAVE_STDBOOL_H} and @code{#ifdef HAVE_STDBOOL_H} will
8657 work with any standard C compiler.  Some developers prefer @code{#if}
8658 because it is easier to read, while others prefer @code{#ifdef} because
8659 it avoids diagnostics with picky compilers like GCC with the
8660 @option{-Wundef} option.
8662 If a test program needs to use or create a data file, give it a name
8663 that starts with @file{conftest}, such as @file{conftest.data}.  The
8664 @command{configure} script cleans up by running @samp{rm -f -r conftest*}
8665 after running test programs and if the script is interrupted.
8667 @node Test Functions
8668 @subsection Test Functions
8670 These days it's safe to assume support for function prototypes
8671 (introduced in C89).
8673 Functions that test programs declare should also be conditionalized for
8674 C++, which requires @samp{extern "C"} prototypes.  Make sure to not
8675 include any header files containing clashing prototypes.
8677 @example
8678 #ifdef __cplusplus
8679 extern "C"
8680 #endif
8681 void *valloc (size_t);
8682 @end example
8684 If a test program calls a function with invalid parameters (just to see
8685 whether it exists), organize the program to ensure that it never invokes
8686 that function.  You can do this by calling it in another function that is
8687 never invoked.  You can't do it by putting it after a call to
8688 @code{exit}, because GCC version 2 knows that @code{exit}
8689 never returns
8690 and optimizes out any code that follows it in the same block.
8692 If you include any header files, be sure to call the functions
8693 relevant to them with the correct number of arguments, even if they are
8694 just 0, to avoid compilation errors due to prototypes.  GCC
8695 version 2
8696 has internal prototypes for several functions that it automatically
8697 inlines; for example, @code{memcpy}.  To avoid errors when checking for
8698 them, either pass them the correct number of arguments or redeclare them
8699 with a different return type (such as @code{char}).
8702 @node Generating Sources
8703 @subsection Generating Sources
8705 Autoconf provides a set of macros that can be used to generate test
8706 source files.  They are written to be language generic, i.e., they
8707 actually depend on the current language (@pxref{Language Choice}) to
8708 ``format'' the output properly.
8711 @defmac AC_LANG_CONFTEST (@var{source})
8712 @acindex{LANG_CONFTEST}
8713 Save the @var{source} text in the current test source file:
8714 @file{conftest.@var{extension}} where the @var{extension} depends on the
8715 current language.  As of Autoconf 2.63b, the source file also contains
8716 the results of all of the @code{AC_DEFINE} performed so far.
8718 Note that the @var{source} is evaluated exactly once, like regular
8719 Autoconf macro arguments, and therefore (i) you may pass a macro
8720 invocation, (ii) if not, be sure to double quote if needed.
8721 @end defmac
8723 @defmac AC_LANG_SOURCE (@var{source})
8724 @acindex{LANG_SOURCE}
8725 Expands into the @var{source}, with the definition of
8726 all the @code{AC_DEFINE} performed so far.
8727 @end defmac
8729 For instance executing (observe the double quotation!):
8731 @example
8732 @c If you change this example, adjust tests/compile.at:AC_LANG_SOURCE example.
8733 AC_INIT([Hello], [1.0], [bug-hello@@example.org], [],
8734         [http://www.example.org/])
8735 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
8736   [Greetings string.])
8737 AC_LANG([C])
8738 AC_LANG_CONFTEST(
8739    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])])
8740 gcc -E -dD -o - conftest.c
8741 @end example
8743 @noindent
8744 on a system with @command{gcc} installed, results in:
8746 @example
8747 @c If you change this example, adjust tests/compile.at:AC_LANG_SOURCE example.
8748 @dots{}
8749 # 1 "conftest.c"
8751 #define PACKAGE_NAME "Hello"
8752 #define PACKAGE_TARNAME "hello"
8753 #define PACKAGE_VERSION "1.0"
8754 #define PACKAGE_STRING "Hello 1.0"
8755 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
8756 #define PACKAGE_URL "http://www.example.org/"
8757 #define HELLO_WORLD "Hello, World\n"
8759 const char hw[] = "Hello, World\n";
8760 @end example
8762 When the test language is Fortran or Erlang, the @code{AC_DEFINE} definitions
8763 are not automatically translated into constants in the source code by this
8764 macro.
8766 @defmac AC_LANG_PROGRAM (@var{prologue}, @var{body})
8767 @acindex{LANG_PROGRAM}
8768 Expands into a source file which consists of the @var{prologue}, and
8769 then @var{body} as body of the main function (e.g., @code{main} in
8770 C).  Since it uses @code{AC_LANG_SOURCE}, the features of the latter are
8771 available.
8772 @end defmac
8774 For instance:
8776 @example
8777 @c If you change this example, adjust tests/compile.at:AC_LANG_PROGRAM example.
8778 AC_INIT([Hello], [1.0], [bug-hello@@example.org], [],
8779         [http://www.example.org/])
8780 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
8781   [Greetings string.])
8782 AC_LANG_CONFTEST(
8783 [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
8784                  [[fputs (hw, stdout);]])])
8785 gcc -E -dD -o - conftest.c
8786 @end example
8788 @noindent
8789 on a system with @command{gcc} installed, results in:
8791 @example
8792 @c If you change this example, adjust tests/compile.at:AC_LANG_PROGRAM example.
8793 @dots{}
8794 # 1 "conftest.c"
8796 #define PACKAGE_NAME "Hello"
8797 #define PACKAGE_TARNAME "hello"
8798 #define PACKAGE_VERSION "1.0"
8799 #define PACKAGE_STRING "Hello 1.0"
8800 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
8801 #define PACKAGE_URL "http://www.example.org/"
8802 #define HELLO_WORLD "Hello, World\n"
8804 const char hw[] = "Hello, World\n";
8806 main ()
8808 fputs (hw, stdout);
8809   ;
8810   return 0;
8812 @end example
8814 In Erlang tests, the created source file is that of an Erlang module called
8815 @code{conftest} (@file{conftest.erl}).  This module defines and exports
8816 at least
8817 one @code{start/0} function, which is called to perform the test.  The
8818 @var{prologue} is optional code that is inserted between the module header and
8819 the @code{start/0} function definition.  @var{body} is the body of the
8820 @code{start/0} function without the final period (@pxref{Runtime}, about
8821 constraints on this function's behavior).
8823 For instance:
8825 @example
8826 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
8827 AC_LANG(Erlang)
8828 AC_LANG_CONFTEST(
8829 [AC_LANG_PROGRAM([[-define(HELLO_WORLD, "Hello, world!").]],
8830                  [[io:format("~s~n", [?HELLO_WORLD])]])])
8831 cat conftest.erl
8832 @end example
8834 @noindent
8835 results in:
8837 @example
8838 -module(conftest).
8839 -export([start/0]).
8840 -define(HELLO_WORLD, "Hello, world!").
8841 start() ->
8842 io:format("~s~n", [?HELLO_WORLD])
8844 @end example
8846 @defmac AC_LANG_CALL (@var{prologue}, @var{function})
8847 @acindex{LANG_CALL}
8848 Expands into a source file which consists of the @var{prologue}, and
8849 then a call to the @var{function} as body of the main function (e.g.,
8850 @code{main} in C).  Since it uses @code{AC_LANG_PROGRAM}, the feature
8851 of the latter are available.
8853 This function will probably be replaced in the future by a version
8854 which would enable specifying the arguments.  The use of this macro is
8855 not encouraged, as it violates strongly the typing system.
8857 This macro cannot be used for Erlang tests.
8858 @end defmac
8860 @defmac AC_LANG_FUNC_LINK_TRY (@var{function})
8861 @acindex{LANG_FUNC_LINK_TRY}
8862 Expands into a source file which uses the @var{function} in the body of
8863 the main function (e.g., @code{main} in C).  Since it uses
8864 @code{AC_LANG_PROGRAM}, the features of the latter are available.
8866 As @code{AC_LANG_CALL}, this macro is documented only for completeness.
8867 It is considered to be severely broken, and in the future will be
8868 removed in favor of actual function calls (with properly typed
8869 arguments).
8871 This macro cannot be used for Erlang tests.
8872 @end defmac
8874 @node Running the Preprocessor
8875 @section Running the Preprocessor
8877 Sometimes one might need to run the preprocessor on some source file.
8878 @emph{Usually it is a bad idea}, as you typically need to @emph{compile}
8879 your project, not merely run the preprocessor on it; therefore you
8880 certainly want to run the compiler, not the preprocessor.  Resist the
8881 temptation of following the easiest path.
8883 Nevertheless, if you need to run the preprocessor, then use
8884 @code{AC_PREPROC_IFELSE}.
8886 The macros described in this section cannot be used for tests in Erlang or
8887 Fortran, since those languages require no preprocessor.
8889 @anchor{AC_PREPROC_IFELSE}
8890 @defmac AC_PREPROC_IFELSE (@var{input}, @ovar{action-if-true}, @
8891   @ovar{action-if-false})
8892 @acindex{PREPROC_IFELSE}
8893 Run the preprocessor of the current language (@pxref{Language Choice})
8894 on the @var{input}, run the shell commands @var{action-if-true} on
8895 success, @var{action-if-false} otherwise.  The @var{input} can be made
8896 by @code{AC_LANG_PROGRAM} and friends.
8898 This macro uses @code{CPPFLAGS}, but not @code{CFLAGS}, because
8899 @option{-g}, @option{-O}, etc.@: are not valid options to many C
8900 preprocessors.
8902 It is customary to report unexpected failures with
8903 @code{AC_MSG_FAILURE}.
8904 @end defmac
8906 For instance:
8908 @example
8909 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
8910 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
8911   [Greetings string.])
8912 AC_PREPROC_IFELSE(
8913    [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
8914                     [[fputs (hw, stdout);]])],
8915    [AC_MSG_RESULT([OK])],
8916    [AC_MSG_FAILURE([unexpected preprocessor failure])])
8917 @end example
8919 @noindent
8920 results in:
8922 @example
8923 checking for gcc... gcc
8924 checking for C compiler default output file name... a.out
8925 checking whether the C compiler works... yes
8926 checking whether we are cross compiling... no
8927 checking for suffix of executables...
8928 checking for suffix of object files... o
8929 checking whether we are using the GNU C compiler... yes
8930 checking whether gcc accepts -g... yes
8931 checking for gcc option to accept ISO C89... none needed
8932 checking how to run the C preprocessor... gcc -E
8934 @end example
8936 @sp 1
8938 The macro @code{AC_TRY_CPP} (@pxref{Obsolete Macros}) used to play the
8939 role of @code{AC_PREPROC_IFELSE}, but double quotes its argument, making
8940 it impossible to use it to elaborate sources.  You are encouraged to
8941 get rid of your old use of the macro @code{AC_TRY_CPP} in favor of
8942 @code{AC_PREPROC_IFELSE}, but, in the first place, are you sure you need
8943 to run the @emph{preprocessor} and not the compiler?
8945 @anchor{AC_EGREP_HEADER}
8946 @defmac AC_EGREP_HEADER (@var{pattern}, @var{header-file}, @
8947   @var{action-if-found}, @ovar{action-if-not-found})
8948 @acindex{EGREP_HEADER}
8949 If the output of running the preprocessor on the system header file
8950 @var{header-file} matches the extended regular expression
8951 @var{pattern}, execute shell commands @var{action-if-found}, otherwise
8952 execute @var{action-if-not-found}.
8953 @end defmac
8955 @anchor{AC_EGREP_CPP}
8956 @defmac AC_EGREP_CPP (@var{pattern}, @var{program}, @
8957   @ovar{action-if-found}, @ovar{action-if-not-found})
8958 @acindex{EGREP_CPP}
8959 @var{program} is the text of a C or C++ program, on which shell
8960 variable, back quote, and backslash substitutions are performed.  If the
8961 output of running the preprocessor on @var{program} matches the
8962 extended regular expression @var{pattern}, execute shell commands
8963 @var{action-if-found}, otherwise execute @var{action-if-not-found}.
8964 @end defmac
8968 @node Running the Compiler
8969 @section Running the Compiler
8971 To check for a syntax feature of the current language's (@pxref{Language
8972 Choice}) compiler, such as whether it recognizes a certain keyword, or
8973 simply to try some library feature, use @code{AC_COMPILE_IFELSE} to try
8974 to compile a small program that uses that feature.
8976 @defmac AC_COMPILE_IFELSE (@var{input}, @ovar{action-if-true}, @
8977   @ovar{action-if-false})
8978 @acindex{COMPILE_IFELSE}
8979 Run the compiler and compilation flags of the current language
8980 (@pxref{Language Choice}) on the @var{input}, run the shell commands
8981 @var{action-if-true} on success, @var{action-if-false} otherwise.  The
8982 @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
8984 It is customary to report unexpected failures with
8985 @code{AC_MSG_FAILURE}.  This macro does not try to link; use
8986 @code{AC_LINK_IFELSE} if you need to do that (@pxref{Running the
8987 Linker}).  If needed, @var{action-if-true} can further access the
8988 just-compiled object file @file{conftest.$OBJEXT}.
8990 This macro uses @code{AC_REQUIRE} for the compiler associated with the
8991 current language, which means that if the compiler has not yet been
8992 determined, the compiler determination will be made prior to the body of
8993 the outermust @code{AC_DEFUN} macro that triggered this macro to
8994 expand (@pxref{Expanded Before Required}).
8995 @end defmac
8997 @ovindex ERL
8998 For tests in Erlang, the @var{input} must be the source code of a module named
8999 @code{conftest}.  @code{AC_COMPILE_IFELSE} generates a @file{conftest.beam}
9000 file that can be interpreted by the Erlang virtual machine (@code{ERL}).  It is
9001 recommended to use @code{AC_LANG_PROGRAM} to specify the test program,
9002 to ensure that the Erlang module has the right name.
9004 @node Running the Linker
9005 @section Running the Linker
9007 To check for a library, a function, or a global variable, Autoconf
9008 @command{configure} scripts try to compile and link a small program that
9009 uses it.  This is unlike Metaconfig, which by default uses @code{nm} or
9010 @code{ar} on the C library to try to figure out which functions are
9011 available.  Trying to link with the function is usually a more reliable
9012 approach because it avoids dealing with the variations in the options
9013 and output formats of @code{nm} and @code{ar} and in the location of the
9014 standard libraries.  It also allows configuring for cross-compilation or
9015 checking a function's runtime behavior if needed.  On the other hand,
9016 it can be slower than scanning the libraries once, but accuracy is more
9017 important than speed.
9019 @code{AC_LINK_IFELSE} is used to compile test programs to test for
9020 functions and global variables.  It is also used by @code{AC_CHECK_LIB}
9021 to check for libraries (@pxref{Libraries}), by adding the library being
9022 checked for to @code{LIBS} temporarily and trying to link a small
9023 program.
9025 @anchor{AC_LINK_IFELSE}
9026 @defmac AC_LINK_IFELSE (@var{input}, @ovar{action-if-true}, @
9027   @ovar{action-if-false})
9028 @acindex{LINK_IFELSE}
9029 Run the compiler (and compilation flags) and the linker of the current
9030 language (@pxref{Language Choice}) on the @var{input}, run the shell
9031 commands @var{action-if-true} on success, @var{action-if-false}
9032 otherwise.  The @var{input} can be made by @code{AC_LANG_PROGRAM} and
9033 friends.  If needed, @var{action-if-true} can further access the
9034 just-linked program file @file{conftest$EXEEXT}.
9036 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
9037 current compilation flags.
9039 It is customary to report unexpected failures with
9040 @code{AC_MSG_FAILURE}.  This macro does not try to execute the program;
9041 use @code{AC_RUN_IFELSE} if you need to do that (@pxref{Runtime}).
9042 @end defmac
9044 The @code{AC_LINK_IFELSE} macro cannot be used for Erlang tests, since Erlang
9045 programs are interpreted and do not require linking.
9049 @node Runtime
9050 @section Checking Runtime Behavior
9052 Sometimes you need to find out how a system performs at runtime, such
9053 as whether a given function has a certain capability or bug.  If you
9054 can, make such checks when your program runs instead of when it is
9055 configured.  You can check for things like the machine's endianness when
9056 your program initializes itself.
9058 If you really need to test for a runtime behavior while configuring,
9059 you can write a test program to determine the result, and compile and
9060 run it using @code{AC_RUN_IFELSE}.  Avoid running test programs if
9061 possible, because this prevents people from configuring your package for
9062 cross-compiling.
9064 @anchor{AC_RUN_IFELSE}
9065 @defmac AC_RUN_IFELSE (@var{input}, @ovar{action-if-true}, @
9066   @ovar{action-if-false}, @ovar{action-if-cross-compiling})
9067 @acindex{RUN_IFELSE}
9068 If @var{program} compiles and links successfully and returns an exit
9069 status of 0 when executed, run shell commands @var{action-if-true}.
9070 Otherwise, run shell commands @var{action-if-false}.
9072 The @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
9073 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
9074 compilation flags of the current language (@pxref{Language Choice}).
9075 Additionally, @var{action-if-true} can run @command{./conftest$EXEEXT}
9076 for further testing.
9078 If the compiler being used does not produce executables that run on the
9079 system where @command{configure} is being run, then the test program is
9080 not run.  If the optional shell commands @var{action-if-cross-compiling}
9081 are given, they are run instead.  Otherwise, @command{configure} prints
9082 an error message and exits.
9084 In the @var{action-if-false} section, the failing exit status is
9085 available in the shell variable @samp{$?}.  This exit status might be
9086 that of a failed compilation, or it might be that of a failed program
9087 execution.
9089 It is customary to report unexpected failures with
9090 @code{AC_MSG_FAILURE}.
9091 @end defmac
9093 Try to provide a pessimistic default value to use when cross-compiling
9094 makes runtime tests impossible.  You do this by passing the optional
9095 last argument to @code{AC_RUN_IFELSE}.  @command{autoconf} prints a
9096 warning message when creating @command{configure} each time it
9097 encounters a call to @code{AC_RUN_IFELSE} with no
9098 @var{action-if-cross-compiling} argument given.  You may ignore the
9099 warning, though users cannot configure your package for
9100 cross-compiling.  A few of the macros distributed with Autoconf produce
9101 this warning message.
9103 To configure for cross-compiling you can also choose a value for those
9104 parameters based on the canonical system name (@pxref{Manual
9105 Configuration}).  Alternatively, set up a test results cache file with
9106 the correct values for the host system (@pxref{Caching Results}).
9108 @ovindex cross_compiling
9109 To provide a default for calls of @code{AC_RUN_IFELSE} that are embedded
9110 in other macros, including a few of the ones that come with Autoconf,
9111 you can test whether the shell variable @code{cross_compiling} is set to
9112 @samp{yes}, and then use an alternate method to get the results instead
9113 of calling the macros.
9115 It is also permissible to temporarily assign to @code{cross_compiling}
9116 in order to force tests to behave as though they are in a
9117 cross-compilation environment, particularly since this provides a way to
9118 test your @var{action-if-cross-compiling} even when you are not using a
9119 cross-compiler.
9121 @example
9122 # We temporarily set cross-compile mode to force AC_COMPUTE_INT
9123 # to use the slow link-only method
9124 save_cross_compiling=$cross_compiling
9125 cross_compiling=yes
9126 AC_COMPUTE_INT([@dots{}])
9127 cross_compiling=$save_cross_compiling
9128 @end example
9130 A C or C++ runtime test should be portable.
9131 @xref{Portable C and C++}.
9133 Erlang tests must exit themselves the Erlang VM by calling the @code{halt/1}
9134 function: the given status code is used to determine the success of the test
9135 (status is @code{0}) or its failure (status is different than @code{0}), as
9136 explained above.  It must be noted that data output through the standard output
9137 (e.g., using @code{io:format/2}) may be truncated when halting the VM.
9138 Therefore, if a test must output configuration information, it is recommended
9139 to create and to output data into the temporary file named @file{conftest.out},
9140 using the functions of module @code{file}.  The @code{conftest.out} file is
9141 automatically deleted by the @code{AC_RUN_IFELSE} macro.  For instance, a
9142 simplified implementation of Autoconf's @code{AC_ERLANG_SUBST_LIB_DIR}
9143 macro is:
9145 @example
9146 AC_INIT([LibdirTest], [1.0], [bug-libdirtest@@example.org])
9147 AC_ERLANG_NEED_ERL
9148 AC_LANG(Erlang)
9149 AC_RUN_IFELSE(
9150   [AC_LANG_PROGRAM([], [dnl
9151     file:write_file("conftest.out", code:lib_dir()),
9152     halt(0)])],
9153   [echo "code:lib_dir() returned: `cat conftest.out`"],
9154   [AC_MSG_FAILURE([test Erlang program execution failed])])
9155 @end example
9158 @node Systemology
9159 @section Systemology
9160 @cindex Systemology
9162 This section aims at presenting some systems and pointers to
9163 documentation.  It may help you addressing particular problems reported
9164 by users.
9166 @uref{http://@/www.opengroup.org/@/susv3, Posix-conforming systems} are
9167 derived from the @uref{http://@/www.bell-labs.com/@/history/@/unix/, Unix
9168 operating system}.
9170 The @uref{http://@/bhami.com/@/rosetta.html, Rosetta Stone for Unix}
9171 contains a table correlating the features of various Posix-conforming
9172 systems.  @uref{http://@/www.levenez.com/@/unix/, Unix History} is a
9173 simplified diagram of how many Unix systems were derived from each
9174 other.
9176 @uref{http://@/heirloom.sourceforge.net/, The Heirloom Project}
9177 provides some variants of traditional implementations of Unix utilities.
9179 @table @asis
9180 @item Darwin
9181 @cindex Darwin
9182 Darwin is also known as Mac OS X@.  Beware that the file system @emph{can} be
9183 case-preserving, but case insensitive.  This can cause nasty problems,
9184 since for instance the installation attempt for a package having an
9185 @file{INSTALL} file can result in @samp{make install} report that
9186 nothing was to be done!
9188 That's all dependent on whether the file system is a UFS (case
9189 sensitive) or HFS+ (case preserving).  By default Apple wants you to
9190 install the OS on HFS+.  Unfortunately, there are some pieces of
9191 software which really need to be built on UFS@.  We may want to rebuild
9192 Darwin to have both UFS and HFS+ available (and put the /local/build
9193 tree on the UFS).
9195 @item QNX 4.25
9196 @cindex QNX 4.25
9197 @c FIXME: Please, if you feel like writing something more precise,
9198 @c it'd be great.  In particular, I can't understand the difference with
9199 @c QNX Neutrino.
9200 QNX is a realtime operating system running on Intel architecture
9201 meant to be scalable from the small embedded systems to the hundred
9202 processor super-computer.  It claims to be Posix certified.  More
9203 information is available on the
9204 @uref{http://@/www.qnx.com/, QNX home page}.
9206 @item Tru64
9207 @cindex Tru64
9208 @uref{http://@/h30097.www3.hp.com/@/docs/,
9209 Documentation of several versions of Tru64} is available in different
9210 formats.
9212 @item Unix version 7
9213 @cindex Unix version 7
9214 @cindex V7
9215 Officially this was called the ``Seventh Edition'' of ``the UNIX
9216 time-sharing system'' but we use the more-common name ``Unix version 7''.
9217 Documentation is available in the
9218 @uref{http://@/plan9.bell-labs.com/@/7thEdMan/, Unix Seventh Edition Manual}.
9219 Previous versions of Unix are called ``Unix version 6'', etc., but
9220 they were not as widely used.
9221 @end table
9224 @node Multiple Cases
9225 @section Multiple Cases
9227 Some operations are accomplished in several possible ways, depending on
9228 the OS variant.  Checking for them essentially requires a ``case
9229 statement''.  Autoconf does not directly provide one; however, it is
9230 easy to simulate by using a shell variable to keep track of whether a
9231 way to perform the operation has been found yet.
9233 Here is an example that uses the shell variable @code{fstype} to keep
9234 track of whether the remaining cases need to be checked.  Note that
9235 since the value of @code{fstype} is under our control, we don't have to
9236 use the longer @samp{test "x$fstype" = xno}.
9238 @example
9239 @group
9240 AC_MSG_CHECKING([how to get file system type])
9241 fstype=no
9242 # The order of these tests is important.
9243 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statvfs.h>
9244 #include <sys/fstyp.h>]])],
9245                   [AC_DEFINE([FSTYPE_STATVFS], [1],
9246                      [Define if statvfs exists.])
9247                    fstype=SVR4])
9248 if test $fstype = no; then
9249   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
9250 #include <sys/fstyp.h>]])],
9251                   [AC_DEFINE([FSTYPE_USG_STATFS], [1],
9252                      [Define if USG statfs.])
9253                    fstype=SVR3])
9255 if test $fstype = no; then
9256   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
9257 #include <sys/vmount.h>]])]),
9258                   [AC_DEFINE([FSTYPE_AIX_STATFS], [1],
9259                      [Define if AIX statfs.])
9260                    fstype=AIX])
9262 # (more cases omitted here)
9263 AC_MSG_RESULT([$fstype])
9264 @end group
9265 @end example
9267 @c ====================================================== Results of Tests.
9269 @node Results
9270 @chapter Results of Tests
9272 Once @command{configure} has determined whether a feature exists, what can
9273 it do to record that information?  There are four sorts of things it can
9274 do: define a C preprocessor symbol, set a variable in the output files,
9275 save the result in a cache file for future @command{configure} runs, and
9276 print a message letting the user know the result of the test.
9278 @menu
9279 * Defining Symbols::            Defining C preprocessor symbols
9280 * Setting Output Variables::    Replacing variables in output files
9281 * Special Chars in Variables::  Characters to beware of in variables
9282 * Caching Results::             Speeding up subsequent @command{configure} runs
9283 * Printing Messages::           Notifying @command{configure} users
9284 @end menu
9286 @node Defining Symbols
9287 @section Defining C Preprocessor Symbols
9289 A common action to take in response to a feature test is to define a C
9290 preprocessor symbol indicating the results of the test.  That is done by
9291 calling @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}.
9293 By default, @code{AC_OUTPUT} places the symbols defined by these macros
9294 into the output variable @code{DEFS}, which contains an option
9295 @option{-D@var{symbol}=@var{value}} for each symbol defined.  Unlike in
9296 Autoconf version 1, there is no variable @code{DEFS} defined while
9297 @command{configure} is running.  To check whether Autoconf macros have
9298 already defined a certain C preprocessor symbol, test the value of the
9299 appropriate cache variable, as in this example:
9301 @example
9302 AC_CHECK_FUNC([vprintf], [AC_DEFINE([HAVE_VPRINTF], [1],
9303                           [Define if vprintf exists.])])
9304 if test "x$ac_cv_func_vprintf" != xyes; then
9305   AC_CHECK_FUNC([_doprnt], [AC_DEFINE([HAVE_DOPRNT], [1],
9306                             [Define if _doprnt exists.])])
9308 @end example
9310 If @code{AC_CONFIG_HEADERS} has been called, then instead of creating
9311 @code{DEFS}, @code{AC_OUTPUT} creates a header file by substituting the
9312 correct values into @code{#define} statements in a template file.
9313 @xref{Configuration Headers}, for more information about this kind of
9314 output.
9316 @defmac AC_DEFINE (@var{variable}, @var{value}, @ovar{description})
9317 @defmacx AC_DEFINE (@var{variable})
9318 @cvindex @var{variable}
9319 @acindex{DEFINE}
9320 Define @var{variable} to @var{value} (verbatim), by defining a C
9321 preprocessor macro for @var{variable}.  @var{variable} should be a C
9322 identifier, optionally suffixed by a parenthesized argument list to
9323 define a C preprocessor macro with arguments.  The macro argument list,
9324 if present, should be a comma-separated list of C identifiers, possibly
9325 terminated by an ellipsis @samp{...} if C99 syntax is employed.
9326 @var{variable} should not contain comments, white space, trigraphs,
9327 backslash-newlines, universal character names, or non-ASCII
9328 characters.
9330 @var{value} may contain backslash-escaped newlines, which will be
9331 preserved if you use @code{AC_CONFIG_HEADERS} but flattened if passed
9332 via @code{@@DEFS@@} (with no effect on the compilation, since the
9333 preprocessor sees only one line in the first place).  @var{value} should
9334 not contain raw newlines.  If you are not using
9335 @code{AC_CONFIG_HEADERS}, @var{value} should not contain any @samp{#}
9336 characters, as @command{make} tends to eat them.  To use a shell
9337 variable, use @code{AC_DEFINE_UNQUOTED} instead.
9339 @var{description} is only useful if you are using
9340 @code{AC_CONFIG_HEADERS}.  In this case, @var{description} is put into
9341 the generated @file{config.h.in} as the comment before the macro define.
9342 The following example defines the C preprocessor variable
9343 @code{EQUATION} to be the string constant @samp{"$a > $b"}:
9345 @example
9346 AC_DEFINE([EQUATION], ["$a > $b"],
9347   [Equation string.])
9348 @end example
9350 If neither @var{value} nor @var{description} are given, then
9351 @var{value} defaults to 1 instead of to the empty string.  This is for
9352 backwards compatibility with older versions of Autoconf, but this usage
9353 is obsolescent and may be withdrawn in future versions of Autoconf.
9355 If the @var{variable} is a literal string, it is passed to
9356 @code{m4_pattern_allow} (@pxref{Forbidden Patterns}).
9358 If multiple @code{AC_DEFINE} statements are executed for the same
9359 @var{variable} name (not counting any parenthesized argument list),
9360 the last one wins.
9361 @end defmac
9363 @defmac AC_DEFINE_UNQUOTED (@var{variable}, @var{value}, @ovar{description})
9364 @defmacx AC_DEFINE_UNQUOTED (@var{variable})
9365 @acindex{DEFINE_UNQUOTED}
9366 @cvindex @var{variable}
9367 Like @code{AC_DEFINE}, but three shell expansions are
9368 performed---once---on @var{variable} and @var{value}: variable expansion
9369 (@samp{$}), command substitution (@samp{`}), and backslash escaping
9370 (@samp{\}), as if in an unquoted here-document.  Single and double quote
9371 characters in the value have no
9372 special meaning.  Use this macro instead of @code{AC_DEFINE} when
9373 @var{variable} or @var{value} is a shell variable.  Examples:
9375 @example
9376 AC_DEFINE_UNQUOTED([config_machfile], ["$machfile"],
9377   [Configuration machine file.])
9378 AC_DEFINE_UNQUOTED([GETGROUPS_T], [$ac_cv_type_getgroups],
9379   [getgroups return type.])
9380 AC_DEFINE_UNQUOTED([$ac_tr_hdr], [1],
9381   [Translated header name.])
9382 @end example
9383 @end defmac
9385 Due to a syntactical bizarreness of the Bourne shell, do not use
9386 semicolons to separate @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}
9387 calls from other macro calls or shell code; that can cause syntax errors
9388 in the resulting @command{configure} script.  Use either blanks or
9389 newlines.  That is, do this:
9391 @example
9392 AC_CHECK_HEADER([elf.h],
9393   [AC_DEFINE([SVR4], [1], [System V Release 4]) LIBS="-lelf $LIBS"])
9394 @end example
9396 @noindent
9397 or this:
9399 @example
9400 AC_CHECK_HEADER([elf.h],
9401   [AC_DEFINE([SVR4], [1], [System V Release 4])
9402    LIBS="-lelf $LIBS"])
9403 @end example
9405 @noindent
9406 instead of this:
9408 @example
9409 AC_CHECK_HEADER([elf.h],
9410   [AC_DEFINE([SVR4], [1], [System V Release 4]); LIBS="-lelf $LIBS"])
9411 @end example
9413 @node Setting Output Variables
9414 @section Setting Output Variables
9415 @cindex Output variables
9417 Another way to record the results of tests is to set @dfn{output
9418 variables}, which are shell variables whose values are substituted into
9419 files that @command{configure} outputs.  The two macros below create new
9420 output variables.  @xref{Preset Output Variables}, for a list of output
9421 variables that are always available.
9423 @defmac AC_SUBST (@var{variable}, @ovar{value})
9424 @acindex{SUBST}
9425 Create an output variable from a shell variable.  Make @code{AC_OUTPUT}
9426 substitute the variable @var{variable} into output files (typically one
9427 or more makefiles).  This means that @code{AC_OUTPUT}
9428 replaces instances of @samp{@@@var{variable}@@} in input files with the
9429 value that the shell variable @var{variable} has when @code{AC_OUTPUT}
9430 is called.  The value can contain any non-@code{NUL} character, including
9431 newline.  If you are using Automake 1.11 or newer, for newlines in values
9432 you might want to consider using @code{AM_SUBST_NOTMAKE} to prevent
9433 @command{automake} from adding a line @code{@var{variable} =
9434 @@@var{variable}@@} to the @file{Makefile.in} files (@pxref{Optional, ,
9435 Automake, automake, Other things Automake recognizes}).
9437 Variable occurrences should not overlap: e.g., an input file should
9438 not contain @samp{@@@var{var1}@@@var{var2}@@} if @var{var1} and @var{var2}
9439 are variable names.
9440 The substituted value is not rescanned for more output variables;
9441 occurrences of @samp{@@@var{variable}@@} in the value are inserted
9442 literally into the output file.  (The algorithm uses the special marker
9443 @code{|#_!!_#|} internally, so neither the substituted value nor the
9444 output file may contain @code{|#_!!_#|}.)
9446 If @var{value} is given, in addition assign it to @var{variable}.
9448 The string @var{variable} is passed to @code{m4_pattern_allow}
9449 (@pxref{Forbidden Patterns}).
9450 @end defmac
9452 @defmac AC_SUBST_FILE (@var{variable})
9453 @acindex{SUBST_FILE}
9454 Another way to create an output variable from a shell variable.  Make
9455 @code{AC_OUTPUT} insert (without substitutions) the contents of the file
9456 named by shell variable @var{variable} into output files.  This means
9457 that @code{AC_OUTPUT} replaces instances of
9458 @samp{@@@var{variable}@@} in output files (such as @file{Makefile.in})
9459 with the contents of the file that the shell variable @var{variable}
9460 names when @code{AC_OUTPUT} is called.  Set the variable to
9461 @file{/dev/null} for cases that do not have a file to insert.
9462 This substitution occurs only when the @samp{@@@var{variable}@@} is on a
9463 line by itself, optionally surrounded by spaces and tabs.  The
9464 substitution replaces the whole line, including the spaces, tabs, and
9465 the terminating newline.
9467 This macro is useful for inserting makefile fragments containing
9468 special dependencies or other @command{make} directives for particular host
9469 or target types into makefiles.  For example, @file{configure.ac}
9470 could contain:
9472 @example
9473 AC_SUBST_FILE([host_frag])
9474 host_frag=$srcdir/conf/sun4.mh
9475 @end example
9477 @noindent
9478 and then a @file{Makefile.in} could contain:
9480 @example
9481 @@host_frag@@
9482 @end example
9484 The string @var{variable} is passed to @code{m4_pattern_allow}
9485 (@pxref{Forbidden Patterns}).
9486 @end defmac
9488 @cindex Precious Variable
9489 @cindex Variable, Precious
9490 Running @command{configure} in varying environments can be extremely
9491 dangerous.  If for instance the user runs @samp{CC=bizarre-cc
9492 ./configure}, then the cache, @file{config.h}, and many other output
9493 files depend upon @command{bizarre-cc} being the C compiler.  If
9494 for some reason the user runs @command{./configure} again, or if it is
9495 run via @samp{./config.status --recheck}, (@xref{Automatic Remaking},
9496 and @pxref{config.status Invocation}), then the configuration can be
9497 inconsistent, composed of results depending upon two different
9498 compilers.
9500 Environment variables that affect this situation, such as @samp{CC}
9501 above, are called @dfn{precious variables}, and can be declared as such
9502 by @code{AC_ARG_VAR}.
9504 @defmac AC_ARG_VAR (@var{variable}, @var{description})
9505 @acindex{ARG_VAR}
9506 Declare @var{variable} is a precious variable, and include its
9507 @var{description} in the variable section of @samp{./configure --help}.
9509 Being precious means that
9510 @itemize @minus
9511 @item
9512 @var{variable} is substituted via @code{AC_SUBST}.
9514 @item
9515 The value of @var{variable} when @command{configure} was launched is
9516 saved in the cache, including if it was not specified on the command
9517 line but via the environment.  Indeed, while @command{configure} can
9518 notice the definition of @code{CC} in @samp{./configure CC=bizarre-cc},
9519 it is impossible to notice it in @samp{CC=bizarre-cc ./configure},
9520 which, unfortunately, is what most users do.
9522 We emphasize that it is the @emph{initial} value of @var{variable} which
9523 is saved, not that found during the execution of @command{configure}.
9524 Indeed, specifying @samp{./configure FOO=foo} and letting
9525 @samp{./configure} guess that @code{FOO} is @code{foo} can be two
9526 different things.
9528 @item
9529 @var{variable} is checked for consistency between two
9530 @command{configure} runs.  For instance:
9532 @example
9533 $ @kbd{./configure --silent --config-cache}
9534 $ @kbd{CC=cc ./configure --silent --config-cache}
9535 configure: error: `CC' was not set in the previous run
9536 configure: error: changes in the environment can compromise \
9537 the build
9538 configure: error: run `make distclean' and/or \
9539 `rm config.cache' and start over
9540 @end example
9542 @noindent
9543 and similarly if the variable is unset, or if its content is changed.
9544 If the content has white space changes only, then the error is degraded
9545 to a warning only, but the old value is reused.
9547 @item
9548 @var{variable} is kept during automatic reconfiguration
9549 (@pxref{config.status Invocation}) as if it had been passed as a command
9550 line argument, including when no cache is used:
9552 @example
9553 $ @kbd{CC=/usr/bin/cc ./configure var=raboof --silent}
9554 $ @kbd{./config.status --recheck}
9555 running CONFIG_SHELL=/bin/sh /bin/sh ./configure var=raboof \
9556   CC=/usr/bin/cc  --no-create --no-recursion
9557 @end example
9558 @end itemize
9559 @end defmac
9561 @node Special Chars in Variables
9562 @section Special Characters in Output Variables
9563 @cindex Output variables, special characters in
9565 Many output variables are intended to be evaluated both by
9566 @command{make} and by the shell.  Some characters are expanded
9567 differently in these two contexts, so to avoid confusion these
9568 variables' values should not contain any of the following characters:
9570 @example
9571 " # $ & ' ( ) * ; < > ? [ \ ^ ` |
9572 @end example
9574 Also, these variables' values should neither contain newlines, nor start
9575 with @samp{~}, nor contain white space or @samp{:} immediately followed
9576 by @samp{~}.  The values can contain nonempty sequences of white space
9577 characters like tabs and spaces, but each such sequence might
9578 arbitrarily be replaced by a single space during substitution.
9580 These restrictions apply both to the values that @command{configure}
9581 computes, and to the values set directly by the user.  For example, the
9582 following invocations of @command{configure} are problematic, since they
9583 attempt to use special characters within @code{CPPFLAGS} and white space
9584 within @code{$(srcdir)}:
9586 @example
9587 CPPFLAGS='-DOUCH="&\"#$*?"' '../My Source/ouch-1.0/configure'
9589 '../My Source/ouch-1.0/configure' CPPFLAGS='-DOUCH="&\"#$*?"'
9590 @end example
9592 @node Caching Results
9593 @section Caching Results
9594 @cindex Cache
9596 To avoid checking for the same features repeatedly in various
9597 @command{configure} scripts (or in repeated runs of one script),
9598 @command{configure} can optionally save the results of many checks in a
9599 @dfn{cache file} (@pxref{Cache Files}).  If a @command{configure} script
9600 runs with caching enabled and finds a cache file, it reads the results
9601 of previous runs from the cache and avoids rerunning those checks.  As a
9602 result, @command{configure} can then run much faster than if it had to
9603 perform all of the checks every time.
9605 @defmac AC_CACHE_VAL (@var{cache-id}, @var{commands-to-set-it})
9606 @acindex{CACHE_VAL}
9607 Ensure that the results of the check identified by @var{cache-id} are
9608 available.  If the results of the check were in the cache file that was
9609 read, and @command{configure} was not given the @option{--quiet} or
9610 @option{--silent} option, print a message saying that the result was
9611 cached; otherwise, run the shell commands @var{commands-to-set-it}.  If
9612 the shell commands are run to determine the value, the value is
9613 saved in the cache file just before @command{configure} creates its output
9614 files.  @xref{Cache Variable Names}, for how to choose the name of the
9615 @var{cache-id} variable.
9617 The @var{commands-to-set-it} @emph{must have no side effects} except for
9618 setting the variable @var{cache-id}, see below.
9619 @end defmac
9621 @defmac AC_CACHE_CHECK (@var{message}, @var{cache-id}, @
9622   @var{commands-to-set-it})
9623 @acindex{CACHE_CHECK}
9624 A wrapper for @code{AC_CACHE_VAL} that takes care of printing the
9625 messages.  This macro provides a convenient shorthand for the most
9626 common way to use these macros.  It calls @code{AC_MSG_CHECKING} for
9627 @var{message}, then @code{AC_CACHE_VAL} with the @var{cache-id} and
9628 @var{commands} arguments, and @code{AC_MSG_RESULT} with @var{cache-id}.
9630 The @var{commands-to-set-it} @emph{must have no side effects} except for
9631 setting the variable @var{cache-id}, see below.
9632 @end defmac
9634 It is common to find buggy macros using @code{AC_CACHE_VAL} or
9635 @code{AC_CACHE_CHECK}, because people are tempted to call
9636 @code{AC_DEFINE} in the @var{commands-to-set-it}.  Instead, the code that
9637 @emph{follows} the call to @code{AC_CACHE_VAL} should call
9638 @code{AC_DEFINE}, by examining the value of the cache variable.  For
9639 instance, the following macro is broken:
9641 @example
9642 @c If you change this example, adjust tests/base.at:AC_CACHE_CHECK.
9643 @group
9644 AC_DEFUN([AC_SHELL_TRUE],
9645 [AC_CACHE_CHECK([whether true(1) works], [my_cv_shell_true_works],
9646                 [my_cv_shell_true_works=no
9647                  (true) 2>/dev/null && my_cv_shell_true_works=yes
9648                  if test "x$my_cv_shell_true_works" = xyes; then
9649                    AC_DEFINE([TRUE_WORKS], [1],
9650                              [Define if `true(1)' works properly.])
9651                  fi])
9653 @end group
9654 @end example
9656 @noindent
9657 This fails if the cache is enabled: the second time this macro is run,
9658 @code{TRUE_WORKS} @emph{will not be defined}.  The proper implementation
9661 @example
9662 @c If you change this example, adjust tests/base.at:AC_CACHE_CHECK.
9663 @group
9664 AC_DEFUN([AC_SHELL_TRUE],
9665 [AC_CACHE_CHECK([whether true(1) works], [my_cv_shell_true_works],
9666                 [my_cv_shell_true_works=no
9667                  (true) 2>/dev/null && my_cv_shell_true_works=yes])
9668  if test "x$my_cv_shell_true_works" = xyes; then
9669    AC_DEFINE([TRUE_WORKS], [1],
9670              [Define if `true(1)' works properly.])
9671  fi
9673 @end group
9674 @end example
9676 Also, @var{commands-to-set-it} should not print any messages, for
9677 example with @code{AC_MSG_CHECKING}; do that before calling
9678 @code{AC_CACHE_VAL}, so the messages are printed regardless of whether
9679 the results of the check are retrieved from the cache or determined by
9680 running the shell commands.
9682 @menu
9683 * Cache Variable Names::        Shell variables used in caches
9684 * Cache Files::                 Files @command{configure} uses for caching
9685 * Cache Checkpointing::         Loading and saving the cache file
9686 @end menu
9688 @node Cache Variable Names
9689 @subsection Cache Variable Names
9690 @cindex Cache variable
9692 The names of cache variables should have the following format:
9694 @example
9695 @var{package-prefix}_cv_@var{value-type}_@var{specific-value}_@ovar{additional-options}
9696 @end example
9698 @noindent
9699 for example, @samp{ac_cv_header_stat_broken} or
9700 @samp{ac_cv_prog_gcc_traditional}.  The parts of the variable name are:
9702 @table @asis
9703 @item @var{package-prefix}
9704 An abbreviation for your package or organization; the same prefix you
9705 begin local Autoconf macros with, except lowercase by convention.
9706 For cache values used by the distributed Autoconf macros, this value is
9707 @samp{ac}.
9709 @item @code{_cv_}
9710 Indicates that this shell variable is a cache value.  This string
9711 @emph{must} be present in the variable name, including the leading
9712 underscore.
9714 @item @var{value-type}
9715 A convention for classifying cache values, to produce a rational naming
9716 system.  The values used in Autoconf are listed in @ref{Macro Names}.
9718 @item @var{specific-value}
9719 Which member of the class of cache values this test applies to.
9720 For example, which function (@samp{alloca}), program (@samp{gcc}), or
9721 output variable (@samp{INSTALL}).
9723 @item @var{additional-options}
9724 Any particular behavior of the specific member that this test applies to.
9725 For example, @samp{broken} or @samp{set}.  This part of the name may
9726 be omitted if it does not apply.
9727 @end table
9729 The values assigned to cache variables may not contain newlines.
9730 Usually, their values are Boolean (@samp{yes} or @samp{no}) or the
9731 names of files or functions; so this is not an important restriction.
9732 @ref{Cache Variable Index} for an index of cache variables with
9733 documented semantics.
9736 @node Cache Files
9737 @subsection Cache Files
9739 A cache file is a shell script that caches the results of configure
9740 tests run on one system so they can be shared between configure scripts
9741 and configure runs.  It is not useful on other systems.  If its contents
9742 are invalid for some reason, the user may delete or edit it, or override
9743 documented cache variables on the @command{configure} command line.
9745 By default, @command{configure} uses no cache file,
9746 to avoid problems caused by accidental
9747 use of stale cache files.
9749 To enable caching, @command{configure} accepts @option{--config-cache} (or
9750 @option{-C}) to cache results in the file @file{config.cache}.
9751 Alternatively, @option{--cache-file=@var{file}} specifies that
9752 @var{file} be the cache file.  The cache file is created if it does not
9753 exist already.  When @command{configure} calls @command{configure} scripts in
9754 subdirectories, it uses the @option{--cache-file} argument so that they
9755 share the same cache.  @xref{Subdirectories}, for information on
9756 configuring subdirectories with the @code{AC_CONFIG_SUBDIRS} macro.
9758 @file{config.status} only pays attention to the cache file if it is
9759 given the @option{--recheck} option, which makes it rerun
9760 @command{configure}.
9762 It is wrong to try to distribute cache files for particular system types.
9763 There is too much room for error in doing that, and too much
9764 administrative overhead in maintaining them.  For any features that
9765 can't be guessed automatically, use the standard method of the canonical
9766 system type and linking files (@pxref{Manual Configuration}).
9768 The site initialization script can specify a site-wide cache file to
9769 use, instead of the usual per-program cache.  In this case, the cache
9770 file gradually accumulates information whenever someone runs a new
9771 @command{configure} script.  (Running @command{configure} merges the new cache
9772 results with the existing cache file.)  This may cause problems,
9773 however, if the system configuration (e.g., the installed libraries or
9774 compilers) changes and the stale cache file is not deleted.
9776 @node Cache Checkpointing
9777 @subsection Cache Checkpointing
9779 If your configure script, or a macro called from @file{configure.ac}, happens
9780 to abort the configure process, it may be useful to checkpoint the cache
9781 a few times at key points using @code{AC_CACHE_SAVE}.  Doing so
9782 reduces the amount of time it takes to rerun the configure script with
9783 (hopefully) the error that caused the previous abort corrected.
9785 @c FIXME: Do we really want to document this guy?
9786 @defmac AC_CACHE_LOAD
9787 @acindex{CACHE_LOAD}
9788 Loads values from existing cache file, or creates a new cache file if a
9789 cache file is not found.  Called automatically from @code{AC_INIT}.
9790 @end defmac
9792 @defmac AC_CACHE_SAVE
9793 @acindex{CACHE_SAVE}
9794 Flushes all cached values to the cache file.  Called automatically from
9795 @code{AC_OUTPUT}, but it can be quite useful to call
9796 @code{AC_CACHE_SAVE} at key points in @file{configure.ac}.
9797 @end defmac
9799 For instance:
9801 @example
9802 @r{ @dots{} AC_INIT, etc. @dots{}}
9803 @group
9804 # Checks for programs.
9805 AC_PROG_CC
9806 AC_PROG_AWK
9807 @r{ @dots{} more program checks @dots{}}
9808 AC_CACHE_SAVE
9809 @end group
9811 @group
9812 # Checks for libraries.
9813 AC_CHECK_LIB([nsl], [gethostbyname])
9814 AC_CHECK_LIB([socket], [connect])
9815 @r{ @dots{} more lib checks @dots{}}
9816 AC_CACHE_SAVE
9817 @end group
9819 @group
9820 # Might abort@dots{}
9821 AM_PATH_GTK([1.0.2], [], [AC_MSG_ERROR([GTK not in path])])
9822 AM_PATH_GTKMM([0.9.5], [], [AC_MSG_ERROR([GTK not in path])])
9823 @end group
9824 @r{ @dots{} AC_OUTPUT, etc. @dots{}}
9825 @end example
9827 @node Printing Messages
9828 @section Printing Messages
9829 @cindex Messages, from @command{configure}
9831 @command{configure} scripts need to give users running them several kinds
9832 of information.  The following macros print messages in ways appropriate
9833 for each kind.  The arguments to all of them get enclosed in shell
9834 double quotes, so the shell performs variable and back-quote
9835 substitution on them.
9837 These macros are all wrappers around the @command{echo} shell command.
9838 They direct output to the appropriate file descriptor (@pxref{File
9839 Descriptor Macros}).
9840 @command{configure} scripts should rarely need to run @command{echo} directly
9841 to print messages for the user.  Using these macros makes it easy to
9842 change how and when each kind of message is printed; such changes need
9843 only be made to the macro definitions and all the callers change
9844 automatically.
9846 To diagnose static issues, i.e., when @command{autoconf} is run, see
9847 @ref{Diagnostic Macros}.
9849 @defmac AC_MSG_CHECKING (@var{feature-description})
9850 @acindex{MSG_CHECKING}
9851 Notify the user that @command{configure} is checking for a particular
9852 feature.  This macro prints a message that starts with @samp{checking }
9853 and ends with @samp{...} and no newline.  It must be followed by a call
9854 to @code{AC_MSG_RESULT} to print the result of the check and the
9855 newline.  The @var{feature-description} should be something like
9856 @samp{whether the Fortran compiler accepts C++ comments} or @samp{for
9857 c89}.
9859 This macro prints nothing if @command{configure} is run with the
9860 @option{--quiet} or @option{--silent} option.
9861 @end defmac
9863 @anchor{AC_MSG_RESULT}
9864 @defmac AC_MSG_RESULT (@var{result-description})
9865 @acindex{MSG_RESULT}
9866 Notify the user of the results of a check.  @var{result-description} is
9867 almost always the value of the cache variable for the check, typically
9868 @samp{yes}, @samp{no}, or a file name.  This macro should follow a call
9869 to @code{AC_MSG_CHECKING}, and the @var{result-description} should be
9870 the completion of the message printed by the call to
9871 @code{AC_MSG_CHECKING}.
9873 This macro prints nothing if @command{configure} is run with the
9874 @option{--quiet} or @option{--silent} option.
9875 @end defmac
9877 @anchor{AC_MSG_NOTICE}
9878 @defmac AC_MSG_NOTICE (@var{message})
9879 @acindex{MSG_NOTICE}
9880 Deliver the @var{message} to the user.  It is useful mainly to print a
9881 general description of the overall purpose of a group of feature checks,
9882 e.g.,
9884 @example
9885 AC_MSG_NOTICE([checking if stack overflow is detectable])
9886 @end example
9888 This macro prints nothing if @command{configure} is run with the
9889 @option{--quiet} or @option{--silent} option.
9890 @end defmac
9892 @anchor{AC_MSG_ERROR}
9893 @defmac AC_MSG_ERROR (@var{error-description}, @dvar{exit-status, $?/1})
9894 @acindex{MSG_ERROR}
9895 Notify the user of an error that prevents @command{configure} from
9896 completing.  This macro prints an error message to the standard error
9897 output and exits @command{configure} with @var{exit-status} (@samp{$?}
9898 by default, except that @samp{0} is converted to @samp{1}).
9899 @var{error-description} should be something like @samp{invalid value
9900 $HOME for \$HOME}.
9902 The @var{error-description} should start with a lower-case letter, and
9903 ``cannot'' is preferred to ``can't''.
9904 @end defmac
9906 @defmac AC_MSG_FAILURE (@var{error-description}, @ovar{exit-status})
9907 @acindex{MSG_FAILURE}
9908 This @code{AC_MSG_ERROR} wrapper notifies the user of an error that
9909 prevents @command{configure} from completing @emph{and} that additional
9910 details are provided in @file{config.log}.  This is typically used when
9911 abnormal results are found during a compilation.
9912 @end defmac
9914 @anchor{AC_MSG_WARN}
9915 @defmac AC_MSG_WARN (@var{problem-description})
9916 @acindex{MSG_WARN}
9917 Notify the @command{configure} user of a possible problem.  This macro
9918 prints the message to the standard error output; @command{configure}
9919 continues running afterward, so macros that call @code{AC_MSG_WARN} should
9920 provide a default (back-up) behavior for the situations they warn about.
9921 @var{problem-description} should be something like @samp{ln -s seems to
9922 make hard links}.
9923 @end defmac
9927 @c ====================================================== Programming in M4.
9929 @node Programming in M4
9930 @chapter Programming in M4
9931 @cindex M4
9933 Autoconf is written on top of two layers: @dfn{M4sugar}, which provides
9934 convenient macros for pure M4 programming, and @dfn{M4sh}, which
9935 provides macros dedicated to shell script generation.
9937 As of this version of Autoconf, these two layers still contain
9938 experimental macros, whose interface might change in the future.  As a
9939 matter of fact, @emph{anything that is not documented must not be used}.
9941 @menu
9942 * M4 Quotation::                Protecting macros from unwanted expansion
9943 * Using autom4te::              The Autoconf executables backbone
9944 * Programming in M4sugar::      Convenient pure M4 macros
9945 * Debugging via autom4te::      Figuring out what M4 was doing
9946 @end menu
9948 @node M4 Quotation
9949 @section M4 Quotation
9950 @cindex M4 quotation
9951 @cindex quotation
9953 The most common problem with existing macros is an improper quotation.
9954 This section, which users of Autoconf can skip, but which macro writers
9955 @emph{must} read, first justifies the quotation scheme that was chosen
9956 for Autoconf and then ends with a rule of thumb.  Understanding the
9957 former helps one to follow the latter.
9959 @menu
9960 * Active Characters::           Characters that change the behavior of M4
9961 * One Macro Call::              Quotation and one macro call
9962 * Quoting and Parameters::      M4 vs. shell parameters
9963 * Quotation and Nested Macros::  Macros calling macros
9964 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
9965 * Quadrigraphs::                Another way to escape special characters
9966 * Balancing Parentheses::       Dealing with unbalanced parentheses
9967 * Quotation Rule Of Thumb::     One parenthesis, one quote
9968 @end menu
9970 @node Active Characters
9971 @subsection Active Characters
9973 To fully understand where proper quotation is important, you first need
9974 to know what the special characters are in Autoconf: @samp{#} introduces
9975 a comment inside which no macro expansion is performed, @samp{,}
9976 separates arguments, @samp{[} and @samp{]} are the quotes
9977 themselves@footnote{By itself, M4 uses @samp{`} and @samp{'}; it is the
9978 M4sugar layer that sets up the preferred quotes of @samp{[} and @samp{]}.},
9979 @samp{(} and @samp{)} (which M4 tries to match by pairs), and finally
9980 @samp{$} inside a macro definition.
9982 In order to understand the delicate case of macro calls, we first have
9983 to present some obvious failures.  Below they are ``obvious-ified'',
9984 but when you find them in real life, they are usually in disguise.
9986 Comments, introduced by a hash and running up to the newline, are opaque
9987 tokens to the top level: active characters are turned off, and there is
9988 no macro expansion:
9990 @example
9991 # define([def], ine)
9992 @result{}# define([def], ine)
9993 @end example
9995 Each time there can be a macro expansion, there is a quotation
9996 expansion, i.e., one level of quotes is stripped:
9998 @example
9999 int tab[10];
10000 @result{}int tab10;
10001 [int tab[10];]
10002 @result{}int tab[10];
10003 @end example
10005 Without this in mind, the reader might try hopelessly to use her macro
10006 @code{array}:
10008 @example
10009 define([array], [int tab[10];])
10010 array
10011 @result{}int tab10;
10012 [array]
10013 @result{}array
10014 @end example
10016 @noindent
10017 How can you correctly output the intended results@footnote{Using
10018 @code{defn}.}?
10021 @node One Macro Call
10022 @subsection One Macro Call
10024 Let's proceed on the interaction between active characters and macros
10025 with this small macro, which just returns its first argument:
10027 @example
10028 define([car], [$1])
10029 @end example
10031 @noindent
10032 The two pairs of quotes above are not part of the arguments of
10033 @code{define}; rather, they are understood by the top level when it
10034 tries to find the arguments of @code{define}.  Therefore, assuming
10035 @code{car} is not already defined, it is equivalent to write:
10037 @example
10038 define(car, $1)
10039 @end example
10041 @noindent
10042 But, while it is acceptable for a @file{configure.ac} to avoid unnecessary
10043 quotes, it is bad practice for Autoconf macros which must both be more
10044 robust and also advocate perfect style.
10046 At the top level, there are only two possibilities: either you
10047 quote or you don't:
10049 @example
10050 car(foo, bar, baz)
10051 @result{}foo
10052 [car(foo, bar, baz)]
10053 @result{}car(foo, bar, baz)
10054 @end example
10056 Let's pay attention to the special characters:
10058 @example
10059 car(#)
10060 @error{}EOF in argument list
10061 @end example
10063 The closing parenthesis is hidden in the comment; with a hypothetical
10064 quoting, the top level understood it this way:
10066 @example
10067 car([#)]
10068 @end example
10070 @noindent
10071 Proper quotation, of course, fixes the problem:
10073 @example
10074 car([#])
10075 @result{}#
10076 @end example
10078 Here are more examples:
10080 @example
10081 car(foo, bar)
10082 @result{}foo
10083 car([foo, bar])
10084 @result{}foo, bar
10085 car((foo, bar))
10086 @result{}(foo, bar)
10087 car([(foo], [bar)])
10088 @result{}(foo
10089 define([a], [b])
10090 @result{}
10091 car(a)
10092 @result{}b
10093 car([a])
10094 @result{}b
10095 car([[a]])
10096 @result{}a
10097 car([[[a]]])
10098 @result{}[a]
10099 @end example
10101 @node Quoting and Parameters
10102 @subsection Quoting and Parameters
10104 When M4 encounters @samp{$} within a macro definition, followed
10105 immediately by a character it recognizes (@samp{0}@dots{}@samp{9},
10106 @samp{#}, @samp{@@}, or @samp{*}), it will perform M4 parameter
10107 expansion.  This happens regardless of how many layers of quotes the
10108 parameter expansion is nested within, or even if it occurs in text that
10109 will be rescanned as a comment.
10111 @example
10112 define([none], [$1])
10113 @result{}
10114 define([one], [[$1]])
10115 @result{}
10116 define([two], [[[$1]]])
10117 @result{}
10118 define([comment], [# $1])
10119 @result{}
10120 define([active], [ACTIVE])
10121 @result{}
10122 none([active])
10123 @result{}ACTIVE
10124 one([active])
10125 @result{}active
10126 two([active])
10127 @result{}[active]
10128 comment([active])
10129 @result{}# active
10130 @end example
10132 On the other hand, since autoconf generates shell code, you often want
10133 to output shell variable expansion, rather than performing M4 parameter
10134 expansion.  To do this, you must use M4 quoting to separate the @samp{$}
10135 from the next character in the definition of your macro.  If the macro
10136 definition occurs in single-quoted text, then insert another level of
10137 quoting; if the usage is already inside a double-quoted string, then
10138 split it into concatenated strings.
10140 @example
10141 define([single], [a single-quoted $[]1 definition])
10142 @result{}
10143 define([double], [[a double-quoted $][1 definition]])
10144 @result{}
10145 single
10146 @result{}a single-quoted $1 definition
10147 double
10148 @result{}a double-quoted $1 definition
10149 @end example
10151 Posix states that M4 implementations are free to provide implementation
10152 extensions when @samp{$@{} is encountered in a macro definition.
10153 Autoconf reserves the longer sequence @samp{$@{@{} for use with planned
10154 extensions that will be available in the future GNU M4 2.0,
10155 but guarantees that all other instances of @samp{$@{} will be output
10156 literally.  Therefore, this idiom can also be used to output shell code
10157 parameter references:
10159 @example
10160 define([first], [$@{1@}])first
10161 @result{}$@{1@}
10162 @end example
10164 Posix also states that @samp{$11} should expand to the first parameter
10165 concatenated with a literal @samp{1}, although some versions of
10166 GNU M4 expand the eleventh parameter instead.  For
10167 portability, you should only use single-digit M4 parameter expansion.
10169 With this in mind, we can explore the cases where macros invoke
10170 macros@enddots{}
10172 @node Quotation and Nested Macros
10173 @subsection Quotation and Nested Macros
10175 The examples below use the following macros:
10177 @example
10178 define([car], [$1])
10179 define([active], [ACT, IVE])
10180 define([array], [int tab[10]])
10181 @end example
10183 Each additional embedded macro call introduces other possible
10184 interesting quotations:
10186 @example
10187 car(active)
10188 @result{}ACT
10189 car([active])
10190 @result{}ACT, IVE
10191 car([[active]])
10192 @result{}active
10193 @end example
10195 In the first case, the top level looks for the arguments of @code{car},
10196 and finds @samp{active}.  Because M4 evaluates its arguments
10197 before applying the macro, @samp{active} is expanded, which results in:
10199 @example
10200 car(ACT, IVE)
10201 @result{}ACT
10202 @end example
10204 @noindent
10205 In the second case, the top level gives @samp{active} as first and only
10206 argument of @code{car}, which results in:
10208 @example
10209 active
10210 @result{}ACT, IVE
10211 @end example
10213 @noindent
10214 i.e., the argument is evaluated @emph{after} the macro that invokes it.
10215 In the third case, @code{car} receives @samp{[active]}, which results in:
10217 @example
10218 [active]
10219 @result{}active
10220 @end example
10222 @noindent
10223 exactly as we already saw above.
10225 The example above, applied to a more realistic example, gives:
10227 @example
10228 car(int tab[10];)
10229 @result{}int tab10;
10230 car([int tab[10];])
10231 @result{}int tab10;
10232 car([[int tab[10];]])
10233 @result{}int tab[10];
10234 @end example
10236 @noindent
10237 Huh?  The first case is easily understood, but why is the second wrong,
10238 and the third right?  To understand that, you must know that after
10239 M4 expands a macro, the resulting text is immediately subjected
10240 to macro expansion and quote removal.  This means that the quote removal
10241 occurs twice---first before the argument is passed to the @code{car}
10242 macro, and second after the @code{car} macro expands to the first
10243 argument.
10245 As the author of the Autoconf macro @code{car}, you then consider it to
10246 be incorrect that your users have to double-quote the arguments of
10247 @code{car}, so you ``fix'' your macro.  Let's call it @code{qar} for
10248 quoted car:
10250 @example
10251 define([qar], [[$1]])
10252 @end example
10254 @noindent
10255 and check that @code{qar} is properly fixed:
10257 @example
10258 qar([int tab[10];])
10259 @result{}int tab[10];
10260 @end example
10262 @noindent
10263 Ahhh!  That's much better.
10265 But note what you've done: now that the result of @code{qar} is always
10266 a literal string, the only time a user can use nested macros is if she
10267 relies on an @emph{unquoted} macro call:
10269 @example
10270 qar(active)
10271 @result{}ACT
10272 qar([active])
10273 @result{}active
10274 @end example
10276 @noindent
10277 leaving no way for her to reproduce what she used to do with @code{car}:
10279 @example
10280 car([active])
10281 @result{}ACT, IVE
10282 @end example
10284 @noindent
10285 Worse yet: she wants to use a macro that produces a set of @code{cpp}
10286 macros:
10288 @example
10289 define([my_includes], [#include <stdio.h>])
10290 car([my_includes])
10291 @result{}#include <stdio.h>
10292 qar(my_includes)
10293 @error{}EOF in argument list
10294 @end example
10296 This macro, @code{qar}, because it double quotes its arguments, forces
10297 its users to leave their macro calls unquoted, which is dangerous.
10298 Commas and other active symbols are interpreted by M4 before
10299 they are given to the macro, often not in the way the users expect.
10300 Also, because @code{qar} behaves differently from the other macros,
10301 it's an exception that should be avoided in Autoconf.
10303 @node Changequote is Evil
10304 @subsection @code{changequote} is Evil
10305 @cindex @code{changequote}
10307 The temptation is often high to bypass proper quotation, in particular
10308 when it's late at night.  Then, many experienced Autoconf hackers
10309 finally surrender to the dark side of the force and use the ultimate
10310 weapon: @code{changequote}.
10312 The M4 builtin @code{changequote} belongs to a set of primitives that
10313 allow one to adjust the syntax of the language to adjust it to one's
10314 needs.  For instance, by default M4 uses @samp{`} and @samp{'} as
10315 quotes, but in the context of shell programming (and actually of most
10316 programming languages), that's about the worst choice one can make:
10317 because of strings and back-quoted expressions in shell code (such as
10318 @samp{'this'} and @samp{`that`}), and because of literal characters in usual
10319 programming languages (as in @samp{'0'}), there are many unbalanced
10320 @samp{`} and @samp{'}.  Proper M4 quotation then becomes a nightmare, if
10321 not impossible.  In order to make M4 useful in such a context, its
10322 designers have equipped it with @code{changequote}, which makes it
10323 possible to choose another pair of quotes.  M4sugar, M4sh, Autoconf, and
10324 Autotest all have chosen to use @samp{[} and @samp{]}.  Not especially
10325 because they are unlikely characters, but @emph{because they are
10326 characters unlikely to be unbalanced}.
10328 There are other magic primitives, such as @code{changecom} to specify
10329 what syntactic forms are comments (it is common to see
10330 @samp{changecom(<!--, -->)} when M4 is used to produce HTML pages),
10331 @code{changeword} and @code{changesyntax} to change other syntactic
10332 details (such as the character to denote the @var{n}th argument, @samp{$} by
10333 default, the parentheses around arguments, etc.).
10335 These primitives are really meant to make M4 more useful for specific
10336 domains: they should be considered like command line options:
10337 @option{--quotes}, @option{--comments}, @option{--words}, and
10338 @option{--syntax}.  Nevertheless, they are implemented as M4 builtins, as
10339 it makes M4 libraries self contained (no need for additional options).
10341 There lies the problem@enddots{}
10343 @sp 1
10345 The problem is that it is then tempting to use them in the middle of an
10346 M4 script, as opposed to its initialization.  This, if not carefully
10347 thought out, can lead to disastrous effects: @emph{you are changing the
10348 language in the middle of the execution}.  Changing and restoring the
10349 syntax is often not enough: if you happened to invoke macros in between,
10350 these macros are lost, as the current syntax is probably not
10351 the one they were implemented with.
10353 @c FIXME: I've been looking for a short, real case example, but I
10354 @c lost them all :(
10357 @node Quadrigraphs
10358 @subsection Quadrigraphs
10359 @cindex quadrigraphs
10360 @cindex @samp{@@S|@@}
10361 @cindex @samp{@@&t@@}
10362 @c Info cannot handle `:' in index entries.
10363 @ifnotinfo
10364 @cindex @samp{@@<:@@}
10365 @cindex @samp{@@:>@@}
10366 @cindex @samp{@@%:@@}
10367 @cindex @samp{@@@{:@@}
10368 @cindex @samp{@@:@}@@}
10369 @end ifnotinfo
10371 When writing an Autoconf macro you may occasionally need to generate
10372 special characters that are difficult to express with the standard
10373 Autoconf quoting rules.  For example, you may need to output the regular
10374 expression @samp{[^[]}, which matches any character other than @samp{[}.
10375 This expression contains unbalanced brackets so it cannot be put easily
10376 into an M4 macro.
10378 Additionally, there are a few m4sugar macros (such as @code{m4_split}
10379 and @code{m4_expand}) which internally use special markers in addition
10380 to the regular quoting characters.  If the arguments to these macros
10381 contain the literal strings @samp{-=<@{(} or @samp{)@}>=-}, the macros
10382 might behave incorrectly.
10384 You can work around these problems by using one of the following
10385 @dfn{quadrigraphs}:
10387 @table @samp
10388 @item @@<:@@
10389 @samp{[}
10390 @item @@:>@@
10391 @samp{]}
10392 @item @@S|@@
10393 @samp{$}
10394 @item @@%:@@
10395 @samp{#}
10396 @item @@@{:@@
10397 @samp{(}
10398 @item @@:@}@@
10399 @samp{)}
10400 @item @@&t@@
10401 Expands to nothing.
10402 @end table
10404 Quadrigraphs are replaced at a late stage of the translation process,
10405 after @command{m4} is run, so they do not get in the way of M4 quoting.
10406 For example, the string @samp{^@@<:@@}, independently of its quotation,
10407 appears as @samp{^[} in the output.
10409 The empty quadrigraph can be used:
10411 @itemize @minus
10412 @item to mark trailing spaces explicitly
10414 Trailing spaces are smashed by @command{autom4te}.  This is a feature.
10416 @item to produce quadrigraphs and other strings reserved by m4sugar
10418 For instance @samp{@@<@@&t@@:@@} produces @samp{@@<:@@}.  For a more
10419 contrived example:
10421 @example
10422 m4_define([a], [A])m4_define([b], [B])m4_define([c], [C])dnl
10423 m4_split([a )@}>=- b -=<@{( c])
10424 @result{}[a], [], [B], [], [c]
10425 m4_split([a )@}@@&t@@>=- b -=<@@&t@@@{( c])
10426 @result{}[a], [)@}>=-], [b], [-=<@{(], [c]
10427 @end example
10429 @item to escape @emph{occurrences} of forbidden patterns
10431 For instance you might want to mention @code{AC_FOO} in a comment, while
10432 still being sure that @command{autom4te} still catches unexpanded
10433 @samp{AC_*}.  Then write @samp{AC@@&t@@_FOO}.
10434 @end itemize
10436 The name @samp{@@&t@@} was suggested by Paul Eggert:
10438 @quotation
10439 I should give some credit to the @samp{@@&t@@} pun.  The @samp{&} is my
10440 own invention, but the @samp{t} came from the source code of the
10441 ALGOL68C compiler, written by Steve Bourne (of Bourne shell fame),
10442 and which used @samp{mt} to denote the empty string.  In C, it would
10443 have looked like something like:
10445 @example
10446 char const mt[] = "";
10447 @end example
10449 @noindent
10450 but of course the source code was written in Algol 68.
10452 I don't know where he got @samp{mt} from: it could have been his own
10453 invention, and I suppose it could have been a common pun around the
10454 Cambridge University computer lab at the time.
10455 @end quotation
10458 @node Balancing Parentheses
10459 @subsection Dealing with unbalanced parentheses
10460 @cindex balancing parentheses
10461 @cindex parentheses, balancing
10462 @cindex unbalanced parentheses, managing
10464 One of the pitfalls of portable shell programming is that @command{case}
10465 statements require unbalanced parentheses (@pxref{case, , Limitations of
10466 Shell Builtins}).  With syntax highlighting
10467 editors, the presence of unbalanced @samp{)} can interfere with editors
10468 that perform syntax highlighting of macro contents based on finding the
10469 matching @samp{(}.  Another concern is how much editing must be done
10470 when transferring code snippets between shell scripts and macro
10471 definitions.  But most importantly, the presence of unbalanced
10472 parentheses can introduce expansion bugs.
10474 For an example, here is an underquoted attempt to use the macro
10475 @code{my_case}, which happens to expand to a portable @command{case}
10476 statement:
10478 @example
10479 AC_DEFUN([my_case],
10480 [case $file_name in
10481   *.c) echo "C source code";;
10482 esac])
10483 AS_IF(:, my_case)
10484 @end example
10486 @noindent
10487 In the above example, the @code{AS_IF} call underquotes its arguments.
10488 As a result, the unbalanced @samp{)} generated by the premature
10489 expansion of @code{my_case} results in expanding @code{AS_IF} with a
10490 truncated parameter, and the expansion is syntactically invalid:
10492 @example
10493 if :; then
10494   case $file_name in
10495   *.c
10496 fi echo "C source code";;
10497 esac)
10498 @end example
10500 If nothing else, this should emphasize the importance of the quoting
10501 arguments to macro calls.  On the other hand, there are several
10502 variations for defining @code{my_case} to be more robust, even when used
10503 without proper quoting, each with some benefits and some drawbacks.
10505 @itemize @w{}
10506 @item Creative literal shell comment
10507 @example
10508 AC_DEFUN([my_case],
10509 [case $file_name in #(
10510   *.c) echo "C source code";;
10511 esac])
10512 @end example
10513 @noindent
10514 This version provides balanced parentheses to several editors, and can
10515 be copied and pasted into a terminal as is.  Unfortunately, it is still
10516 unbalanced as an Autoconf argument, since @samp{#(} is an M4 comment
10517 that masks the normal properties of @samp{(}.
10519 @item Quadrigraph shell comment
10520 @example
10521 AC_DEFUN([my_case],
10522 [case $file_name in @@%:@@(
10523   *.c) echo "C source code";;
10524 esac])
10525 @end example
10526 @noindent
10527 This version provides balanced parentheses to even more editors, and can
10528 be used as a balanced Autoconf argument.  Unfortunately, it requires
10529 some editing before it can be copied and pasted into a terminal, and the
10530 use of the quadrigraph @samp{@@%:@@} for @samp{#} reduces readability.
10532 @item Quoting just the parenthesis
10533 @example
10534 AC_DEFUN([my_case],
10535 [case $file_name in
10536   *.c[)] echo "C source code";;
10537 esac])
10538 @end example
10539 @noindent
10540 This version quotes the @samp{)}, so that it can be used as a balanced
10541 Autoconf argument.  As written, this is not balanced to an editor, but
10542 it can be coupled with @samp{[#(]} to meet that need, too.  However, it
10543 still requires some edits before it can be copied and pasted into a
10544 terminal.
10546 @item Double-quoting the entire statement
10547 @example
10548 AC_DEFUN([my_case],
10549 [[case $file_name in #(
10550   *.c) echo "C source code";;
10551 esac]])
10552 @end example
10553 @noindent
10554 Since the entire macro is double-quoted, there is no problem with using
10555 this as an Autoconf argument; and since the double-quoting is over the
10556 entire statement, this code can be easily copied and pasted into a
10557 terminal.  However, the double quoting prevents the expansion of any
10558 macros inside the case statement, which may cause its own set of
10559 problems.
10561 @item Using @code{AS_CASE}
10562 @example
10563 AC_DEFUN([my_case],
10564 [AS_CASE([$file_name],
10565   [*.c], [echo "C source code"])])
10566 @end example
10567 @noindent
10568 This version avoids the balancing issue altogether, by relying on
10569 @code{AS_CASE} (@pxref{Common Shell Constructs}); it also allows for the
10570 expansion of @code{AC_REQUIRE} to occur prior to the entire case
10571 statement, rather than within a branch of the case statement that might
10572 not be taken.  However, the abstraction comes with a penalty that it is
10573 no longer a quick copy, paste, and edit to get back to shell code.
10574 @end itemize
10577 @node Quotation Rule Of Thumb
10578 @subsection Quotation Rule Of Thumb
10580 To conclude, the quotation rule of thumb is:
10582 @center @emph{One pair of quotes per pair of parentheses.}
10584 Never over-quote, never under-quote, in particular in the definition of
10585 macros.  In the few places where the macros need to use brackets
10586 (usually in C program text or regular expressions), properly quote
10587 @emph{the arguments}!
10589 It is common to read Autoconf programs with snippets like:
10591 @example
10592 AC_TRY_LINK(
10593 changequote(<<, >>)dnl
10594 <<#include <time.h>
10595 #ifndef tzname /* For SGI.  */
10596 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
10597 #endif>>,
10598 changequote([, ])dnl
10599 [atoi (*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)
10600 @end example
10602 @noindent
10603 which is incredibly useless since @code{AC_TRY_LINK} is @emph{already}
10604 double quoting, so you just need:
10606 @example
10607 AC_TRY_LINK(
10608 [#include <time.h>
10609 #ifndef tzname /* For SGI.  */
10610 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
10611 #endif],
10612             [atoi (*tzname);],
10613             [ac_cv_var_tzname=yes],
10614             [ac_cv_var_tzname=no])
10615 @end example
10617 @noindent
10618 The M4-fluent reader might note that these two examples are rigorously
10619 equivalent, since M4 swallows both the @samp{changequote(<<, >>)}
10620 and @samp{<<} @samp{>>} when it @dfn{collects} the arguments: these
10621 quotes are not part of the arguments!
10623 Simplified, the example above is just doing this:
10625 @example
10626 changequote(<<, >>)dnl
10627 <<[]>>
10628 changequote([, ])dnl
10629 @end example
10631 @noindent
10632 instead of simply:
10634 @example
10635 [[]]
10636 @end example
10638 With macros that do not double quote their arguments (which is the
10639 rule), double-quote the (risky) literals:
10641 @example
10642 AC_LINK_IFELSE([AC_LANG_PROGRAM(
10643 [[#include <time.h>
10644 #ifndef tzname /* For SGI.  */
10645 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
10646 #endif]],
10647                                 [atoi (*tzname);])],
10648                [ac_cv_var_tzname=yes],
10649                [ac_cv_var_tzname=no])
10650 @end example
10652 Please note that the macro @code{AC_TRY_LINK} is obsolete, so you really
10653 should be using @code{AC_LINK_IFELSE} instead.
10655 @xref{Quadrigraphs}, for what to do if you run into a hopeless case
10656 where quoting does not suffice.
10658 When you create a @command{configure} script using newly written macros,
10659 examine it carefully to check whether you need to add more quotes in
10660 your macros.  If one or more words have disappeared in the M4
10661 output, you need more quotes.  When in doubt, quote.
10663 However, it's also possible to put on too many layers of quotes.  If
10664 this happens, the resulting @command{configure} script may contain
10665 unexpanded macros.  The @command{autoconf} program checks for this problem
10666 by looking for the string @samp{AC_} in @file{configure}.  However, this
10667 heuristic does not work in general: for example, it does not catch
10668 overquoting in @code{AC_DEFINE} descriptions.
10671 @c ---------------------------------------- Using autom4te
10673 @node Using autom4te
10674 @section Using @command{autom4te}
10676 The Autoconf suite, including M4sugar, M4sh, and Autotest, in addition
10677 to Autoconf per se, heavily rely on M4.  All these different uses
10678 revealed common needs factored into a layer over M4:
10679 @command{autom4te}@footnote{
10681 Yet another great name from Lars J. Aas.
10685 @command{autom4te} is a preprocessor that is like @command{m4}.
10686 It supports M4 extensions designed for use in tools like Autoconf.
10688 @menu
10689 * autom4te Invocation::         A GNU M4 wrapper
10690 * Customizing autom4te::        Customizing the Autoconf package
10691 @end menu
10693 @node autom4te Invocation
10694 @subsection Invoking @command{autom4te}
10696 The command line arguments are modeled after M4's:
10698 @example
10699 autom4te @var{options} @var{files}
10700 @end example
10702 @noindent
10703 @evindex M4
10704 where the @var{files} are directly passed to @command{m4}.  By default,
10705 GNU M4 is found during configuration, but the environment
10706 variable
10707 @env{M4} can be set to tell @command{autom4te} where to look.  In addition
10708 to the regular expansion, it handles the replacement of the quadrigraphs
10709 (@pxref{Quadrigraphs}), and of @samp{__oline__}, the current line in the
10710 output.  It supports an extended syntax for the @var{files}:
10712 @table @file
10713 @item @var{file}.m4f
10714 This file is an M4 frozen file.  Note that @emph{all the previous files
10715 are ignored}.  See the option @option{--melt} for the rationale.
10717 @item @var{file}?
10718 If found in the library path, the @var{file} is included for expansion,
10719 otherwise it is ignored instead of triggering a failure.
10720 @end table
10722 @sp 1
10724 Of course, it supports the Autoconf common subset of options:
10726 @table @option
10727 @item --help
10728 @itemx -h
10729 Print a summary of the command line options and exit.
10731 @item --version
10732 @itemx -V
10733 Print the version number of Autoconf and exit.
10735 @item --verbose
10736 @itemx -v
10737 Report processing steps.
10739 @item --debug
10740 @itemx -d
10741 Don't remove the temporary files and be even more verbose.
10743 @item --include=@var{dir}
10744 @itemx -I @var{dir}
10745 Also look for input files in @var{dir}.  Multiple invocations
10746 accumulate.
10748 @item --output=@var{file}
10749 @itemx -o @var{file}
10750 Save output (script or trace) to @var{file}.  The file @option{-} stands
10751 for the standard output.
10752 @end table
10754 @sp 1
10756 As an extension of @command{m4}, it includes the following options:
10758 @table @option
10759 @item --warnings=@var{category}
10760 @itemx -W @var{category}
10761 @evindex WARNINGS
10762 @c FIXME: Point to the M4sugar macros, not Autoconf's.
10763 Report the warnings related to @var{category} (which can actually be a
10764 comma separated list).  @xref{Reporting Messages}, macro
10765 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
10766 values include:
10768 @table @samp
10769 @item all
10770 report all the warnings
10772 @item none
10773 report none
10775 @item error
10776 treats warnings as errors
10778 @item no-@var{category}
10779 disable warnings falling into @var{category}
10780 @end table
10782 Warnings about @samp{syntax} are enabled by default, and the environment
10783 variable @env{WARNINGS}, a comma separated list of categories, is
10784 honored.  @samp{autom4te -W @var{category}} actually
10785 behaves as if you had run:
10787 @example
10788 autom4te --warnings=syntax,$WARNINGS,@var{category}
10789 @end example
10791 @noindent
10792 For example, if you want to disable defaults and @env{WARNINGS}
10793 of @command{autom4te}, but enable the warnings about obsolete
10794 constructs, you would use @option{-W none,obsolete}.
10796 @cindex Back trace
10797 @cindex Macro invocation stack
10798 @command{autom4te} displays a back trace for errors, but not for
10799 warnings; if you want them, just pass @option{-W error}.
10801 @item --melt
10802 @itemx -M
10803 Do not use frozen files.  Any argument @code{@var{file}.m4f} is
10804 replaced by @code{@var{file}.m4}.  This helps tracing the macros which
10805 are executed only when the files are frozen, typically
10806 @code{m4_define}.  For instance, running:
10808 @example
10809 autom4te --melt 1.m4 2.m4f 3.m4 4.m4f input.m4
10810 @end example
10812 @noindent
10813 is roughly equivalent to running:
10815 @example
10816 m4 1.m4 2.m4 3.m4 4.m4 input.m4
10817 @end example
10819 @noindent
10820 while
10822 @example
10823 autom4te 1.m4 2.m4f 3.m4 4.m4f input.m4
10824 @end example
10826 @noindent
10827 is equivalent to:
10829 @example
10830 m4 --reload-state=4.m4f input.m4
10831 @end example
10833 @item --freeze
10834 @itemx -F
10835 Produce a frozen state file.  @command{autom4te} freezing is stricter
10836 than M4's: it must produce no warnings, and no output other than empty
10837 lines (a line with white space is @emph{not} empty) and comments
10838 (starting with @samp{#}).  Unlike @command{m4}'s similarly-named option,
10839 this option takes no argument:
10841 @example
10842 autom4te 1.m4 2.m4 3.m4 --freeze --output=3.m4f
10843 @end example
10845 @noindent
10846 corresponds to
10848 @example
10849 m4 1.m4 2.m4 3.m4 --freeze-state=3.m4f
10850 @end example
10852 @item --mode=@var{octal-mode}
10853 @itemx -m @var{octal-mode}
10854 Set the mode of the non-traces output to @var{octal-mode}; by default
10855 @samp{0666}.
10856 @end table
10858 @sp 1
10860 @cindex @file{autom4te.cache}
10861 As another additional feature over @command{m4}, @command{autom4te}
10862 caches its results.  GNU M4 is able to produce a regular
10863 output and traces at the same time.  Traces are heavily used in the
10864 GNU Build System: @command{autoheader} uses them to build
10865 @file{config.h.in}, @command{autoreconf} to determine what
10866 GNU Build System components are used, @command{automake} to
10867 ``parse'' @file{configure.ac} etc.  To avoid recomputation,
10868 traces are cached while performing regular expansion,
10869 and conversely.  This cache is (actually, the caches are) stored in
10870 the directory @file{autom4te.cache}.  @emph{It can safely be removed}
10871 at any moment (especially if for some reason @command{autom4te}
10872 considers it trashed).
10874 @table @option
10875 @item --cache=@var{directory}
10876 @itemx -C @var{directory}
10877 Specify the name of the directory where the result should be cached.
10878 Passing an empty value disables caching.  Be sure to pass a relative
10879 file name, as for the time being, global caches are not supported.
10881 @item --no-cache
10882 Don't cache the results.
10884 @item --force
10885 @itemx -f
10886 If a cache is used, consider it obsolete (but update it anyway).
10887 @end table
10889 @sp 1
10891 Because traces are so important to the GNU Build System,
10892 @command{autom4te} provides high level tracing features as compared to
10893 M4, and helps exploiting the cache:
10895 @table @option
10896 @item --trace=@var{macro}[:@var{format}]
10897 @itemx -t @var{macro}[:@var{format}]
10898 Trace the invocations of @var{macro} according to the @var{format}.
10899 Multiple @option{--trace} arguments can be used to list several macros.
10900 Multiple @option{--trace} arguments for a single macro are not
10901 cumulative; instead, you should just make @var{format} as long as
10902 needed.
10904 The @var{format} is a regular string, with newlines if desired, and
10905 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}.  It can
10906 use the following special escapes:
10908 @table @samp
10909 @item $$
10910 @c $$ restore font-lock
10911 The character @samp{$}.
10913 @item $f
10914 The file name from which @var{macro} is called.
10916 @item $l
10917 The line number from which @var{macro} is called.
10919 @item $d
10920 The depth of the @var{macro} call.  This is an M4 technical detail that
10921 you probably don't want to know about.
10923 @item $n
10924 The name of the @var{macro}.
10926 @item $@var{num}
10927 The @var{num}th argument of the call to @var{macro}.
10929 @item $@@
10930 @itemx $@var{sep}@@
10931 @itemx $@{@var{separator}@}@@
10932 All the arguments passed to @var{macro}, separated by the character
10933 @var{sep} or the string @var{separator} (@samp{,} by default).  Each
10934 argument is quoted, i.e., enclosed in a pair of square brackets.
10936 @item $*
10937 @itemx $@var{sep}*
10938 @itemx $@{@var{separator}@}*
10939 As above, but the arguments are not quoted.
10941 @item $%
10942 @itemx $@var{sep}%
10943 @itemx $@{@var{separator}@}%
10944 As above, but the arguments are not quoted, all new line characters in
10945 the arguments are smashed, and the default separator is @samp{:}.
10947 The escape @samp{$%} produces single-line trace outputs (unless you put
10948 newlines in the @samp{separator}), while @samp{$@@} and @samp{$*} do
10949 not.
10950 @end table
10952 @xref{autoconf Invocation}, for examples of trace uses.
10954 @item --preselect=@var{macro}
10955 @itemx -p @var{macro}
10956 Cache the traces of @var{macro}, but do not enable traces.  This is
10957 especially important to save CPU cycles in the future.  For instance,
10958 when invoked, @command{autoconf} preselects all the macros that
10959 @command{autoheader}, @command{automake}, @command{autoreconf}, etc.,
10960 trace, so that running @command{m4} is not needed to trace them: the
10961 cache suffices.  This results in a huge speed-up.
10962 @end table
10964 @sp 1
10966 @cindex Autom4te Library
10967 Finally, @command{autom4te} introduces the concept of @dfn{Autom4te
10968 libraries}.  They consists in a powerful yet extremely simple feature:
10969 sets of combined command line arguments:
10971 @table @option
10972 @item --language=@var{language}
10973 @itemx -l @var{language}
10974 Use the @var{language} Autom4te library.  Current languages include:
10976 @table @code
10977 @item M4sugar
10978 create M4sugar output.
10980 @item M4sh
10981 create M4sh executable shell scripts.
10983 @item Autotest
10984 create Autotest executable test suites.
10986 @item Autoconf-without-aclocal-m4
10987 create Autoconf executable configure scripts without
10988 reading @file{aclocal.m4}.
10990 @item Autoconf
10991 create Autoconf executable configure scripts.  This language inherits
10992 all the characteristics of @code{Autoconf-without-aclocal-m4} and
10993 additionally reads @file{aclocal.m4}.
10994 @end table
10996 @item --prepend-include=@var{dir}
10997 @itemx -B @var{dir}
10998 Prepend directory @var{dir} to the search path.  This is used to include
10999 the language-specific files before any third-party macros.
11001 @end table
11003 @cindex @file{autom4te.cfg}
11004 As an example, if Autoconf is installed in its default location,
11005 @file{/usr/local}, the command @samp{autom4te -l m4sugar foo.m4} is
11006 strictly equivalent to the command:
11008 @example
11009 autom4te --prepend-include /usr/local/share/autoconf \
11010   m4sugar/m4sugar.m4f --warnings syntax foo.m4
11011 @end example
11013 @noindent
11014 Recursive expansion applies here: the command @samp{autom4te -l m4sh foo.m4}
11015 is the same as @samp{autom4te --language M4sugar m4sugar/m4sh.m4f
11016 foo.m4}, i.e.:
11018 @example
11019 autom4te --prepend-include /usr/local/share/autoconf \
11020   m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4
11021 @end example
11023 @noindent
11024 The definition of the languages is stored in @file{autom4te.cfg}.
11026 @node Customizing autom4te
11027 @subsection Customizing @command{autom4te}
11029 One can customize @command{autom4te} via @file{~/.autom4te.cfg} (i.e.,
11030 as found in the user home directory), and @file{./.autom4te.cfg} (i.e.,
11031 as found in the directory from which @command{autom4te} is run).  The
11032 order is first reading @file{autom4te.cfg}, then @file{~/.autom4te.cfg},
11033 then @file{./.autom4te.cfg}, and finally the command line arguments.
11035 In these text files, comments are introduced with @code{#}, and empty
11036 lines are ignored.  Customization is performed on a per-language basis,
11037 wrapped in between a @samp{begin-language: "@var{language}"},
11038 @samp{end-language: "@var{language}"} pair.
11040 Customizing a language stands for appending options (@pxref{autom4te
11041 Invocation}) to the current definition of the language.  Options, and
11042 more generally arguments, are introduced by @samp{args:
11043 @var{arguments}}.  You may use the traditional shell syntax to quote the
11044 @var{arguments}.
11046 As an example, to disable Autoconf caches (@file{autom4te.cache})
11047 globally, include the following lines in @file{~/.autom4te.cfg}:
11049 @verbatim
11050 ## ------------------ ##
11051 ## User Preferences.  ##
11052 ## ------------------ ##
11054 begin-language: "Autoconf-without-aclocal-m4"
11055 args: --no-cache
11056 end-language: "Autoconf-without-aclocal-m4"
11057 @end verbatim
11060 @node Programming in M4sugar
11061 @section Programming in M4sugar
11063 @cindex M4sugar
11064 M4 by itself provides only a small, but sufficient, set of all-purpose
11065 macros.  M4sugar introduces additional generic macros.  Its name was
11066 coined by Lars J. Aas: ``Readability And Greater Understanding Stands 4
11067 M4sugar''.
11069 M4sugar reserves the macro namespace @samp{^_m4_} for internal use, and
11070 the macro namespace @samp{^m4_} for M4sugar macros.  You should not
11071 define your own macros into these namespaces.
11073 @menu
11074 * Redefined M4 Macros::         M4 builtins changed in M4sugar
11075 * Diagnostic Macros::           Diagnostic messages from M4sugar
11076 * Diversion support::           Diversions in M4sugar
11077 * Conditional constructs::      Conditions in M4
11078 * Looping constructs::          Iteration in M4
11079 * Evaluation Macros::           More quotation and evaluation control
11080 * Text processing Macros::      String manipulation in M4
11081 * Number processing Macros::    Arithmetic computation in M4
11082 * Set manipulation Macros::     Set manipulation in M4
11083 * Forbidden Patterns::          Catching unexpanded macros
11084 @end menu
11086 @node Redefined M4 Macros
11087 @subsection Redefined M4 Macros
11089 @msindex{builtin}
11090 @msindex{changecom}
11091 @msindex{changequote}
11092 @msindex{debugfile}
11093 @msindex{debugmode}
11094 @msindex{decr}
11095 @msindex{define}
11096 @msindex{divnum}
11097 @msindex{errprint}
11098 @msindex{esyscmd}
11099 @msindex{eval}
11100 @msindex{format}
11101 @msindex{ifdef}
11102 @msindex{incr}
11103 @msindex{index}
11104 @msindex{indir}
11105 @msindex{len}
11106 @msindex{pushdef}
11107 @msindex{shift}
11108 @msindex{substr}
11109 @msindex{syscmd}
11110 @msindex{sysval}
11111 @msindex{traceoff}
11112 @msindex{traceon}
11113 @msindex{translit}
11114 With a few exceptions, all the M4 native macros are moved in the
11115 @samp{m4_} pseudo-namespace, e.g., M4sugar renames @code{define} as
11116 @code{m4_define} etc.
11118 The list of macros unchanged from M4, except for their name, is:
11119 @itemize @minus
11120 @item m4_builtin
11121 @item m4_changecom
11122 @item m4_changequote
11123 @item m4_debugfile
11124 @item m4_debugmode
11125 @item m4_decr
11126 @item m4_define
11127 @item m4_divnum
11128 @item m4_errprint
11129 @item m4_esyscmd
11130 @item m4_eval
11131 @item m4_format
11132 @item m4_ifdef
11133 @item m4_incr
11134 @item m4_index
11135 @item m4_indir
11136 @item m4_len
11137 @item m4_pushdef
11138 @item m4_shift
11139 @item m4_substr
11140 @item m4_syscmd
11141 @item m4_sysval
11142 @item m4_traceoff
11143 @item m4_traceon
11144 @item m4_translit
11145 @end itemize
11147 Some M4 macros are redefined, and are slightly incompatible with their
11148 native equivalent.
11150 @defmac __file__
11151 @defmacx __line__
11152 @MSindex __file__
11153 @MSindex __line__
11154 All M4 macros starting with @samp{__} retain their original name: for
11155 example, no @code{m4__file__} is defined.
11156 @end defmac
11158 @defmac __oline__
11159 @MSindex __oline__
11160 This is not technically a macro, but a feature of Autom4te.  The
11161 sequence @code{__oline__} can be used similarly to the other m4sugar
11162 location macros, but rather than expanding to the location of the input
11163 file, it is translated to the line number where it appears in the output
11164 file after all other M4 expansions.
11165 @end defmac
11167 @defmac dnl
11168 @MSindex dnl
11169 This macro kept its original name: no @code{m4_dnl} is defined.
11170 @end defmac
11172 @defmac m4_bpatsubst (@var{string}, @var{regexp}, @ovar{replacement})
11173 @msindex{bpatsubst}
11174 This macro corresponds to @code{patsubst}.  The name @code{m4_patsubst}
11175 is kept for future versions of M4sugar, once GNU M4 2.0 is
11176 released and supports extended regular expression syntax.
11177 @end defmac
11179 @defmac m4_bregexp (@var{string}, @var{regexp}, @ovar{replacement})
11180 @msindex{bregexp}
11181 This macro corresponds to @code{regexp}.  The name @code{m4_regexp}
11182 is kept for future versions of M4sugar, once GNU M4 2.0 is
11183 released and supports extended regular expression syntax.
11184 @end defmac
11186 @defmac m4_copy (@var{source}, @var{dest})
11187 @defmacx m4_copy_force (@var{source}, @var{dest})
11188 @defmacx m4_rename (@var{source}, @var{dest})
11189 @defmacx m4_rename_force (@var{source}, @var{dest})
11190 @msindex{copy}
11191 @msindex{copy_force}
11192 @msindex{rename}
11193 @msindex{rename_force}
11194 These macros aren't directly builtins, but are closely related to
11195 @code{m4_pushdef} and @code{m4_defn}.  @code{m4_copy} and
11196 @code{m4_rename} ensure that @var{dest} is undefined, while
11197 @code{m4_copy_force} and @code{m4_rename_force} overwrite any existing
11198 definition.  All four macros then proceed to copy the entire pushdef
11199 stack of definitions of @var{source} over to @var{dest}.  @code{m4_copy}
11200 and @code{m4_copy_force} preserve the source (including in the special
11201 case where @var{source} is undefined), while @code{m4_rename} and
11202 @code{m4_rename_force} undefine the original macro name (making it an
11203 error to rename an undefined @var{source}).
11205 Note that attempting to invoke a renamed macro might not work, since the
11206 macro may have a dependence on helper macros accessed via composition of
11207 @samp{$0} but that were not also renamed; likewise, other macros may
11208 have a hard-coded dependence on @var{source} and could break if
11209 @var{source} has been deleted.  On the other hand, it is always safe to
11210 rename a macro to temporarily move it out of the way, then rename it
11211 back later to restore original semantics.
11212 @end defmac
11214 @defmac m4_defn (@var{macro}@dots{})
11215 @msindex{defn}
11216 This macro fails if @var{macro} is not defined, even when using older
11217 versions of M4 that did not warn.  See @code{m4_undefine}.
11218 Unfortunately, in order to support these older versions of M4, there are
11219 some situations involving unbalanced quotes where concatenating multiple
11220 macros together will work in newer M4 but not in m4sugar; use
11221 quadrigraphs to work around this.
11222 @end defmac
11224 @defmac m4_divert (@var{diversion})
11225 @msindex{divert}
11226 M4sugar relies heavily on diversions, so rather than behaving as a
11227 primitive, @code{m4_divert} behaves like:
11228 @example
11229 m4_divert_pop()m4_divert_push([@var{diversion}])
11230 @end example
11231 @noindent
11232 @xref{Diversion support}, for more details about the use of the
11233 diversion stack.  In particular, this implies that @var{diversion}
11234 should be a named diversion rather than a raw number.  But be aware that
11235 it is seldom necessary to explicitly change the diversion stack, and
11236 that when done incorrectly, it can lead to syntactically invalid
11237 scripts.
11238 @end defmac
11240 @defmac m4_dumpdef (@var{name}@dots{})
11241 @defmacx m4_dumpdefs (@var{name}@dots{})
11242 @msindex{dumpdef}
11243 @msindex{dumpdefs}
11244 @code{m4_dumpdef} is like the M4 builtin, except that this version
11245 requires at least one argument, output always goes to standard error
11246 rather than the current debug file, no sorting is done on multiple
11247 arguments, and an error is issued if any
11248 @var{name} is undefined.  @code{m4_dumpdefs} is a convenience macro that
11249 calls @code{m4_dumpdef} for all of the
11250 @code{m4_pushdef} stack of definitions, starting with the current, and
11251 silently does nothing if @var{name} is undefined.
11253 Unfortunately, due to a limitation in M4 1.4.x, any macro defined as a
11254 builtin is output as the empty string.  This behavior is rectified by
11255 using M4 1.6 or newer.  However, this behavior difference means that
11256 @code{m4_dumpdef} should only be used while developing m4sugar macros,
11257 and never in the final published form of a macro.
11258 @end defmac
11260 @defmac m4_esyscmd_s (@var{command})
11261 @msindex{esyscmd_s}
11262 Like @code{m4_esyscmd}, this macro expands to the result of running
11263 @var{command} in a shell.  The difference is that any trailing newlines
11264 are removed, so that the output behaves more like shell command
11265 substitution.
11266 @end defmac
11268 @defmac m4_exit (@var{exit-status})
11269 @msindex{exit}
11270 This macro corresponds to @code{m4exit}.
11271 @end defmac
11273 @defmac m4_if (@var{comment})
11274 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @ovar{not-equal})
11275 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal-1}, @
11276   @var{string-3}, @var{string-4}, @var{equal-2}, @dots{}, @ovar{not-equal})
11277 @msindex{if}
11278 This macro corresponds to @code{ifelse}.  @var{string-1} and
11279 @var{string-2} are compared literally, so usually one of the two
11280 arguments is passed unquoted.  @xref{Conditional constructs}, for more
11281 conditional idioms.
11282 @end defmac
11284 @defmac m4_include (@var{file})
11285 @defmacx m4_sinclude (@var{file})
11286 @msindex{include}
11287 @msindex{sinclude}
11288 Like the M4 builtins, but warn against multiple inclusions of @var{file}.
11289 @end defmac
11291 @defmac m4_mkstemp (@var{template})
11292 @defmacx m4_maketemp (@var{template})
11293 @msindex{maketemp}
11294 @msindex{mkstemp}
11295 Posix requires @code{maketemp} to replace the trailing @samp{X}
11296 characters in @var{template} with the process id, without regards to the
11297 existence of a file by that name, but this a security hole.  When this
11298 was pointed out to the Posix folks, they agreed to invent a new macro
11299 @code{mkstemp} that always creates a uniquely named file, but not all
11300 versions of GNU M4 support the new macro.  In M4sugar,
11301 @code{m4_maketemp} and @code{m4_mkstemp} are synonyms for each other,
11302 and both have the secure semantics regardless of which macro the
11303 underlying M4 provides.
11304 @end defmac
11306 @defmac m4_popdef (@var{macro}@dots{})
11307 @msindex{popdef}
11308 This macro fails if @var{macro} is not defined, even when using older
11309 versions of M4 that did not warn.  See @code{m4_undefine}.
11310 @end defmac
11312 @defmac m4_undefine (@var{macro}@dots{})
11313 @msindex{undefine}
11314 This macro fails if @var{macro} is not defined, even when using older
11315 versions of M4 that did not warn.  Use
11317 @example
11318 m4_ifdef([@var{macro}], [m4_undefine([@var{macro}])])
11319 @end example
11321 @noindent
11322 if you are not sure whether @var{macro} is defined.
11323 @end defmac
11325 @defmac m4_undivert (@var{diversion}@dots{})
11326 @msindex{undivert}
11327 Unlike the M4 builtin, at least one @var{diversion} must be specified.
11328 Also, since the M4sugar diversion stack prefers named
11329 diversions, the use of @code{m4_undivert} to include files is risky.
11330 @xref{Diversion support}, for more details about the use of the
11331 diversion stack.  But be aware that it is seldom necessary to explicitly
11332 change the diversion stack, and that when done incorrectly, it can lead
11333 to syntactically invalid scripts.
11334 @end defmac
11336 @defmac m4_wrap (@var{text})
11337 @defmacx m4_wrap_lifo (@var{text})
11338 @msindex{wrap}
11339 @msindex{wrap_lifo}
11340 These macros correspond to @code{m4wrap}.  Posix requires arguments of
11341 multiple wrap calls to be reprocessed at EOF in the same order
11342 as the original calls (first-in, first-out).  GNU M4 versions
11343 through 1.4.10, however, reprocess them in reverse order (last-in,
11344 first-out).  Both orders are useful, therefore, you can rely on
11345 @code{m4_wrap} to provide FIFO semantics and @code{m4_wrap_lifo} for
11346 LIFO semantics, regardless of the underlying GNU M4 version.
11348 Unlike the GNU M4 builtin, these macros only recognize one
11349 argument, and avoid token pasting between consecutive invocations.  On
11350 the other hand, nested calls to @code{m4_wrap} from within wrapped text
11351 work just as in the builtin.
11352 @end defmac
11355 @node Diagnostic Macros
11356 @subsection Diagnostic messages from M4sugar
11357 @cindex Messages, from @command{M4sugar}
11359 When macros statically diagnose abnormal situations, benign or fatal,
11360 they should report them using these macros.  For issuing dynamic issues,
11361 i.e., when @command{configure} is run, see @ref{Printing Messages}.
11363 @defmac m4_assert (@var{expression}, @dvar{exit-status, 1})
11364 @msindex{assert}
11365 Assert that the arithmetic @var{expression} evaluates to non-zero.
11366 Otherwise, issue a fatal error, and exit @command{autom4te} with
11367 @var{exit-status}.
11368 @end defmac
11370 @defmac m4_errprintn (@var{message})
11371 @msindex{errprintn}
11372 Similar to the builtin @code{m4_errprint}, except that a newline is
11373 guaranteed after @var{message}.
11374 @end defmac
11376 @anchor{m4_fatal}
11377 @defmac m4_fatal (@var{message})
11378 @msindex{fatal}
11379 Report a severe error @var{message} prefixed with the current location,
11380 and have @command{autom4te} die.
11381 @end defmac
11383 @defmac m4_location
11384 @msindex{location}
11385 Useful as a prefix in a message line.  Short for:
11386 @example
11387 __file__:__line__
11388 @end example
11389 @end defmac
11391 @anchor{m4_warn}
11392 @defmac m4_warn (@var{category}, @var{message})
11393 @msindex{warn}
11394 Report @var{message} as a warning (or as an error if requested by the
11395 user) if warnings of the @var{category} are turned on.  If the message
11396 is emitted, it is prefixed with the current location, and followed by a
11397 call trace of all macros defined via @code{AC_DEFUN} used to get to the
11398 current expansion.  You are encouraged to use standard categories, which
11399 currently include:
11401 @table @samp
11402 @item all
11403 messages that don't fall into one of the following categories.  Use of an
11404 empty @var{category} is equivalent.
11406 @item cross
11407 related to cross compilation issues.
11409 @item obsolete
11410 use of an obsolete construct.
11412 @item syntax
11413 dubious syntactic constructs, incorrectly ordered macro calls.
11414 @end table
11415 @end defmac
11418 @node Diversion support
11419 @subsection Diversion support
11421 M4sugar makes heavy use of diversions under the hood, because it is
11422 often the case that
11423 text that must appear early in the output is not discovered until late
11424 in the input.  Additionally, some of the topological sorting algorithms
11425 used in resolving macro dependencies use diversions.  However, most
11426 macros should not need to change diversions directly, but rather rely on
11427 higher-level M4sugar macros to manage diversions transparently.  If you
11428 change diversions improperly, you risk generating a syntactically
11429 invalid script, because an incorrect diversion will violate assumptions
11430 made by many macros about whether prerequisite text has been previously
11431 output.  In short, if you manually change the diversion, you should not
11432 expect any macros provided by the Autoconf package to work until you
11433 have restored the diversion stack back to its original state.
11435 In the rare case that it is necessary to write a macro that explicitly
11436 outputs text to a different diversion, it is important to be aware of an
11437 M4 limitation regarding diversions: text only goes to a diversion if it
11438 is not part of argument collection.  Therefore, any macro that changes
11439 the current diversion cannot be used as an unquoted argument to another
11440 macro, but must be expanded at the top level.  The macro
11441 @code{m4_expand} will diagnose any attempt to change diversions, since
11442 it is generally useful only as an argument to another macro.  The
11443 following example shows what happens when diversion manipulation is
11444 attempted within macro arguments:
11446 @example
11447 m4_do([normal text]
11448 m4_divert_push([KILL])unwanted[]m4_divert_pop([KILL])
11449 [m4_divert_push([KILL])discarded[]m4_divert_pop([KILL])])dnl
11450 @result{}normal text
11451 @result{}unwanted
11452 @end example
11454 @noindent
11455 Notice that the unquoted text @code{unwanted} is output, even though it
11456 was processed while the current diversion was @code{KILL}, because it
11457 was collected as part of the argument to @code{m4_do}.  However, the
11458 text @code{discarded} disappeared as desired, because the diversion
11459 changes were single-quoted, and were not expanded until the top-level
11460 rescan of the output of @code{m4_do}.
11462 To make diversion management easier, M4sugar uses the concept of named
11463 diversions.  Rather than using diversion numbers directly, it is nicer
11464 to associate a name with each diversion.  The diversion number associated
11465 with a particular diversion name is an implementation detail, and a
11466 syntax warning is issued if a diversion number is used instead of a
11467 name.  In general, you should not output text
11468 to a named diversion until after calling the appropriate initialization
11469 routine for your language (@code{m4_init}, @code{AS_INIT},
11470 @code{AT_INIT}, @dots{}), although there are some exceptions documented
11471 below.
11473 M4sugar defines two named diversions.
11474 @table @code
11475 @item KILL
11476 Text written to this diversion is discarded.  This is the default
11477 diversion once M4sugar is initialized.
11478 @item GROW
11479 This diversion is used behind the scenes by topological sorting macros,
11480 such as @code{AC_REQUIRE}.
11481 @end table
11483 M4sh adds several more named diversions.
11484 @table @code
11485 @item BINSH
11486 This diversion is reserved for the @samp{#!} interpreter line.
11487 @item HEADER-REVISION
11488 This diversion holds text from @code{AC_REVISION}.
11489 @item HEADER-COMMENT
11490 This diversion holds comments about the purpose of a file.
11491 @item HEADER-COPYRIGHT
11492 This diversion is managed by @code{AC_COPYRIGHT}.
11493 @item M4SH-SANITIZE
11494 This diversion contains M4sh sanitization code, used to ensure M4sh is
11495 executing in a reasonable shell environment.
11496 @item M4SH-INIT
11497 This diversion contains M4sh initialization code, initializing variables
11498 that are required by other M4sh macros.
11499 @item BODY
11500 This diversion contains the body of the shell code, and is the default
11501 diversion once M4sh is initialized.
11502 @end table
11504 Autotest inherits diversions from M4sh, and changes the default
11505 diversion from @code{BODY} back to @code{KILL}.  It also adds several
11506 more named diversions, with the following subset designed for developer
11507 use.
11508 @table @code
11509 @item PREPARE_TESTS
11510 This diversion contains initialization sequences which are executed
11511 after @file{atconfig} and @file{atlocal}, and after all command line
11512 arguments have been parsed, but prior to running any tests.  It can be
11513 used to set up state that is required across all tests.  This diversion
11514 will work even before @code{AT_INIT}.
11515 @end table
11517 Autoconf inherits diversions from M4sh, and adds the following named
11518 diversions which developers can utilize.
11519 @table @code
11520 @item DEFAULTS
11521 This diversion contains shell variable assignments to set defaults that
11522 must be in place before arguments are parsed.  This diversion is placed
11523 early enough in @file{configure} that it is unsafe to expand any
11524 autoconf macros into this diversion.
11525 @item HELP_ENABLE
11526 If @code{AC_PRESERVE_HELP_ORDER} was used, then text placed in this
11527 diversion will be included as part of a quoted here-doc providing all of
11528 the @option{--help} output of @file{configure} related to options
11529 created by @code{AC_ARG_WITH} and @code{AC_ARG_ENABLE}.
11530 @item INIT_PREPARE
11531 This diversion occurs after all command line options have been parsed,
11532 but prior to the main body of the @file{configure} script.  This
11533 diversion is the last chance to insert shell code such as variable
11534 assignments or shell function declarations that will used by the
11535 expansion of other macros.
11536 @end table
11538 For now, the remaining named diversions of Autoconf, Autoheader, and
11539 Autotest are not documented.  In other words,
11540 intentionally outputting text into an undocumented diversion is subject
11541 to breakage in a future release of Autoconf.
11543 @defmac m4_cleardivert (@var{diversion}@dots{})
11544 @msindex{cleardivert}
11545 Permanently discard any text that has been diverted into
11546 @var{diversion}.
11547 @end defmac
11549 @defmac m4_divert_once (@var{diversion}, @ovar{content})
11550 @msindex{divert_once}
11551 Similar to @code{m4_divert_text}, except that @var{content} is only
11552 output to @var{diversion} if this is the first time that
11553 @code{m4_divert_once} has been called with its particular arguments.
11554 @end defmac
11556 @defmac m4_divert_pop (@ovar{diversion})
11557 @msindex{divert_pop}
11558 If provided, check that the current diversion is indeed @var{diversion}.
11559 Then change to the diversion located earlier on the stack, giving an
11560 error if an attempt is made to pop beyond the initial m4sugar diversion
11561 of @code{KILL}.
11562 @end defmac
11564 @defmac m4_divert_push (@var{diversion})
11565 @msindex{divert_push}
11566 Remember the former diversion on the diversion stack, and output
11567 subsequent text into @var{diversion}.  M4sugar maintains a diversion
11568 stack, and issues an error if there is not a matching pop for every
11569 push.
11570 @end defmac
11572 @defmac m4_divert_text (@var{diversion}, @ovar{content})
11573 @msindex{divert_text}
11574 Output @var{content} and a newline into @var{diversion}, without
11575 affecting the current diversion.  Shorthand for:
11576 @example
11577 m4_divert_push([@var{diversion}])@var{content}
11578 m4_divert_pop([@var{diversion}])dnl
11579 @end example
11581 One use of @code{m4_divert_text} is to develop two related macros, where
11582 macro @samp{MY_A} does the work, but adjusts what work is performed
11583 based on whether the optional macro @samp{MY_B} has also been expanded.
11584 Of course, it is possible to use @code{AC_BEFORE} within @code{MY_A} to
11585 require that @samp{MY_B} occurs first, if it occurs at all.  But this
11586 imposes an ordering restriction on the user; it would be nicer if macros
11587 @samp{MY_A} and @samp{MY_B} can be invoked in either order.  The trick
11588 is to let @samp{MY_B} leave a breadcrumb in an early diversion, which
11589 @samp{MY_A} can then use to determine whether @samp{MY_B} has been
11590 expanded.
11592 @example
11593 AC_DEFUN([MY_A],
11594 [# various actions
11595 if test -n "$b_was_used"; then
11596   # extra action
11597 fi])
11598 AC_DEFUN([MY_B],
11599 [AC_REQUIRE([MY_A])dnl
11600 m4_divert_text([INIT_PREPARE], [b_was_used=true])])
11601 @end example
11603 @end defmac
11605 @defmac m4_init
11606 @msindex{init}
11607 Initialize the M4sugar environment, setting up the default named
11608 diversion to be @code{KILL}.
11609 @end defmac
11611 @node Conditional constructs
11612 @subsection Conditional constructs
11614 The following macros provide additional conditional constructs as
11615 convenience wrappers around @code{m4_if}.
11617 @defmac m4_bmatch (@var{string}, @var{regex-1}, @var{value-1}, @
11618   @ovar{regex-2}, @ovar{value-2}, @dots{}, @ovar{default})
11619 @msindex{bmatch}
11620 The string @var{string} is repeatedly compared against a series of
11621 @var{regex} arguments; if a match is found, the expansion is the
11622 corresponding @var{value}, otherwise, the macro moves on to the next
11623 @var{regex}.  If no @var{regex} match, then the result is the optional
11624 @var{default}, or nothing.
11625 @end defmac
11627 @defmac m4_bpatsubsts (@var{string}, @var{regex-1}, @var{subst-1}, @
11628   @ovar{regex-2}, @ovar{subst-2}, @dots{})
11629 @msindex{bpatsubsts}
11630 The string @var{string} is altered by @var{regex-1} and @var{subst-1},
11631 as if by:
11632 @example
11633 m4_bpatsubst([[@var{string}]], [@var{regex}], [@var{subst}])
11634 @end example
11636 @noindent
11637 The result of the substitution is then passed through the next set of
11638 @var{regex} and @var{subst}, and so forth.  An empty @var{subst} implies
11639 deletion of any matched portions in the current string.  Note that this
11640 macro over-quotes @var{string}; this behavior is intentional, so that
11641 the result of each step of the recursion remains as a quoted string.
11642 However, it means that anchors (@samp{^} and @samp{$} in the @var{regex}
11643 will line up with the extra quotations, and not the characters of the
11644 original string.  The overquoting is removed after the final
11645 substitution.
11646 @end defmac
11648 @defmac m4_case (@var{string}, @var{value-1}, @var{if-value-1}, @
11649   @ovar{value-2}, @ovar{if-value-2}, @dots{}, @ovar{default})
11650 @msindex{case}
11651 Test @var{string} against multiple @var{value} possibilities, resulting
11652 in the first @var{if-value} for a match, or in the optional
11653 @var{default}.  This is shorthand for:
11654 @example
11655 m4_if([@var{string}], [@var{value-1}], [@var{if-value-1}],
11656       [@var{string}], [@var{value-2}], [@var{if-value-2}], @dots{},
11657       [@var{default}])
11658 @end example
11659 @end defmac
11661 @defmac m4_cond (@var{test-1}, @var{value-1}, @var{if-value-1}, @
11662   @ovar{test-2}, @ovar{value-2}, @ovar{if-value-2}, @dots{}, @ovar{default})
11663 @msindex{cond}
11664 This macro was introduced in Autoconf 2.62.  Similar to @code{m4_if},
11665 except that each @var{test} is expanded only when it is encountered.
11666 This is useful for short-circuiting expensive tests; while @code{m4_if}
11667 requires all its strings to be expanded up front before doing
11668 comparisons, @code{m4_cond} only expands a @var{test} when all earlier
11669 tests have failed.
11671 For an example, these two sequences give the same result, but in the
11672 case where @samp{$1} does not contain a backslash, the @code{m4_cond}
11673 version only expands @code{m4_index} once, instead of five times, for
11674 faster computation if this is a common case for @samp{$1}.  Notice that
11675 every third argument is unquoted for @code{m4_if}, and quoted for
11676 @code{m4_cond}:
11678 @example
11679 m4_if(m4_index([$1], [\]), [-1], [$2],
11680       m4_eval(m4_index([$1], [\\]) >= 0), [1], [$2],
11681       m4_eval(m4_index([$1], [\$]) >= 0), [1], [$2],
11682       m4_eval(m4_index([$1], [\`]) >= 0), [1], [$3],
11683       m4_eval(m4_index([$1], [\"]) >= 0), [1], [$3],
11684       [$2])
11685 m4_cond([m4_index([$1], [\])], [-1], [$2],
11686         [m4_eval(m4_index([$1], [\\]) >= 0)], [1], [$2],
11687         [m4_eval(m4_index([$1], [\$]) >= 0)], [1], [$2],
11688         [m4_eval(m4_index([$1], [\`]) >= 0)], [1], [$3],
11689         [m4_eval(m4_index([$1], [\"]) >= 0)], [1], [$3],
11690         [$2])
11691 @end example
11692 @end defmac
11694 @defmac m4_default (@var{expr-1}, @var{expr-2})
11695 @defmacx m4_default_quoted (@var{expr-1}, @var{expr-2})
11696 @defmacx m4_default_nblank (@var{expr-1}, @ovar{expr-2})
11697 @defmacx m4_default_nblank_quoted (@var{expr-1}, @ovar{expr-2})
11698 @msindex{default}
11699 @msindex{default_quoted}
11700 @msindex{default_nblank}
11701 @msindex{default_nblank_quoted}
11702 If @var{expr-1} contains text, use it.  Otherwise, select @var{expr-2}.
11703 @code{m4_default} expands the result, while @code{m4_default_quoted}
11704 does not.  Useful for providing a fixed default if the expression that
11705 results in @var{expr-1} would otherwise be empty.  The difference
11706 between @code{m4_default} and @code{m4_default_nblank} is whether an
11707 argument consisting of just blanks (space, tab, newline) is
11708 significant.  When using the expanding versions, note that an argument
11709 may contain text but still expand to an empty string.
11711 @example
11712 m4_define([active], [ACTIVE])dnl
11713 m4_define([empty], [])dnl
11714 m4_define([demo1], [m4_default([$1], [$2])])dnl
11715 m4_define([demo2], [m4_default_quoted([$1], [$2])])dnl
11716 m4_define([demo3], [m4_default_nblank([$1], [$2])])dnl
11717 m4_define([demo4], [m4_default_nblank_quoted([$1], [$2])])dnl
11718 demo1([active], [default])
11719 @result{}ACTIVE
11720 demo1([], [active])
11721 @result{}ACTIVE
11722 demo1([empty], [text])
11723 @result{}
11724 -demo1([ ], [active])-
11725 @result{}- -
11726 demo2([active], [default])
11727 @result{}active
11728 demo2([], [active])
11729 @result{}active
11730 demo2([empty], [text])
11731 @result{}empty
11732 -demo2([ ], [active])-
11733 @result{}- -
11734 demo3([active], [default])
11735 @result{}ACTIVE
11736 demo3([], [active])
11737 @result{}ACTIVE
11738 demo3([empty], [text])
11739 @result{}
11740 -demo3([ ], [active])-
11741 @result{}-ACTIVE-
11742 demo4([active], [default])
11743 @result{}active
11744 demo4([], [active])
11745 @result{}active
11746 demo4([empty], [text])
11747 @result{}empty
11748 -demo4([ ], [active])-
11749 @result{}-active-
11750 @end example
11751 @end defmac
11753 @defmac m4_ifblank (@var{cond}, @ovar{if-blank}, @ovar{if-text})
11754 @defmacx m4_ifnblank (@var{cond}, @ovar{if-text}, @ovar{if-blank})
11755 @msindex{ifblank}
11756 @msindex{ifnblank}
11757 If @var{cond} is empty or consists only of blanks (space, tab, newline),
11758 then expand @var{if-blank}; otherwise, expand @var{if-text}.  Two
11759 variants exist, in order to make it easier to select the correct logical
11760 sense when using only two parameters.  Note that this is more efficient
11761 than the equivalent behavior of:
11762 @example
11763 m4_ifval(m4_normalize([@var{cond}]), @var{if-text}, @var{if-blank})
11764 @end example
11765 @end defmac
11767 @defmac m4_ifndef (@var{macro}, @var{if-not-defined}, @ovar{if-defined})
11768 @msindex{ifndef}
11769 This is shorthand for:
11770 @example
11771 m4_ifdef([@var{macro}], [@var{if-defined}], [@var{if-not-defined}])
11772 @end example
11773 @end defmac
11775 @defmac m4_ifset (@var{macro}, @ovar{if-true}, @ovar{if-false})
11776 @msindex{ifset}
11777 If @var{macro} is undefined, or is defined as the empty string, expand
11778 to @var{if-false}.  Otherwise, expands to @var{if-true}.  Similar to:
11779 @example
11780 m4_ifval(m4_defn([@var{macro}]), [@var{if-true}], [@var{if-false}])
11781 @end example
11782 @noindent
11783 except that it is not an error if @var{macro} is undefined.
11784 @end defmac
11786 @defmac m4_ifval (@var{cond}, @ovar{if-true}, @ovar{if-false})
11787 @msindex{ifval}
11788 Expands to @var{if-true} if @var{cond} is not empty, otherwise to
11789 @var{if-false}.  This is shorthand for:
11790 @example
11791 m4_if([@var{cond}], [], [@var{if-true}], [@var{if-false}])
11792 @end example
11793 @end defmac
11795 @defmac m4_ifvaln (@var{cond}, @ovar{if-true}, @ovar{if-false})
11796 @msindex{ifvaln}
11797 Similar to @code{m4_ifval}, except guarantee that a newline is present
11798 after any non-empty expansion.  Often followed by @code{dnl}.
11799 @end defmac
11801 @defmac m4_n (@var{text})
11802 @msindex{n}
11803 Expand to @var{text}, and add a newline if @var{text} is not empty.
11804 Often followed by @code{dnl}.
11805 @end defmac
11808 @node Looping constructs
11809 @subsection Looping constructs
11811 The following macros are useful in implementing recursive algorithms in
11812 M4, including loop operations.  An M4 list is formed by quoting a list
11813 of quoted elements; generally the lists are comma-separated, although
11814 @code{m4_foreach_w} is whitespace-separated.  For example, the list
11815 @samp{[[a], [b,c]]} contains two elements: @samp{[a]} and @samp{[b,c]}.
11816 It is common to see lists with unquoted elements when those elements are
11817 not likely to be macro names, as in @samp{[fputc_unlocked,
11818 fgetc_unlocked]}.
11820 Although not generally recommended, it is possible for quoted lists to
11821 have side effects; all side effects are expanded only once, and prior to
11822 visiting any list element.  On the other hand, the fact that unquoted
11823 macros are expanded exactly once means that macros without side effects
11824 can be used to generate lists.  For example,
11826 @example
11827 m4_foreach([i], [[1], [2], [3]m4_errprintn([hi])], [i])
11828 @error{}hi
11829 @result{}123
11830 m4_define([list], [[1], [2], [3]])
11831 @result{}
11832 m4_foreach([i], [list], [i])
11833 @result{}123
11834 @end example
11836 @defmac m4_argn (@var{n}, @ovar{arg}@dots{})
11837 @msindex{argn}
11838 Extracts argument @var{n} (larger than 0) from the remaining arguments.
11839 If there are too few arguments, the empty string is used.  For any
11840 @var{n} besides 1, this is more efficient than the similar
11841 @samp{m4_car(m4_shiftn([@var{n}], [], [@var{arg}@dots{}]))}.
11842 @end defmac
11844 @defmac m4_car (@var{arg}@dots{})
11845 @msindex{car}
11846 Expands to the quoted first @var{arg}.  Can be used with @code{m4_cdr}
11847 to recursively iterate
11848 through a list.  Generally, when using quoted lists of quoted elements,
11849 @code{m4_car} should be called without any extra quotes.
11850 @end defmac
11852 @defmac m4_cdr (@var{arg}@dots{})
11853 @msindex{cdr}
11854 Expands to a quoted list of all but the first @var{arg}, or the empty
11855 string if there was only one argument.  Generally, when using quoted
11856 lists of quoted elements, @code{m4_cdr} should be called without any
11857 extra quotes.
11859 For example, this is a simple implementation of @code{m4_map}; note how
11860 each iteration checks for the end of recursion, then merely applies the
11861 first argument to the first element of the list, then repeats with the
11862 rest of the list.  (The actual implementation in M4sugar is a bit more
11863 involved, to gain some speed and share code with @code{m4_map_sep}, and
11864 also to avoid expanding side effects in @samp{$2} twice).
11865 @example
11866 m4_define([m4_map], [m4_ifval([$2],
11867   [m4_apply([$1], m4_car($2))[]$0([$1], m4_cdr($2))])])dnl
11868 m4_map([ m4_eval], [[[1]], [[1+1]], [[10],[16]]])
11869 @result{} 1 2 a
11870 @end example
11871 @end defmac
11873 @defmac m4_for (@var{var}, @var{first}, @var{last}, @ovar{step}, @
11874   @var{expression})
11875 @msindex{for}
11876 Loop over the numeric values between @var{first} and @var{last}
11877 including bounds by increments of @var{step}.  For each iteration,
11878 expand @var{expression} with the numeric value assigned to @var{var}.
11879 If @var{step} is omitted, it defaults to @samp{1} or @samp{-1} depending
11880 on the order of the limits.  If given, @var{step} has to match this
11881 order.  The number of iterations is determined independently from
11882 definition of @var{var}; iteration cannot be short-circuited or
11883 lengthened by modifying @var{var} from within @var{expression}.
11884 @end defmac
11886 @defmac m4_foreach (@var{var}, @var{list}, @var{expression})
11887 @msindex{foreach}
11888 Loop over the comma-separated M4 list @var{list}, assigning each value
11889 to @var{var}, and expand @var{expression}.  The following example
11890 outputs two lines:
11892 @example
11893 m4_foreach([myvar], [[foo], [bar, baz]],
11894            [echo myvar
11895 ])dnl
11896 @result{}echo foo
11897 @result{}echo bar, baz
11898 @end example
11900 Note that for some forms of @var{expression}, it may be faster to use
11901 @code{m4_map_args}.
11902 @end defmac
11904 @anchor{m4_foreach_w}
11905 @defmac m4_foreach_w (@var{var}, @var{list}, @var{expression})
11906 @msindex{foreach_w}
11907 Loop over the white-space-separated list @var{list}, assigning each value
11908 to @var{var}, and expand @var{expression}.  If @var{var} is only
11909 referenced once in @var{expression}, it is more efficient to use
11910 @code{m4_map_args_w}.
11912 The deprecated macro @code{AC_FOREACH} is an alias of
11913 @code{m4_foreach_w}.
11914 @end defmac
11916 @defmac m4_map (@var{macro}, @var{list})
11917 @defmacx m4_mapall (@var{macro}, @var{list})
11918 @defmacx m4_map_sep (@var{macro}, @var{separator}, @var{list})
11919 @defmacx m4_mapall_sep (@var{macro}, @var{separator}, @var{list})
11920 @msindex{map}
11921 @msindex{mapall}
11922 @msindex{map_sep}
11923 @msindex{mapall_sep}
11924 Loop over the comma separated quoted list of argument descriptions in
11925 @var{list}, and invoke @var{macro} with the arguments.  An argument
11926 description is in turn a comma-separated quoted list of quoted elements,
11927 suitable for @code{m4_apply}.  The macros @code{m4_map} and
11928 @code{m4_map_sep} ignore empty argument descriptions, while
11929 @code{m4_mapall} and @code{m4_mapall_sep} invoke @var{macro} with no
11930 arguments.  The macros @code{m4_map_sep} and @code{m4_mapall_sep}
11931 additionally expand @var{separator} between invocations of @var{macro}.
11933 Note that @var{separator} is expanded, unlike in @code{m4_join}.  When
11934 separating output with commas, this means that the map result can be
11935 used as a series of arguments, by using a single-quoted comma as
11936 @var{separator}, or as a single string, by using a double-quoted comma.
11938 @example
11939 m4_map([m4_count], [])
11940 @result{}
11941 m4_map([ m4_count], [[],
11942                      [[1]],
11943                      [[1], [2]]])
11944 @result{} 1 2
11945 m4_mapall([ m4_count], [[],
11946                         [[1]],
11947                         [[1], [2]]])
11948 @result{} 0 1 2
11949 m4_map_sep([m4_eval], [,], [[[1+2]],
11950                             [[10], [16]]])
11951 @result{}3,a
11952 m4_map_sep([m4_echo], [,], [[[a]], [[b]]])
11953 @result{}a,b
11954 m4_count(m4_map_sep([m4_echo], [,], [[[a]], [[b]]]))
11955 @result{}2
11956 m4_map_sep([m4_echo], [[,]], [[[a]], [[b]]])
11957 @result{}a,b
11958 m4_count(m4_map_sep([m4_echo], [[,]], [[[a]], [[b]]]))
11959 @result{}1
11960 @end example
11961 @end defmac
11963 @defmac m4_map_args (@var{macro}, @var{arg}@dots{})
11964 @msindex{map_args}
11965 Repeatedly invoke @var{macro} with each successive @var{arg} as its only
11966 argument.  In the following example, three solutions are presented with
11967 the same expansion; the solution using @code{m4_map_args} is the most
11968 efficient.
11969 @example
11970 m4_define([active], [ACTIVE])dnl
11971 m4_foreach([var], [[plain], [active]], [ m4_echo(m4_defn([var]))])
11972 @result{} plain active
11973 m4_map([ m4_echo], [[[plain]], [[active]]])
11974 @result{} plain active
11975 m4_map_args([ m4_echo], [plain], [active])
11976 @result{} plain active
11977 @end example
11979 In cases where it is useful to operate on additional parameters besides
11980 the list elements, the macro @code{m4_curry} can be used in @var{macro}
11981 to supply the argument currying necessary to generate the desired
11982 argument list.  In the following example, @code{list_add_n} is more
11983 efficient than @code{list_add_x}.  On the other hand, using
11984 @code{m4_map_args_sep} can be even more efficient.
11986 @example
11987 m4_define([list], [[1], [2], [3]])dnl
11988 m4_define([add], [m4_eval(([$1]) + ([$2]))])dnl
11989 dnl list_add_n(N, ARG...)
11990 dnl Output a list consisting of each ARG added to N
11991 m4_define([list_add_n],
11992 [m4_shift(m4_map_args([,m4_curry([add], [$1])], m4_shift($@@)))])dnl
11993 list_add_n([1], list)
11994 @result{}2,3,4
11995 list_add_n([2], list)
11996 @result{}3,4,5
11997 m4_define([list_add_x],
11998 [m4_shift(m4_foreach([var], m4_dquote(m4_shift($@@)),
11999   [,add([$1],m4_defn([var]))]))])dnl
12000 list_add_x([1], list)
12001 @result{}2,3,4
12002 @end example
12003 @end defmac
12005 @defmac m4_map_args_pair (@var{macro}, @dvar{macro-end, macro}, @
12006   @var{arg}@dots{})
12007 @msindex{map_args_pair}
12008 For every pair of arguments @var{arg}, invoke @var{macro} with two
12009 arguments.  If there is an odd number of arguments, invoke
12010 @var{macro-end}, which defaults to @var{macro}, with the remaining
12011 argument.
12013 @example
12014 m4_map_args_pair([, m4_reverse], [], [1], [2], [3])
12015 @result{}, 2, 1, 3
12016 m4_map_args_pair([, m4_reverse], [, m4_dquote], [1], [2], [3])
12017 @result{}, 2, 1, [3]
12018 m4_map_args_pair([, m4_reverse], [, m4_dquote], [1], [2], [3], [4])
12019 @result{}, 2, 1, 4, 3
12020 @end example
12021 @end defmac
12023 @defmac m4_map_args_sep (@ovar{pre}, @ovar{post}, @ovar{sep}, @var{arg}@dots{})
12024 @msindex{map_args_sep}
12025 Expand the sequence @code{@var{pre}[@var{arg}]@var{post}} for each
12026 argument, additionally expanding @var{sep} between arguments.  One
12027 common use of this macro is constructing a macro call, where the opening
12028 and closing parentheses are split between @var{pre} and @var{post}; in
12029 particular, @code{m4_map_args([@var{macro}], [@var{arg}])} is equivalent
12030 to @code{m4_map_args_sep([@var{macro}(], [)], [], [@var{arg}])}.  This
12031 macro provides the most efficient means for iterating over an arbitrary
12032 list of arguments, particularly when repeatedly constructing a macro
12033 call with more arguments than @var{arg}.
12034 @end defmac
12036 @defmac m4_map_args_w (@var{string}, @ovar{pre}, @ovar{post}, @ovar{sep})
12037 @msindex{map_args_w}
12038 Expand the sequence @code{@var{pre}[word]@var{post}} for each word in
12039 the whitespace-separated @var{string}, additionally expanding @var{sep}
12040 between words.  This macro provides the most efficient means for
12041 iterating over a whitespace-separated string.  In particular,
12042 @code{m4_map_args_w([@var{string}], [@var{action}(], [)])} is more
12043 efficient than @code{m4_foreach_w([var], [@var{string}],
12044 [@var{action}(m4_defn([var]))])}.
12045 @end defmac
12047 @defmac m4_shiftn (@var{count}, @dots{})
12048 @defmacx m4_shift2 (@dots{})
12049 @defmacx m4_shift3 (@dots{})
12050 @msindex{shift2}
12051 @msindex{shift3}
12052 @msindex{shiftn}
12053 @code{m4_shiftn} performs @var{count} iterations of @code{m4_shift},
12054 along with validation that enough arguments were passed in to match the
12055 shift count, and that the count is positive.  @code{m4_shift2} and
12056 @code{m4_shift3} are specializations
12057 of @code{m4_shiftn}, introduced in Autoconf 2.62, and are more efficient
12058 for two and three shifts, respectively.
12059 @end defmac
12061 @defmac m4_stack_foreach (@var{macro}, @var{action})
12062 @defmacx m4_stack_foreach_lifo (@var{macro}, @var{action})
12063 @msindex{stack_foreach}
12064 @msindex{stack_foreach_lifo}
12065 For each of the @code{m4_pushdef} definitions of @var{macro}, expand
12066 @var{action} with the single argument of a definition of @var{macro}.
12067 @code{m4_stack_foreach} starts with the oldest definition, while
12068 @code{m4_stack_foreach_lifo} starts with the current definition.
12069 @var{action} should not push or pop definitions of @var{macro}, nor is
12070 there any guarantee that the current definition of @var{macro} matches
12071 the argument that was passed to @var{action}.  The macro @code{m4_curry}
12072 can be used if @var{action} needs more than one argument, although in
12073 that case it is more efficient to use @var{m4_stack_foreach_sep}.
12075 Due to technical limitations, there are a few low-level m4sugar
12076 functions, such as @code{m4_pushdef}, that cannot be used as the
12077 @var{macro} argument.
12079 @example
12080 m4_pushdef([a], [1])m4_pushdef([a], [2])dnl
12081 m4_stack_foreach([a], [ m4_incr])
12082 @result{} 2 3
12083 m4_stack_foreach_lifo([a], [ m4_curry([m4_substr], [abcd])])
12084 @result{} cd bcd
12085 @end example
12086 @end defmac
12088 @defmac m4_stack_foreach_sep (@var{macro}, @ovar{pre}, @ovar{post}, @ovar{sep})
12089 @defmacx m4_stack_foreach_sep_lifo (@var{macro}, @ovar{pre}, @ovar{post}, @
12090   @ovar{sep})
12091 @msindex{stack_foreach_sep}
12092 @msindex{stack_foreach_sep_lifo}
12093 Expand the sequence @code{@var{pre}[definition]@var{post}} for each
12094 @code{m4_pushdef} definition of @var{macro}, additionally expanding
12095 @var{sep} between definitions.  @code{m4_stack_foreach_sep} visits the
12096 oldest definition first, while @code{m4_stack_foreach_sep_lifo} visits
12097 the current definition first.  This macro provides the most efficient
12098 means for iterating over a pushdef stack.  In particular,
12099 @code{m4_stack_foreach([@var{macro}], [@var{action}])} is short for
12100 @code{m4_stack_foreach_sep([@var{macro}], [@var{action}(], [)])}.
12101 @end defmac
12103 @node Evaluation Macros
12104 @subsection Evaluation Macros
12106 The following macros give some control over the order of the evaluation
12107 by adding or removing levels of quotes.
12109 @defmac m4_apply (@var{macro}, @var{list})
12110 @msindex{apply}
12111 Apply the elements of the quoted, comma-separated @var{list} as the
12112 arguments to @var{macro}.  If @var{list} is empty, invoke @var{macro}
12113 without arguments.  Note the difference between @code{m4_indir}, which
12114 expects its first argument to be a macro name but can use names that are
12115 otherwise invalid, and @code{m4_apply}, where @var{macro} can contain
12116 other text, but must end in a valid macro name.
12117 @example
12118 m4_apply([m4_count], [])
12119 @result{}0
12120 m4_apply([m4_count], [[]])
12121 @result{}1
12122 m4_apply([m4_count], [[1], [2]])
12123 @result{}2
12124 m4_apply([m4_join], [[|], [1], [2]])
12125 @result{}1|2
12126 @end example
12127 @end defmac
12129 @defmac m4_count (@var{arg}, @dots{})
12130 @msindex{count}
12131 This macro returns the decimal count of the number of arguments it was
12132 passed.
12133 @end defmac
12135 @defmac m4_curry (@var{macro}, @var{arg}@dots{})
12136 @msindex{curry}
12137 This macro performs argument currying.  The expansion of this macro is
12138 another macro name that expects exactly one argument; that argument is
12139 then appended to the @var{arg} list, and then @var{macro} is expanded
12140 with the resulting argument list.
12142 @example
12143 m4_curry([m4_curry], [m4_reverse], [1])([2])([3])
12144 @result{}3, 2, 1
12145 @end example
12147 Unfortunately, due to a limitation in M4 1.4.x, it is not possible to
12148 pass the definition of a builtin macro as the argument to the output of
12149 @code{m4_curry}; the empty string is used instead of the builtin token.
12150 This behavior is rectified by using M4 1.6 or newer.
12151 @end defmac
12153 @defmac m4_do (@var{arg}, @dots{})
12154 @msindex{do}
12155 This macro loops over its arguments and expands each @var{arg} in
12156 sequence.  Its main use is for readability; it allows the use of
12157 indentation and fewer @code{dnl} to result in the same expansion.  This
12158 macro guarantees that no expansion will be concatenated with subsequent
12159 text; to achieve full concatenation, use @code{m4_unquote(m4_join([],
12160 @var{arg@dots{}}))}.
12162 @example
12163 m4_define([ab],[1])m4_define([bc],[2])m4_define([abc],[3])dnl
12164 m4_do([a],[b])c
12165 @result{}abc
12166 m4_unquote(m4_join([],[a],[b]))c
12167 @result{}3
12168 m4_define([a],[A])m4_define([b],[B])m4_define([c],[C])dnl
12169 m4_define([AB],[4])m4_define([BC],[5])m4_define([ABC],[6])dnl
12170 m4_do([a],[b])c
12171 @result{}ABC
12172 m4_unquote(m4_join([],[a],[b]))c
12173 @result{}3
12174 @end example
12175 @end defmac
12177 @defmac m4_dquote (@var{arg}, @dots{})
12178 @msindex{dquote}
12179 Return the arguments as a quoted list of quoted arguments.
12180 Conveniently, if there is just one @var{arg}, this effectively adds a
12181 level of quoting.
12182 @end defmac
12184 @defmac m4_dquote_elt (@var{arg}, @dots{})
12185 @msindex{dquote_elt}
12186 Return the arguments as a series of double-quoted arguments.  Whereas
12187 @code{m4_dquote} returns a single argument, @code{m4_dquote_elt} returns
12188 as many arguments as it was passed.
12189 @end defmac
12191 @defmac m4_echo (@var{arg}, @dots{})
12192 @msindex{echo}
12193 Return the arguments, with the same level of quoting.  Other than
12194 discarding whitespace after unquoted commas, this macro is a no-op.
12195 @end defmac
12197 @defmac m4_expand (@var{arg})
12198 @msindex{expand}
12199 Return the expansion of @var{arg} as a quoted string.  Whereas
12200 @code{m4_quote} is designed to collect expanded text into a single
12201 argument, @code{m4_expand} is designed to perform one level of expansion
12202 on quoted text.  One distinction is in the treatment of whitespace
12203 following a comma in the original @var{arg}.  Any time multiple
12204 arguments are collected into one with @code{m4_quote}, the M4 argument
12205 collection rules discard the whitespace.  However, with @code{m4_expand},
12206 whitespace is preserved, even after the expansion of macros contained in
12207 @var{arg}.  Additionally, @code{m4_expand} is able to expand text that
12208 would involve an unterminated comment, whereas expanding that same text
12209 as the argument to @code{m4_quote} runs into difficulty in finding the
12210 end of the argument.  Since manipulating diversions during argument
12211 collection is inherently unsafe, @code{m4_expand} issues an error if
12212 @var{arg} attempts to change the current diversion (@pxref{Diversion
12213 support}).
12215 @example
12216 m4_define([active], [ACT, IVE])dnl
12217 m4_define([active2], [[ACT, IVE]])dnl
12218 m4_quote(active, active)
12219 @result{}ACT,IVE,ACT,IVE
12220 m4_expand([active, active])
12221 @result{}ACT, IVE, ACT, IVE
12222 m4_quote(active2, active2)
12223 @result{}ACT, IVE,ACT, IVE
12224 m4_expand([active2, active2])
12225 @result{}ACT, IVE, ACT, IVE
12226 m4_expand([# m4_echo])
12227 @result{}# m4_echo
12228 m4_quote(# m4_echo)
12230 @result{}# m4_echo)
12231 @result{}
12232 @end example
12234 Note that @code{m4_expand} cannot handle an @var{arg} that expands to
12235 literal unbalanced quotes, but that quadrigraphs can be used when
12236 unbalanced output is necessary.  Likewise, unbalanced parentheses should
12237 be supplied with double quoting or a quadrigraph.
12239 @example
12240 m4_define([pattern], [[!@@<:@@]])dnl
12241 m4_define([bar], [BAR])dnl
12242 m4_expand([case $foo in
12243   m4_defn([pattern])@@:@}@@ bar ;;
12244   *[)] blah ;;
12245 esac])
12246 @result{}case $foo in
12247 @result{}  [![]) BAR ;;
12248 @result{}  *) blah ;;
12249 @result{}esac
12250 @end example
12251 @end defmac
12253 @defmac m4_ignore (@dots{})
12254 @msindex{ignore}
12255 This macro was introduced in Autoconf 2.62.  Expands to nothing,
12256 ignoring all of its arguments.  By itself, this isn't very useful.
12257 However, it can be used to conditionally ignore an arbitrary number of
12258 arguments, by deciding which macro name to apply to a list of arguments.
12259 @example
12260 dnl foo outputs a message only if [debug] is defined.
12261 m4_define([foo],
12262 [m4_ifdef([debug],[AC_MSG_NOTICE],[m4_ignore])([debug message])])
12263 @end example
12265 Note that for earlier versions of Autoconf, the macro @code{__gnu__} can
12266 serve the same purpose, although it is less readable.
12267 @end defmac
12269 @defmac m4_make_list (@var{arg}, @dots{})
12270 @msindex{make_list}
12271 This macro exists to aid debugging of M4sugar algorithms.  Its net
12272 effect is similar to @code{m4_dquote}---it produces a quoted list of
12273 quoted arguments, for each @var{arg}.  The difference is that this
12274 version uses a comma-newline separator instead of just comma, to improve
12275 readability of the list; with the result that it is less efficient than
12276 @code{m4_dquote}.
12277 @example
12278 m4_define([zero],[0])m4_define([one],[1])m4_define([two],[2])dnl
12279 m4_dquote(zero, [one], [[two]])
12280 @result{}[0],[one],[[two]]
12281 m4_make_list(zero, [one], [[two]])
12282 @result{}[0],
12283 @result{}[one],
12284 @result{}[[two]]
12285 m4_foreach([number], m4_dquote(zero, [one], [[two]]), [ number])
12286 @result{} 0 1 two
12287 m4_foreach([number], m4_make_list(zero, [one], [[two]]), [ number])
12288 @result{} 0 1 two
12289 @end example
12290 @end defmac
12292 @c m4_noquote is too dangerous to document - it invokes macros that
12293 @c probably rely on @samp{[]} nested quoting for proper operation.  The
12294 @c user should generally prefer m4_unquote instead.
12296 @defmac m4_quote (@var{arg}, @dots{})
12297 @msindex{quote}
12298 Return the arguments as a single entity, i.e., wrap them into a pair of
12299 quotes.  This effectively collapses multiple arguments into one,
12300 although it loses whitespace after unquoted commas in the process.
12301 @end defmac
12303 @defmac m4_reverse (@var{arg}, @dots{})
12304 @msindex{reverse}
12305 Outputs each argument with the same level of quoting, but in reverse
12306 order, and with space following each comma for readability.
12308 @example
12309 m4_define([active], [ACT,IVE])
12310 @result{}
12311 m4_reverse(active, [active])
12312 @result{}active, IVE, ACT
12313 @end example
12314 @end defmac
12316 @defmac m4_unquote (@var{arg}, @dots{})
12317 @msindex{unquote}
12318 This macro was introduced in Autoconf 2.62.  Expand each argument,
12319 separated by commas.  For a single @var{arg}, this effectively removes a
12320 layer of quoting, and @code{m4_unquote([@var{arg}])} is more efficient
12321 than the equivalent @code{m4_do([@var{arg}])}.  For multiple arguments,
12322 this results in an unquoted list of expansions.  This is commonly used
12323 with @code{m4_split}, in order to convert a single quoted list into a
12324 series of quoted elements.
12325 @end defmac
12327 The following example aims at emphasizing the difference between several
12328 scenarios: not using these macros, using @code{m4_defn}, using
12329 @code{m4_quote}, using @code{m4_dquote}, and using @code{m4_expand}.
12331 @example
12332 $ @kbd{cat example.m4}
12333 dnl Overquote, so that quotes are visible.
12334 m4_define([show], [$[]1 = [$1], $[]@@ = [$@@]])
12335 m4_define([a], [A])
12336 m4_define([mkargs], [1, 2[,] 3])
12337 m4_define([arg1], [[$1]])
12338 m4_divert([0])dnl
12339 show(a, b)
12340 show([a, b])
12341 show(m4_quote(a, b))
12342 show(m4_dquote(a, b))
12343 show(m4_expand([a, b]))
12345 arg1(mkargs)
12346 arg1([mkargs])
12347 arg1(m4_defn([mkargs]))
12348 arg1(m4_quote(mkargs))
12349 arg1(m4_dquote(mkargs))
12350 arg1(m4_expand([mkargs]))
12351 $ @kbd{autom4te -l m4sugar example.m4}
12352 $1 = A, $@@ = [A],[b]
12353 $1 = a, b, $@@ = [a, b]
12354 $1 = A,b, $@@ = [A,b]
12355 $1 = [A],[b], $@@ = [[A],[b]]
12356 $1 = A, b, $@@ = [A, b]
12359 mkargs
12360 1, 2[,] 3
12361 1,2, 3
12362 [1],[2, 3]
12363 1, 2, 3
12364 @end example
12367 @node Text processing Macros
12368 @subsection String manipulation in M4
12370 The following macros may be used to manipulate strings in M4.  Many of
12371 the macros in this section intentionally result in quoted strings as
12372 output, rather than subjecting the arguments to further expansions.  As
12373 a result, if you are manipulating text that contains active M4
12374 characters, the arguments are passed with single quoting rather than
12375 double.
12377 @defmac m4_append (@var{macro-name}, @var{string}, @ovar{separator})
12378 @defmacx m4_append_uniq (@var{macro-name}, @var{string}, @ovar{separator} @
12379   @ovar{if-uniq}, @ovar{if-duplicate})
12380 @msindex{append}
12381 @msindex{append_uniq}
12382 Redefine @var{macro-name} to its former contents with @var{separator}
12383 and @var{string} added at the end.  If @var{macro-name} was undefined
12384 before (but not if it was defined but empty), then no @var{separator} is
12385 added.  As of Autoconf 2.62, neither @var{string} nor @var{separator}
12386 are expanded during this macro; instead, they are expanded when
12387 @var{macro-name} is invoked.
12389 @code{m4_append} can be used to grow strings, and @code{m4_append_uniq}
12390 to grow strings without duplicating substrings.  Additionally,
12391 @code{m4_append_uniq} takes two optional parameters as of Autoconf 2.62;
12392 @var{if-uniq} is expanded if @var{string} was appended, and
12393 @var{if-duplicate} is expanded if @var{string} was already present.
12394 Also, @code{m4_append_uniq} warns if @var{separator} is not empty, but
12395 occurs within @var{string}, since that can lead to duplicates.
12397 Note that @code{m4_append} can scale linearly in the length of the final
12398 string, depending on the quality of the underlying M4 implementation,
12399 while @code{m4_append_uniq} has an inherent quadratic scaling factor.
12400 If an algorithm can tolerate duplicates in the final string, use the
12401 former for speed.  If duplicates must be avoided, consider using
12402 @code{m4_set_add} instead (@pxref{Set manipulation Macros}).
12404 @example
12405 m4_define([active], [ACTIVE])dnl
12406 m4_append([sentence], [This is an])dnl
12407 m4_append([sentence], [ active ])dnl
12408 m4_append([sentence], [symbol.])dnl
12409 sentence
12410 @result{}This is an ACTIVE symbol.
12411 m4_undefine([active])dnl
12412 @result{}This is an active symbol.
12413 m4_append_uniq([list], [one], [, ], [new], [existing])
12414 @result{}new
12415 m4_append_uniq([list], [one], [, ], [new], [existing])
12416 @result{}existing
12417 m4_append_uniq([list], [two], [, ], [new], [existing])
12418 @result{}new
12419 m4_append_uniq([list], [three], [, ], [new], [existing])
12420 @result{}new
12421 m4_append_uniq([list], [two], [, ], [new], [existing])
12422 @result{}existing
12423 list
12424 @result{}one, two, three
12425 m4_dquote(list)
12426 @result{}[one],[two],[three]
12427 m4_append([list2], [one], [[, ]])dnl
12428 m4_append_uniq([list2], [two], [[, ]])dnl
12429 m4_append([list2], [three], [[, ]])dnl
12430 list2
12431 @result{}one, two, three
12432 m4_dquote(list2)
12433 @result{}[one, two, three]
12434 @end example
12435 @end defmac
12437 @defmac m4_append_uniq_w (@var{macro-name}, @var{strings})
12438 @msindex{append_uniq_w}
12439 This macro was introduced in Autoconf 2.62.  It is similar to
12440 @code{m4_append_uniq}, but treats @var{strings} as a whitespace
12441 separated list of words to append, and only appends unique words.
12442 @var{macro-name} is updated with a single space between new words.
12443 @example
12444 m4_append_uniq_w([numbers], [1 1 2])dnl
12445 m4_append_uniq_w([numbers], [ 2 3 ])dnl
12446 numbers
12447 @result{}1 2 3
12448 @end example
12449 @end defmac
12451 @defmac m4_chomp (@var{string})
12452 @defmacx m4_chomp_all (@var{string})
12453 @msindex{chomp}
12454 @msindex{chomp_all}
12455 Output @var{string} in quotes, but without a trailing newline.  The
12456 macro @code{m4_chomp} is slightly faster, and removes at most one
12457 newline; the macro @code{m4_chomp_all} removes all consecutive trailing
12458 newlines.  Unlike @code{m4_flatten}, embedded newlines are left intact,
12459 and backslash does not influence the result.
12460 @end defmac
12462 @defmac m4_combine (@ovar{separator}, @var{prefix-list}, @ovar{infix}, @
12463   @var{suffix-1}, @ovar{suffix-2}, @dots{})
12464 @msindex{combine}
12465 This macro produces a quoted string containing the pairwise combination
12466 of every element of the quoted, comma-separated @var{prefix-list}, and
12467 every element from the @var{suffix} arguments.  Each pairwise
12468 combination is joined with @var{infix} in the middle, and successive
12469 pairs are joined by @var{separator}.  No expansion occurs on any of the
12470 arguments.  No output occurs if either the @var{prefix} or @var{suffix}
12471 list is empty, but the lists can contain empty elements.
12472 @example
12473 m4_define([a], [oops])dnl
12474 m4_combine([, ], [[a], [b], [c]], [-], [1], [2], [3])
12475 @result{}a-1, a-2, a-3, b-1, b-2, b-3, c-1, c-2, c-3
12476 m4_combine([, ], [[a], [b]], [-])
12477 @result{}
12478 m4_combine([, ], [[a], [b]], [-], [])
12479 @result{}a-, b-
12480 m4_combine([, ], [], [-], [1], [2])
12481 @result{}
12482 m4_combine([, ], [[]], [-], [1], [2])
12483 @result{}-1, -2
12484 @end example
12485 @end defmac
12487 @defmac m4_escape (@var{string})
12488 @msindex{escape}
12489 Convert all instances of @samp{[}, @samp{]}, @samp{#}, and @samp{$}
12490 within @var{string} into their respective quadrigraphs.  The result is
12491 still a quoted string.
12492 @end defmac
12494 @defmac m4_flatten (@var{string})
12495 @msindex{flatten}
12496 Flatten @var{string} into a single line.  Delete all backslash-newline
12497 pairs, and replace all remaining newlines with a space.  The result is
12498 still a quoted string.
12499 @end defmac
12501 @defmac m4_join (@ovar{separator}, @var{args}@dots{})
12502 @defmacx m4_joinall (@ovar{separator}, @var{args}@dots{})
12503 @msindex{join}
12504 @msindex{joinall}
12505 Concatenate each @var{arg}, separated by @var{separator}.
12506 @code{joinall} uses every argument, while @code{join} omits empty
12507 arguments so that there are no back-to-back separators in the output.
12508 The result is a quoted string.
12509 @example
12510 m4_define([active], [ACTIVE])dnl
12511 m4_join([|], [one], [], [active], [two])
12512 @result{}one|active|two
12513 m4_joinall([|], [one], [], [active], [two])
12514 @result{}one||active|two
12515 @end example
12517 Note that if all you intend to do is join @var{args} with commas between
12518 them, to form a quoted list suitable for @code{m4_foreach}, it is more
12519 efficient to use @code{m4_dquote}.
12520 @end defmac
12522 @defmac m4_newline (@ovar{text})
12523 @msindex{newline}
12524 This macro was introduced in Autoconf 2.62, and expands to a newline,
12525 followed by any @var{text}.
12526 It is primarily useful for maintaining macro formatting, and ensuring
12527 that M4 does not discard leading whitespace during argument collection.
12528 @end defmac
12530 @defmac m4_normalize (@var{string})
12531 @msindex{normalize}
12532 Remove leading and trailing spaces and tabs, sequences of
12533 backslash-then-newline, and replace multiple spaces, tabs, and newlines
12534 with a single space.  This is a combination of @code{m4_flatten} and
12535 @code{m4_strip}.  To determine if @var{string} consists only of bytes
12536 that would be removed by @code{m4_normalize}, you can use
12537 @code{m4_ifblank}.
12538 @end defmac
12540 @defmac m4_re_escape (@var{string})
12541 @msindex{re_escape}
12542 Backslash-escape all characters in @var{string} that are active in
12543 regexps.
12544 @end defmac
12546 @c We cannot use @dvar because the macro expansion mistreats backslashes.
12547 @defmac m4_split (@var{string}, @r{[}@var{regexp} = @samp{[\t ]+}@r{]})
12548 @msindex{split}
12549 Split @var{string} into an M4 list of elements quoted by @samp{[} and
12550 @samp{]}, while keeping white space at the beginning and at the end.
12551 If @var{regexp} is given, use it instead of @samp{[\t ]+} for splitting.
12552 If @var{string} is empty, the result is an empty list.
12553 @end defmac
12555 @defmac m4_strip (@var{string})
12556 @msindex{strip}
12557 Strip whitespace from @var{string}.  Sequences of spaces and tabs are
12558 reduced to a single space, then leading and trailing spaces are removed.
12559 The result is still a quoted string.  Note that this does not interfere
12560 with newlines; if you want newlines stripped as well, consider
12561 @code{m4_flatten}, or do it all at once with @code{m4_normalize}.  To
12562 quickly test if @var{string} has only whitespace, use @code{m4_ifblank}.
12563 @end defmac
12565 @defmac m4_text_box (@var{message}, @dvar{frame, -})
12566 @msindex{text_box}
12567 Add a text box around @var{message}, using @var{frame} as the border
12568 character above and below the message.  The @var{frame} argument must be
12569 a single byte, and does not support quadrigraphs.
12570 The frame correctly accounts for
12571 the subsequent expansion of @var{message}.  For example:
12572 @example
12573 m4_define([macro], [abc])dnl
12574 m4_text_box([macro])
12575 @result{}## --- ##
12576 @result{}## abc ##
12577 @result{}## --- ##
12578 @end example
12580 The @var{message} must contain balanced quotes and parentheses, although
12581 quadrigraphs can be used to work around this.
12582 @end defmac
12584 @defmac m4_text_wrap (@var{string}, @ovar{prefix}, @
12585   @dvar{prefix1, @var{prefix}}, @dvar{width, 79})
12586 @msindex{text_wrap}
12587 Break @var{string} into a series of whitespace-separated words, then
12588 output those words separated by spaces, and wrapping lines any time the
12589 output would exceed @var{width} columns.  If given, @var{prefix1} begins
12590 the first line, and @var{prefix} begins all wrapped lines.  If
12591 @var{prefix1} is longer than @var{prefix}, then the first line consists
12592 of just @var{prefix1}.  If @var{prefix} is longer than @var{prefix1},
12593 padding is inserted so that the first word of @var{string} begins at the
12594 same indentation as all wrapped lines.  Note that using literal tab
12595 characters in any of the arguments will interfere with the calculation
12596 of width.  No expansions occur on @var{prefix}, @var{prefix1}, or the
12597 words of @var{string}, although quadrigraphs are recognized.
12599 For some examples:
12600 @example
12601 m4_text_wrap([Short string */], [   ], [/* ], [20])
12602 @result{}/* Short string */
12603 m4_text_wrap([Much longer string */], [   ], [/* ], [20])
12604 @result{}/* Much longer
12605 @result{}   string */
12606 m4_text_wrap([Short doc.], [          ], [  --short ], [30])
12607 @result{}  --short Short doc.
12608 m4_text_wrap([Short doc.], [          ], [  --too-wide ], [30])
12609 @result{}  --too-wide
12610 @result{}          Short doc.
12611 m4_text_wrap([Super long documentation.], [     ],
12612              [  --too-wide ], 30)
12613 @result{}  --too-wide
12614 @result{}     Super long
12615 @result{}     documentation.
12616 @end example
12617 @end defmac
12619 @defmac m4_tolower (@var{string})
12620 @defmacx m4_toupper (@var{string})
12621 @msindex{tolower}
12622 @msindex{toupper}
12623 Return @var{string} with letters converted to upper or lower case,
12624 respectively.
12625 @end defmac
12627 @node Number processing Macros
12628 @subsection Arithmetic computation in M4
12630 The following macros facilitate integer arithmetic operations.
12631 Where a parameter is documented as taking an arithmetic expression, you
12632 can use anything that can be parsed by @code{m4_eval}.
12634 @defmac m4_cmp (@var{expr-1}, @var{expr-2})
12635 @msindex{cmp}
12636 Compare the arithmetic expressions @var{expr-1} and @var{expr-2}, and
12637 expand to @samp{-1} if @var{expr-1} is smaller, @samp{0} if they are
12638 equal, and @samp{1} if @var{expr-1} is larger.
12639 @end defmac
12641 @defmac m4_list_cmp (@var{list-1}, @var{list-2})
12642 @msindex{list_cmp}
12643 Compare the two M4 lists consisting of comma-separated arithmetic
12644 expressions, left to right.  Expand to @samp{-1} for the first element
12645 pairing where the value from @var{list-1} is smaller, @samp{1} where the
12646 value from @var{list-2} is smaller, or @samp{0} if both lists have the
12647 same values.  If one list is shorter than the other, the remaining
12648 elements of the longer list are compared against zero.
12649 @example
12650 m4_list_cmp([1, 0],       [1])
12651 @result{}0
12652 m4_list_cmp([1, [1 * 0]], [1, 0])
12653 @result{}0
12654 m4_list_cmp([1, 2],       [1, 0])
12655 @result{}1
12656 m4_list_cmp([1, [1+1], 3],[1, 2])
12657 @result{}1
12658 m4_list_cmp([1, 2, -3],   [1, 2])
12659 @result{}-1
12660 m4_list_cmp([1, 0],       [1, 2])
12661 @result{}-1
12662 m4_list_cmp([1],          [1, 2])
12663 @result{}-1
12664 @end example
12665 @end defmac
12667 @defmac m4_max (@var{arg}, @dots{})
12668 @msindex{max}
12669 This macro was introduced in Autoconf 2.62.  Expand to the decimal value
12670 of the maximum arithmetic expression among all the arguments.
12671 @end defmac
12673 @defmac m4_min (@var{arg}, @dots{})
12674 @msindex{min}
12675 This macro was introduced in Autoconf 2.62.  Expand to the decimal value
12676 of the minimum arithmetic expression among all the arguments.
12677 @end defmac
12679 @defmac m4_sign (@var{expr})
12680 @msindex{sign}
12681 Expand to @samp{-1} if the arithmetic expression @var{expr} is negative,
12682 @samp{1} if it is positive, and @samp{0} if it is zero.
12683 @end defmac
12685 @anchor{m4_version_compare}
12686 @defmac m4_version_compare (@var{version-1}, @var{version-2})
12687 @msindex{version_compare}
12688 This macro was introduced in Autoconf 2.53, but had a number of
12689 usability limitations that were not lifted until Autoconf 2.62.  Compare
12690 the version strings @var{version-1} and @var{version-2}, and expand to
12691 @samp{-1} if @var{version-1} is smaller, @samp{0} if they are the same,
12692 or @samp{1} @var{version-2} is smaller.  Version strings must be a list
12693 of elements separated by @samp{.}, @samp{,} or @samp{-}, where each
12694 element is a number along with optional case-insensitive letters
12695 designating beta releases.  The comparison stops at the leftmost element
12696 that contains a difference, although a 0 element compares equal to a
12697 missing element.
12699 It is permissible to include commit identifiers in @var{version}, such
12700 as an abbreviated SHA1 of the commit, provided there is still a
12701 monotonically increasing prefix to allow for accurate version-based
12702 comparisons.  For example, this paragraph was written when the
12703 development snapshot of autoconf claimed to be at version
12704 @samp{2.61a-248-dc51}, or 248 commits after the 2.61a release, with an
12705 abbreviated commit identification of @samp{dc51}.
12707 @example
12708 m4_version_compare([1.1], [2.0])
12709 @result{}-1
12710 m4_version_compare([2.0b], [2.0a])
12711 @result{}1
12712 m4_version_compare([1.1.1], [1.1.1a])
12713 @result{}-1
12714 m4_version_compare([1.2], [1.1.1a])
12715 @result{}1
12716 m4_version_compare([1.0], [1])
12717 @result{}0
12718 m4_version_compare([1.1pre], [1.1PRE])
12719 @result{}0
12720 m4_version_compare([1.1a], [1,10])
12721 @result{}-1
12722 m4_version_compare([2.61a], [2.61a-248-dc51])
12723 @result{}-1
12724 m4_version_compare([2.61b], [2.61a-248-dc51])
12725 @result{}1
12726 @end example
12727 @end defmac
12729 @defmac m4_version_prereq (@var{version}, @ovar{if-new-enough}, @
12730   @dvar{if-old, m4_fatal})
12731 @msindex{version_prereq}
12732 Compares @var{version} against the version of Autoconf currently
12733 running.  If the running version is at @var{version} or newer, expand
12734 @var{if-new-enough}, but if @var{version} is larger than the version
12735 currently executing, expand @var{if-old}, which defaults to printing an
12736 error message and exiting m4sugar with status 63.  When given only one
12737 argument, this behaves like @code{AC_PREREQ} (@pxref{Versioning}).
12738 Remember that the autoconf philosophy favors feature checks over version
12739 checks.
12740 @end defmac
12742 @node Set manipulation Macros
12743 @subsection Set manipulation in M4
12744 @cindex Set manipulation
12745 @cindex Data structure, set
12746 @cindex Unordered set manipulation
12748 Sometimes, it is necessary to track a set of data, where the order does
12749 not matter and where there are no duplicates in the set.  The following
12750 macros facilitate set manipulations.  Each set is an opaque object,
12751 which can only be accessed via these basic operations.  The underlying
12752 implementation guarantees linear scaling for set creation, which is more
12753 efficient than using the quadratic @code{m4_append_uniq}.  Both set
12754 names and values can be arbitrary strings, except for unbalanced quotes.
12755 This implementation ties up memory for removed elements until the next
12756 operation that must traverse all the elements of a set; and although
12757 that may slow down some operations until the memory for removed elements
12758 is pruned, it still guarantees linear performance.
12760 @defmac m4_set_add (@var{set}, @var{value}, @ovar{if-uniq}, @ovar{if-dup})
12761 @msindex{set_add}
12762 Adds the string @var{value} as a member of set @var{set}.  Expand
12763 @var{if-uniq} if the element was added, or @var{if-dup} if it was
12764 previously in the set.  Operates in amortized constant time, so that set
12765 creation scales linearly.
12766 @end defmac
12768 @defmac m4_set_add_all (@var{set}, @var{value}@dots{})
12769 @msindex{set_add_all}
12770 Adds each @var{value} to the set @var{set}.  This is slightly more
12771 efficient than repeatedly invoking @code{m4_set_add}.
12772 @end defmac
12774 @defmac m4_set_contains (@var{set}, @var{value}, @ovar{if-present}, @
12775  @ovar{if-absent})
12776 @msindex{set_contains}
12777 Expands @var{if-present} if the string @var{value} is a member of
12778 @var{set}, otherwise @var{if-absent}.
12780 @example
12781 m4_set_contains([a], [1], [yes], [no])
12782 @result{}no
12783 m4_set_add([a], [1], [added], [dup])
12784 @result{}added
12785 m4_set_add([a], [1], [added], [dup])
12786 @result{}dup
12787 m4_set_contains([a], [1], [yes], [no])
12788 @result{}yes
12789 m4_set_remove([a], [1], [removed], [missing])
12790 @result{}removed
12791 m4_set_contains([a], [1], [yes], [no])
12792 @result{}no
12793 m4_set_remove([a], [1], [removed], [missing])
12794 @result{}missing
12795 @end example
12796 @end defmac
12798 @defmac m4_set_contents (@var{set}, @ovar{sep})
12799 @defmacx m4_set_dump (@var{set}, @ovar{sep})
12800 @msindex{set_contents}
12801 @msindex{set_dump}
12802 Expands to a single string consisting of all the members of the set
12803 @var{set}, each separated by @var{sep}, which is not expanded.
12804 @code{m4_set_contents} leaves the elements in @var{set} but reclaims any
12805 memory occupied by removed elements, while @code{m4_set_dump} is a
12806 faster one-shot action that also deletes the set.  No provision is made
12807 for disambiguating members that contain a non-empty @var{sep} as a
12808 substring; use @code{m4_set_empty} to distinguish between an empty set
12809 and the set containing only the empty string.  The order of the output
12810 is unspecified; in the current implementation, part of the speed of
12811 @code{m4_set_dump} results from using a different output order than
12812 @code{m4_set_contents}.  These macros scale linearly in the size of the
12813 set before memory pruning, and @code{m4_set_contents([@var{set}],
12814 [@var{sep}])} is faster than
12815 @code{m4_joinall([@var{sep}]m4_set_listc([@var{set}]))}.
12817 @example
12818 m4_set_add_all([a], [1], [2], [3])
12819 @result{}
12820 m4_set_contents([a], [-])
12821 @result{}1-2-3
12822 m4_joinall([-]m4_set_listc([a]))
12823 @result{}1-2-3
12824 m4_set_dump([a], [-])
12825 @result{}3-2-1
12826 m4_set_contents([a])
12827 @result{}
12828 m4_set_add([a], [])
12829 @result{}
12830 m4_set_contents([a], [-])
12831 @result{}
12832 @end example
12833 @end defmac
12835 @defmac m4_set_delete (@var{set})
12836 @msindex{set_delete}
12837 Delete all elements and memory associated with @var{set}.  This is
12838 linear in the set size, and faster than removing one element at a time.
12839 @end defmac
12841 @defmac m4_set_difference (@var{seta}, @var{setb})
12842 @defmacx m4_set_intersection (@var{seta}, @var{setb})
12843 @defmacx m4_set_union (@var{seta}, @var{setb})
12844 @msindex{set_difference}
12845 @msindex{set_intersection}
12846 @msindex{set_union}
12847 Compute the relation between @var{seta} and @var{setb}, and output the
12848 result as a list of quoted arguments without duplicates and with a
12849 leading comma.  Set difference selects the elements in @var{seta} but
12850 not @var{setb}, intersection selects only elements in both sets, and
12851 union selects elements in either set.  These actions are linear in the
12852 sum of the set sizes.  The leading comma is necessary to distinguish
12853 between no elements and the empty string as the only element.
12855 @example
12856 m4_set_add_all([a], [1], [2], [3])
12857 @result{}
12858 m4_set_add_all([b], [3], [], [4])
12859 @result{}
12860 m4_set_difference([a], [b])
12861 @result{},1,2
12862 m4_set_difference([b], [a])
12863 @result{},,4
12864 m4_set_intersection([a], [b])
12865 @result{},3
12866 m4_set_union([a], [b])
12867 @result{},1,2,3,,4
12868 @end example
12869 @end defmac
12871 @defmac m4_set_empty (@var{set}, @ovar{if-empty}, @ovar{if-elements})
12872 @msindex{set_empty}
12873 Expand @var{if-empty} if the set @var{set} has no elements, otherwise
12874 expand @var{if-elements}.  This macro operates in constant time.  Using
12875 this macro can help disambiguate output from @code{m4_set_contents} or
12876 @code{m4_set_list}.
12877 @end defmac
12879 @defmac m4_set_foreach (@var{set}, @var{variable}, @var{action})
12880 @msindex{set_foreach}
12881 For each element in the set @var{set}, expand @var{action} with the
12882 macro @var{variable} defined as the set element.  Behavior is
12883 unspecified if @var{action} recursively lists the contents of @var{set}
12884 (although listing other sets is acceptable), or if it modifies the set
12885 in any way other than removing the element currently contained in
12886 @var{variable}.  This macro is faster than the corresponding
12887 @code{m4_foreach([@var{variable}],
12888 m4_indir([m4_dquote]m4_set_listc([@var{set}])), [@var{action}])},
12889 although @code{m4_set_map} might be faster still.
12891 @example
12892 m4_set_add_all([a]m4_for([i], [1], [5], [], [,i]))
12893 @result{}
12894 m4_set_contents([a])
12895 @result{}12345
12896 m4_set_foreach([a], [i],
12897   [m4_if(m4_eval(i&1), [0], [m4_set_remove([a], i, [i])])])
12898 @result{}24
12899 m4_set_contents([a])
12900 @result{}135
12901 @end example
12902 @end defmac
12904 @defmac m4_set_list (@var{set})
12905 @defmacx m4_set_listc (@var{set})
12906 @msindex{set_list}
12907 @msindex{set_listc}
12908 Produce a list of arguments, where each argument is a quoted element
12909 from the set @var{set}.  The variant @code{m4_set_listc} is unambiguous,
12910 by adding a leading comma if there are any set elements, whereas the
12911 variant @code{m4_set_list} cannot distinguish between an empty set and a
12912 set containing only the empty string.  These can be directly used in
12913 macros that take multiple arguments, such as @code{m4_join} or
12914 @code{m4_set_add_all}, or wrapped by @code{m4_dquote} for macros that
12915 take a quoted list, such as @code{m4_map} or @code{m4_foreach}.  Any
12916 memory occupied by removed elements is reclaimed during these macros.
12918 @example
12919 m4_set_add_all([a], [1], [2], [3])
12920 @result{}
12921 m4_set_list([a])
12922 @result{}1,2,3
12923 m4_set_list([b])
12924 @result{}
12925 m4_set_listc([b])
12926 @result{}
12927 m4_count(m4_set_list([b]))
12928 @result{}1
12929 m4_set_empty([b], [0], [m4_count(m4_set_list([b]))])
12930 @result{}0
12931 m4_set_add([b], [])
12932 @result{}
12933 m4_set_list([b])
12934 @result{}
12935 m4_set_listc([b])
12936 @result{},
12937 m4_count(m4_set_list([b]))
12938 @result{}1
12939 m4_set_empty([b], [0], [m4_count(m4_set_list([b]))])
12940 @result{}1
12941 @end example
12942 @end defmac
12944 @defmac m4_set_map (@var{set}, @var{action})
12945 @msindex{set_map}
12946 For each element in the set @var{set}, expand @var{action} with a single
12947 argument of the set element.  Behavior is unspecified if @var{action}
12948 recursively lists the contents of @var{set} (although listing other sets
12949 is acceptable), or if it modifies the set in any way other than removing
12950 the element passed as an argument.  This macro is faster than either
12951 corresponding counterpart of
12952 @code{m4_map_args([@var{action}]m4_set_listc([@var{set}]))} or
12953 @code{m4_set_foreach([@var{set}], [var],
12954 [@var{action}(m4_defn([var]))])}.  It is possible to use @code{m4_curry}
12955 if more than one argument is needed for @var{action}, although it is
12956 more efficient to use @code{m4_set_map_sep} in that case.
12957 @end defmac
12959 @defmac m4_set_map_sep (@var{set}, @ovar{pre}, @ovar{post}, @ovar{sep})
12960 @msindex{set_map_sep}
12961 For each element in the set @var{set}, expand
12962 @code{@var{pre}[element]@var{post}}, additionally expanding @var{sep}
12963 between elements.  Behavior is unspecified if the expansion recursively
12964 lists the contents of @var{set} (although listing other sets
12965 is acceptable), or if it modifies the set in any way other than removing
12966 the element visited by the expansion.  This macro provides the most
12967 efficient means for non-destructively visiting the elements of a set; in
12968 particular, @code{m4_set_map([@var{set}], [@var{action}])} is equivalent
12969 to @code{m4_set_map_sep([@var{set}], [@var{action}(], [)])}.
12970 @end defmac
12972 @defmac m4_set_remove (@var{set}, @var{value}, @ovar{if-present}, @
12973  @ovar{if-absent})
12974 @msindex{set_remove}
12975 If @var{value} is an element in the set @var{set}, then remove it and
12976 expand @var{if-present}.  Otherwise expand @var{if-absent}.  This macro
12977 operates in constant time so that multiple removals will scale linearly
12978 rather than quadratically; but when used outside of
12979 @code{m4_set_foreach} or @code{m4_set_map}, it leaves memory occupied
12980 until the set is later
12981 compacted by @code{m4_set_contents} or @code{m4_set_list}.  Several
12982 other set operations are then less efficient between the time of element
12983 removal and subsequent memory compaction, but still maintain their
12984 guaranteed scaling performance.
12985 @end defmac
12987 @defmac m4_set_size (@var{set})
12988 @msindex{set_size}
12989 Expand to the size of the set @var{set}.  This implementation operates
12990 in constant time, and is thus more efficient than
12991 @code{m4_eval(m4_count(m4_set_listc([set])) - 1)}.
12992 @end defmac
12995 @node Forbidden Patterns
12996 @subsection Forbidden Patterns
12997 @cindex Forbidden patterns
12998 @cindex Patterns, forbidden
13000 M4sugar provides a means to define suspicious patterns, patterns
13001 describing tokens which should not be found in the output.  For
13002 instance, if an Autoconf @file{configure} script includes tokens such as
13003 @samp{AC_DEFINE}, or @samp{dnl}, then most probably something went
13004 wrong (typically a macro was not evaluated because of overquotation).
13006 M4sugar forbids all the tokens matching @samp{^_?m4_} and @samp{^dnl$}.
13007 Additional layers, such as M4sh and Autoconf, add additional forbidden
13008 patterns to the list.
13010 @defmac m4_pattern_forbid (@var{pattern})
13011 @msindex{pattern_forbid}
13012 Declare that no token matching @var{pattern} must be found in the output.
13013 Comments are not checked; this can be a problem if, for instance, you
13014 have some macro left unexpanded after an @samp{#include}.  No consensus
13015 is currently found in the Autoconf community, as some people consider it
13016 should be valid to name macros in comments (which doesn't make sense to
13017 the authors of this documentation: input, such as macros, should be
13018 documented by @samp{dnl} comments; reserving @samp{#}-comments to
13019 document the output).
13020 @end defmac
13022 Of course, you might encounter exceptions to these generic rules, for
13023 instance you might have to refer to @samp{$m4_flags}.
13025 @defmac m4_pattern_allow (@var{pattern})
13026 @msindex{pattern_allow}
13027 Any token matching @var{pattern} is allowed, including if it matches an
13028 @code{m4_pattern_forbid} pattern.
13029 @end defmac
13031 @node Debugging via autom4te
13032 @section Debugging via autom4te
13033 @cindex debugging tips
13034 @cindex autom4te debugging tips
13035 @cindex m4sugar debugging tips
13036 At times, it is desirable to see what was happening inside m4, to see
13037 why output was not matching expectations.  However, post-processing done
13038 by @command{autom4te} means that directly using the m4 builtin
13039 @code{m4_traceon} is likely to interfere with operation.  Also, frequent
13040 diversion changes and the concept of forbidden tokens make it difficult
13041 to use @code{m4_defn} to generate inline comments in the final output.
13043 There are a couple of tools to help with this.  One is the use of the
13044 @option{--trace} option provided by @command{autom4te} (as well as each
13045 of the programs that wrap @command{autom4te}, such as
13046 @command{autoconf}), in order to inspect when a macro is called and with
13047 which arguments.  For example, when this paragraph was written, the
13048 autoconf version could be found by:
13050 @example
13051 $ @kbd{autoconf --trace=AC_INIT}
13052 configure.ac:23:AC_INIT:GNU Autoconf:2.63b.95-3963:bug-autoconf@@gnu.org
13053 $ @kbd{autoconf --trace='AC_INIT:version is $2'}
13054 version is 2.63b.95-3963
13055 @end example
13057 Another trick is to print out the expansion of various m4 expressions to
13058 standard error or to an independent file, with no further m4 expansion,
13059 and without interfering with diversion changes or the post-processing
13060 done to standard output.  @code{m4_errprintn} shows a given expression
13061 on standard error.  For example, if you want to see the expansion of an
13062 autoconf primitive or of one of your autoconf macros, you can do it like
13063 this:
13065 @example
13066 $ @kbd{cat <<\EOF > configure.ac}
13067 AC_INIT
13068 m4_errprintn([The definition of AC_DEFINE_UNQUOTED:])
13069 m4_errprintn(m4_defn([AC_DEFINE_UNQUOTED]))
13070 AC_OUTPUT
13072 $ @kbd{autoconf}
13073 @error{}The definition of AC_DEFINE_UNQUOTED:
13074 @error{}_AC_DEFINE_Q([], $@@)
13075 @end example
13077 @node Programming in M4sh
13078 @chapter Programming in M4sh
13080 M4sh, pronounced ``mash'', is aiming at producing portable Bourne shell
13081 scripts.  This name was coined by Lars J. Aas, who notes that,
13082 according to the Webster's Revised Unabridged Dictionary (1913):
13084 @quotation
13085 Mash \Mash\, n.  [Akin to G. meisch, maisch, meische, maische, mash,
13086 wash, and prob.@: to AS. miscian to mix.  See ``Mix''.]
13088 @enumerate 1
13089 @item
13090 A mass of mixed ingredients reduced to a soft pulpy state by beating or
13091 pressure@enddots{}
13093 @item
13094 A mixture of meal or bran and water fed to animals.
13096 @item
13097 A mess; trouble.  [Obs.] --Beau.@: & Fl.
13098 @end enumerate
13099 @end quotation
13101 M4sh reserves the M4 macro namespace @samp{^_AS_} for internal use, and
13102 the namespace @samp{^AS_} for M4sh macros.  It also reserves the shell
13103 and environment variable namespace @samp{^as_}, and the here-document
13104 delimiter namespace @samp{^_AS[A-Z]} in the output file.  You should not
13105 define your own macros or output shell code that conflicts with these
13106 namespaces.
13108 @menu
13109 * Common Shell Constructs::     Portability layer for common shell constructs
13110 * Polymorphic Variables::       Support for indirect variable names
13111 * Initialization Macros::       Macros to establish a sane shell environment
13112 * File Descriptor Macros::      File descriptor macros for input and output
13113 @end menu
13115 @node Common Shell Constructs
13116 @section Common Shell Constructs
13118 M4sh provides portable alternatives for some common shell constructs
13119 that unfortunately are not portable in practice.
13121 @c Deprecated, to be replaced by a better API
13122 @ignore
13123 @defmac AS_BASENAME (@var{file-name})
13124 @asindex{BASENAME}
13125 Output the non-directory portion of @var{file-name}.  For example,
13126 if @code{$file} is @samp{/one/two/three}, the command
13127 @code{base=`AS_BASENAME(["$file"])`} sets @code{base} to @samp{three}.
13128 @end defmac
13129 @end ignore
13131 @defmac AS_BOX (@var{text}, @dvar{char, -})
13132 @asindex{BOX}
13133 Expand into shell code that will output @var{text} surrounded by a box
13134 with @var{char} in the top and bottom border.  @var{text} should not
13135 contain a newline, but may contain shell expansions valid for unquoted
13136 here-documents.  @var{char} defaults to @samp{-}, but can be any
13137 character except @samp{/}, @samp{'}, @samp{"}, @samp{\},
13138 @samp{&}, or @samp{`}.  This is useful for outputting a comment box into
13139 log files to separate distinct phases of script operation.
13140 @end defmac
13142 @defmac AS_CASE (@var{word}, @ovar{pattern1}, @ovar{if-matched1}, @
13143   @dots{}, @ovar{default})
13144 @asindex{CASE}
13145 Expand into a shell @samp{case} statement, where @var{word} is matched
13146 against one or more patterns.  @var{if-matched} is run if the
13147 corresponding pattern matched @var{word}, else @var{default} is run.
13148 Avoids several portability issues (@pxref{case, , Limitations of Shell
13149 Builtins}).
13150 @end defmac
13152 @c Deprecated, to be replaced by a better API
13153 @defmac AS_DIRNAME (@var{file-name})
13154 @asindex{DIRNAME}
13155 Output the directory portion of @var{file-name}.  For example,
13156 if @code{$file} is @samp{/one/two/three}, the command
13157 @code{dir=`AS_DIRNAME(["$file"])`} sets @code{dir} to @samp{/one/two}.
13159 This interface may be improved in the future to avoid forks and losing
13160 trailing newlines.
13161 @end defmac
13163 @defmac AS_ECHO (@var{word})
13164 @asindex{ECHO}
13165 Emits @var{word} to the standard output, followed by a newline.  @var{word}
13166 must be a single shell word (typically a quoted string).  The bytes of
13167 @var{word} are output as-is, even if it starts with "-" or contains "\".
13168 Redirections can be placed outside the macro invocation.  This is much
13169 more portable than using @command{echo} (@pxref{echo, , Limitations of
13170 Shell Builtins}).
13171 @end defmac
13173 @defmac AS_ECHO_N (@var{word})
13174 @asindex{ECHO_N}
13175 Emits @var{word} to the standard output, without a following newline.
13176 @var{word} must be a single shell word (typically a quoted string) and,
13177 for portability, should not include more than one newline.  The bytes of
13178 @var{word} are output as-is, even if it starts with "-" or contains "\".
13179 Redirections can be placed outside the macro invocation.
13180 @end defmac
13182 @c We cannot use @dvar because the macro expansion mistreats backslashes.
13183 @defmac AS_ESCAPE (@var{string}, @r{[}@var{chars} = @samp{`\"$}@r{]})
13184 @asindex{ESCAPE}
13185 Expands to @var{string}, with any characters in @var{chars} escaped with
13186 a backslash (@samp{\}).  @var{chars} should be at most four bytes long,
13187 and only contain characters from the set @samp{`\"$}; however,
13188 characters may be safely listed more than once in @var{chars} for the
13189 sake of syntax highlighting editors.  The current implementation expands
13190 @var{string} after adding escapes; if @var{string} contains macro calls
13191 that in turn expand to text needing shell quoting, you can use
13192 @code{AS_ESCAPE(m4_dquote(m4_expand([string])))}.
13194 The default for @var{chars} (@samp{\"$`}) is the set of characters
13195 needing escapes when @var{string} will be used literally within double
13196 quotes.  One common variant is the set of characters to protect when
13197 @var{string} will be used literally within back-ticks or an unquoted
13198 here-document (@samp{\$`}).  Another common variant is @samp{""}, which can
13199 be used to form a double-quoted string containing the same expansions
13200 that would have occurred if @var{string} were expanded in an unquoted
13201 here-document; however, when using this variant, care must be taken that
13202 @var{string} does not use double quotes within complex variable
13203 expansions (such as @samp{$@{foo-`echo "hi"`@}}) that would be broken
13204 with improper escapes.
13206 This macro is often used with @code{AS_ECHO}.  For an example, observe
13207 the output generated by the shell code generated from this snippet:
13209 @example
13210 foo=bar
13211 AS_ECHO(["AS_ESCAPE(["$foo" = ])AS_ESCAPE(["$foo"], [""])"])
13212 @result{}"$foo" = "bar"
13213 m4_define([macro], [a, [\b]])
13214 AS_ECHO(["AS_ESCAPE([[macro]])"])
13215 @result{}macro
13216 AS_ECHO(["AS_ESCAPE([macro])"])
13217 @result{}a, b
13218 AS_ECHO(["AS_ESCAPE(m4_dquote(m4_expand([macro])))"])
13219 @result{}a, \b
13220 @end example
13222 @comment Should we add AS_ESCAPE_SINGLE? If we do, we can optimize in
13223 @comment the case of @var{string} that does not contain '.
13224 To escape a string that will be placed within single quotes, use:
13226 @example
13227 m4_bpatsubst([[@var{string}]], ['], ['\\''])
13228 @end example
13229 @end defmac
13231 @defmac AS_EXIT (@dvar{status, $?})
13232 @asindex{EXIT}
13233 Emit code to exit the shell with @var{status}, defaulting to @samp{$?}.
13234 This macro
13235 works around shells that see the exit status of the command prior to
13236 @code{exit} inside a @samp{trap 0} handler (@pxref{trap, , Limitations
13237 of Shell Builtins}).
13238 @end defmac
13240 @defmac AS_IF (@var{test1}, @ovar{run-if-true1}, @dots{}, @ovar{run-if-false})
13241 @asindex{IF}
13242 Run shell code @var{test1}.  If @var{test1} exits with a zero status then
13243 run shell code @var{run-if-true1}, else examine further tests.  If no test
13244 exits with a zero status, run shell code @var{run-if-false}, with
13245 simplifications if either @var{run-if-true1} or @var{run-if-false}
13246 is empty.  For example,
13248 @example
13249 AS_IF([test "x$foo" = xyes], [HANDLE_FOO([yes])],
13250       [test "x$foo" != xno], [HANDLE_FOO([maybe])],
13251       [echo foo not specified])
13252 @end example
13254 @noindent
13255 ensures any required macros of @code{HANDLE_FOO}
13256 are expanded before the first test.
13257 @end defmac
13259 @defmac AS_MKDIR_P (@var{file-name})
13260 @asindex{MKDIR_P}
13261 Make the directory @var{file-name}, including intervening directories
13262 as necessary.  This is equivalent to @samp{mkdir -p -- @var{file-name}},
13263 except that it is portable to older versions of @command{mkdir} that
13264 lack support for the @option{-p} option or for the @option{--}
13265 delimiter (@pxref{mkdir, , Limitations of Usual Tools}).  Also,
13266 @code{AS_MKDIR_P}
13267 succeeds if @var{file-name} is a symbolic link to an existing directory,
13268 even though Posix is unclear whether @samp{mkdir -p} should
13269 succeed in that case.  If creation of @var{file-name} fails, exit the
13270 script.
13272 Also see the @code{AC_PROG_MKDIR_P} macro (@pxref{Particular Programs}).
13273 @end defmac
13275 @defmac AS_SET_STATUS (@var{status})
13276 @asindex{SET_STATUS}
13277 Emit shell code to set the value of @samp{$?} to @var{status}, as
13278 efficiently as possible.  However, this is not guaranteed to abort a
13279 shell running with @code{set -e} (@pxref{set, , Limitations of Shell
13280 Builtins}).  This should also be used at the end of a complex shell
13281 function instead of @samp{return} (@pxref{Shell Functions}) to avoid
13282 a DJGPP shell bug.
13283 @end defmac
13285 @defmac AS_TR_CPP (@var{expression})
13286 @asindex{TR_CPP}
13287 Transform @var{expression} into a valid right-hand side for a C @code{#define}.
13288 For example:
13290 @example
13291 # This outputs "#define HAVE_CHAR_P 1".
13292 # Notice the m4 quoting around #, to prevent an m4 comment
13293 type="char *"
13294 echo "[#]define AS_TR_CPP([HAVE_$type]) 1"
13295 @end example
13296 @end defmac
13298 @defmac AS_TR_SH (@var{expression})
13299 @asindex{TR_SH}
13300 Transform @var{expression} into shell code that generates a valid shell
13301 variable name.  The result is literal when possible at m4 time, but must
13302 be used with @code{eval} if @var{expression} causes shell indirections.
13303 For example:
13305 @example
13306 # This outputs "Have it!".
13307 header="sys/some file.h"
13308 eval AS_TR_SH([HAVE_$header])=yes
13309 if test "x$HAVE_sys_some_file_h" = xyes; then echo "Have it!"; fi
13310 @end example
13311 @end defmac
13313 @defmac AS_SET_CATFILE (@var{var}, @var{dir}, @var{file})
13314 @asindex{SET_CATFILE}
13315 Set the polymorphic shell variable @var{var} to @var{dir}/@var{file},
13316 but optimizing the common cases (@var{dir} or @var{file} is @samp{.},
13317 @var{file} is absolute, etc.).
13318 @end defmac
13320 @defmac AS_UNSET (@var{var})
13321 @asindex{UNSET}
13322 Unsets the shell variable @var{var}, working around bugs in older
13323 shells (@pxref{unset, , Limitations of Shell
13324 Builtins}).  @var{var} can be a literal or indirect variable name.
13325 @end defmac
13327 @defmac AS_VERSION_COMPARE (@var{version-1}, @var{version-2}, @
13328   @ovar{action-if-less}, @ovar{action-if-equal}, @ovar{action-if-greater})
13329 @asindex{VERSION_COMPARE}
13330 Compare two strings @var{version-1} and @var{version-2}, possibly
13331 containing shell variables, as version strings, and expand
13332 @var{action-if-less}, @var{action-if-equal}, or @var{action-if-greater}
13333 depending upon the result.
13334 The algorithm to compare is similar to the one used by strverscmp in
13335 glibc (@pxref{String/Array Comparison, , String/Array Comparison, libc,
13336 The GNU C Library}).
13337 @end defmac
13339 @node Polymorphic Variables
13340 @section Support for indirect variable names
13341 @cindex variable name indirection
13342 @cindex polymorphic variable name
13343 @cindex indirection, variable name
13345 Often, it is convenient to write a macro that will emit shell code
13346 operating on a shell variable.  The simplest case is when the variable
13347 name is known.  But a more powerful idiom is writing shell code that can
13348 work through an indirection, where another variable or command
13349 substitution produces the name of the variable to actually manipulate.
13350 M4sh supports the notion of polymorphic shell variables, making it easy
13351 to write a macro that can deal with either literal or indirect variable
13352 names and output shell code appropriate for both use cases.  Behavior is
13353 undefined if expansion of an indirect variable does not result in a
13354 literal variable name.
13356 @defmac AS_LITERAL_IF (@var{expression}, @ovar{if-literal}, @ovar{if-not}, @
13357   @dvar{if-simple-ref, @var{if-not}})
13358 @defmacx AS_LITERAL_WORD_IF (@var{expression}, @ovar{if-literal}, @
13359   @ovar{if-not}, @dvar{if-simple-ref, @var{if-not}})
13360 @asindex{LITERAL_IF}
13361 @asindex{LITERAL_WORD_IF}
13362 If the expansion of @var{expression} is definitely a shell literal,
13363 expand @var{if-literal}.  If the expansion of @var{expression} looks
13364 like it might contain shell indirections (such as @code{$var} or
13365 @code{`expr`}), then @var{if-not} is expanded.  Sometimes, it is
13366 possible to output optimized code if @var{expression} consists only of
13367 shell variable expansions (such as @code{$@{var@}}), in which case
13368 @var{if-simple-ref} can be provided; but defaulting to @var{if-not}
13369 should always be safe.  @code{AS_LITERAL_WORD_IF} only expands
13370 @var{if-literal} if @var{expression} looks like a single shell word,
13371 containing no whitespace; while @code{AS_LITERAL_IF} allows whitespace
13372 in @var{expression}.
13374 In order to reduce the time spent recognizing whether an
13375 @var{expression} qualifies as a literal or a simple indirection, the
13376 implementation is somewhat conservative: @var{expression} must be a
13377 single shell word (possibly after stripping whitespace), consisting only
13378 of bytes that would have the same meaning whether unquoted or enclosed
13379 in double quotes (for example, @samp{a.b} results in @var{if-literal},
13380 even though it is not a valid shell variable name; while both @samp{'a'}
13381 and @samp{[$]} result in @var{if-not}, because they behave differently
13382 than @samp{"'a'"} and @samp{"[$]"}).  This macro can be used in contexts
13383 for recognizing portable file names (such as in the implementation of
13384 @code{AC_LIBSOURCE}), or coupled with some transliterations for forming
13385 valid variable names (such as in the implementation of @code{AS_TR_SH},
13386 which uses an additional @code{m4_translit} to convert @samp{.} to
13387 @samp{_}).
13389 This example shows how to read the contents of the shell variable
13390 @code{bar}, exercising all three arguments to @code{AS_LITERAL_IF}.  It
13391 results in a script that will output the line @samp{hello} three times.
13393 @example
13394 AC_DEFUN([MY_ACTION],
13395 [AS_LITERAL_IF([$1],
13396   [echo "$$1"],
13397   [AS_VAR_COPY([tmp], [$1])
13398    echo "$tmp"],
13399   [eval 'echo "$'"$1"\"])])
13400 foo=bar bar=hello
13401 MY_ACTION([bar])
13402 MY_ACTION([`echo bar`])
13403 MY_ACTION([$foo])
13404 @end example
13405 @end defmac
13407 @defmac AS_VAR_APPEND (@var{var}, @var{text})
13408 @asindex{VAR_APPEND}
13409 Emit shell code to append the shell expansion of @var{text} to the end
13410 of the current contents of the polymorphic shell variable @var{var},
13411 taking advantage of shells that provide the @samp{+=} extension for more
13412 efficient scaling.
13414 For situations where the final contents of @var{var} are relatively
13415 short (less than 256 bytes), it is more efficient to use the simpler
13416 code sequence of @code{@var{var}=$@{@var{var}@}@var{text}} (or its
13417 polymorphic equivalent of @code{AS_VAR_COPY([tmp], [@var{var}])} and
13418 @code{AS_VAR_SET([@var{var}], ["$tmp"@var{text}])}).  But in the case
13419 when the script will be repeatedly appending text into @code{var},
13420 issues of scaling start to become apparent.  A naive implementation
13421 requires execution time linear to the length of the current contents of
13422 @var{var} as well as the length of @var{text} for a single append, for
13423 an overall quadratic scaling with multiple appends.  This macro takes
13424 advantage of shells which provide the extension
13425 @code{@var{var}+=@var{text}}, which can provide amortized constant time
13426 for a single append, for an overall linear scaling with multiple
13427 appends.  Note that unlike @code{AS_VAR_SET}, this macro requires that
13428 @var{text} be quoted properly to avoid field splitting and file name
13429 expansion.
13430 @end defmac
13432 @defmac AS_VAR_ARITH (@var{var}, @var{expression})
13433 @asindex{VAR_ARITH}
13434 Emit shell code to compute the arithmetic expansion of @var{expression},
13435 assigning the result as the contents of the polymorphic shell variable
13436 @var{var}.  The code takes advantage of shells that provide @samp{$(())}
13437 for fewer forks, but uses @command{expr} as a fallback.  Therefore, the
13438 syntax for a valid @var{expression} is rather limited: all operators
13439 must occur as separate shell arguments and with proper quoting, there is
13440 no portable equality operator, all variables containing numeric values
13441 must be expanded prior to the computation, all numeric values must be
13442 provided in decimal without leading zeroes, and the first shell argument
13443 should not be a negative number.  In the following example, this snippet
13444 will print @samp{(2+3)*4 == 20}.
13446 @example
13447 bar=3
13448 AS_VAR_ARITH([foo], [\( 2 + $bar \) \* 4])
13449 echo "(2+$bar)*4 == $foo"
13450 @end example
13451 @end defmac
13453 @defmac AS_VAR_COPY (@var{dest}, @var{source})
13454 @asindex{VAR_COPY}
13455 Emit shell code to assign the contents of the polymorphic shell variable
13456 @var{source} to the polymorphic shell variable @var{dest}.  For example,
13457 executing this M4sh snippet will output @samp{bar hi}:
13459 @example
13460 foo=bar bar=hi
13461 AS_VAR_COPY([a], [foo])
13462 AS_VAR_COPY([b], [$foo])
13463 echo "$a $b"
13464 @end example
13466 When it is necessary to access the contents of an indirect variable
13467 inside a shell double-quoted context, the recommended idiom is to first
13468 copy the contents into a temporary literal shell variable.
13470 @smallexample
13471 for header in stdint_h inttypes_h ; do
13472   AS_VAR_COPY([var], [ac_cv_header_$header])
13473   echo "$header detected: $var"
13474 done
13475 @end smallexample
13476 @end defmac
13478 @comment AS_VAR_GET is intentionally undocumented; it can't handle
13479 @comment trailing newlines uniformly, and forks too much.
13481 @defmac AS_VAR_IF (@var{var}, @ovar{value}, @ovar{if-equal}, @
13482   @ovar{if-not-equal})
13483 @asindex{VAR_IF}
13484 Output a shell conditional statement.  If the contents of the
13485 polymorphic shell variable @var{var} match the string @var{value},
13486 execute @var{if-equal}; otherwise execute @var{if-not-equal}.  Avoids
13487 shell bugs if an interrupt signal arrives while a command substitution
13488 in @var{var} is being expanded.
13489 @end defmac
13491 @defmac AS_VAR_PUSHDEF (@var{m4-name}, @var{value})
13492 @defmacx AS_VAR_POPDEF (@var{m4-name})
13493 @asindex{VAR_PUSHDEF}
13494 @asindex{VAR_POPDEF}
13495 @cindex composing variable names
13496 @cindex variable names, composing
13497 A common M4sh idiom involves composing shell variable names from an m4
13498 argument (for example, writing a macro that uses a cache variable).
13499 @var{value} can be an arbitrary string, which will be transliterated
13500 into a valid shell name by @code{AS_TR_SH}.  In order to access the
13501 composed variable name based on @var{value}, it is easier to declare a
13502 temporary m4 macro @var{m4-name} with @code{AS_VAR_PUSHDEF}, then use
13503 that macro as the argument to subsequent @code{AS_VAR} macros as a
13504 polymorphic variable name, and finally free the temporary macro with
13505 @code{AS_VAR_POPDEF}.  These macros are often followed with @code{dnl},
13506 to avoid excess newlines in the output.
13508 Here is an involved example, that shows the power of writing macros that
13509 can handle composed shell variable names:
13511 @example
13512 m4_define([MY_CHECK_HEADER],
13513 [AS_VAR_PUSHDEF([my_Header], [ac_cv_header_$1])dnl
13514 AS_VAR_IF([my_Header], [yes], [echo "header $1 detected"])dnl
13515 AS_VAR_POPDEF([my_Header])dnl
13517 MY_CHECK_HEADER([stdint.h])
13518 for header in inttypes.h stdlib.h ; do
13519   MY_CHECK_HEADER([$header])
13520 done
13521 @end example
13523 @noindent
13524 In the above example, @code{MY_CHECK_HEADER} can operate on polymorphic
13525 variable names.  In the first invocation, the m4 argument is
13526 @code{stdint.h}, which transliterates into a literal @code{stdint_h}.
13527 As a result, the temporary macro @code{my_Header} expands to the literal
13528 shell name @samp{ac_cv_header_stdint_h}.  In the second invocation, the
13529 m4 argument to @code{MY_CHECK_HEADER} is @code{$header}, and the
13530 temporary macro @code{my_Header} expands to the indirect shell name
13531 @samp{$as_my_Header}.  During the shell execution of the for loop, when
13532 @samp{$header} contains @samp{inttypes.h}, then @samp{$as_my_Header}
13533 contains @samp{ac_cv_header_inttypes_h}.  If this script is then run on a
13534 platform where all three headers have been previously detected, the
13535 output of the script will include:
13537 @smallexample
13538 header stdint.h detected
13539 header inttypes.h detected
13540 header stdlib.h detected
13541 @end smallexample
13542 @end defmac
13544 @defmac AS_VAR_SET (@var{var}, @ovar{value})
13545 @asindex{VAR_SET}
13546 Emit shell code to assign the contents of the polymorphic shell variable
13547 @var{var} to the shell expansion of @var{value}.  @var{value} is not
13548 subject to field splitting or file name expansion, so if command
13549 substitution is used, it may be done with @samp{`""`} rather than using
13550 an intermediate variable (@pxref{Shell Substitutions}).  However,
13551 @var{value} does undergo rescanning for additional macro names; behavior
13552 is unspecified if late expansion results in any shell meta-characters.
13553 @end defmac
13555 @defmac AS_VAR_SET_IF (@var{var}, @ovar{if-set}, @ovar{if-undef})
13556 @asindex{VAR_SET_IF}
13557 Emit a shell conditional statement, which executes @var{if-set} if the
13558 polymorphic shell variable @code{var} is set to any value, and
13559 @var{if-undef} otherwise.
13560 @end defmac
13562 @defmac AS_VAR_TEST_SET (@var{var})
13563 @asindex{VAR_TEST_SET}
13564 Emit a shell statement that results in a successful exit status only if
13565 the polymorphic shell variable @code{var} is set.
13566 @end defmac
13568 @node Initialization Macros
13569 @section Initialization Macros
13571 @defmac AS_BOURNE_COMPATIBLE
13572 @asindex{BOURNE_COMPATIBLE}
13573 Set up the shell to be more compatible with the Bourne shell as
13574 standardized by Posix, if possible.  This may involve setting
13575 environment variables, or setting options, or similar
13576 implementation-specific actions.  This macro is deprecated, since
13577 @code{AS_INIT} already invokes it.
13578 @end defmac
13580 @defmac AS_INIT
13581 @asindex{INIT}
13582 @evindex LC_ALL
13583 @evindex SHELL
13584 Initialize the M4sh environment.  This macro calls @code{m4_init}, then
13585 outputs the @code{#! /bin/sh} line, a notice about where the output was
13586 generated from, and code to sanitize the environment for the rest of the
13587 script.  Among other initializations, this sets @env{SHELL} to the shell
13588 chosen to run the script (@pxref{CONFIG_SHELL}), and @env{LC_ALL} to
13589 ensure the C locale.  Finally, it changes the current diversion to
13590 @code{BODY}.  @code{AS_INIT} is called automatically by @code{AC_INIT}
13591 and @code{AT_INIT}, so shell code in @file{configure},
13592 @file{config.status}, and @file{testsuite} all benefit from a sanitized
13593 shell environment.
13594 @end defmac
13596 @defmac AS_INIT_GENERATED (@var{file}, @ovar{comment})
13597 @asindex{INIT_GENERATED}
13598 Emit shell code to start the creation of a subsidiary shell script in
13599 @var{file}, including changing @var{file} to be executable.  This macro
13600 populates the child script with information learned from the parent
13601 (thus, the emitted code is equivalent in effect, but more efficient,
13602 than the code output by @code{AS_INIT}, @code{AS_BOURNE_COMPATIBLE}, and
13603 @code{AS_SHELL_SANITIZE}).  If present, @var{comment} is output near the
13604 beginning of the child, prior to the shell initialization code, and is
13605 subject to parameter expansion, command substitution, and backslash
13606 quote removal.  The
13607 parent script should check the exit status after this macro, in case
13608 @var{file} could not be properly created (for example, if the disk was
13609 full).  If successfully created, the parent script can then proceed to
13610 append additional M4sh constructs into the child script.
13612 Note that the child script starts life without a log file open, so if
13613 the parent script uses logging (@pxref{AS_MESSAGE_LOG_FD}), you
13614 must temporarily disable any attempts to use the log file until after
13615 emitting code to open a log within the child.  On the other hand, if the
13616 parent script has @code{AS_MESSAGE_FD} redirected somewhere besides
13617 @samp{1}, then the child script already has code that copies stdout to
13618 that descriptor.  Currently, the suggested
13619 idiom for writing a M4sh shell script from within another script is:
13621 @example
13622 AS_INIT_GENERATED([@var{file}], [[# My child script.
13623 ]]) || @{ AS_ECHO(["Failed to create child script"]); AS_EXIT; @}
13624 m4_pushdef([AS_MESSAGE_LOG_FD])dnl
13625 cat >> "@var{file}" <<\__EOF__
13626 # Code to initialize AS_MESSAGE_LOG_FD
13627 m4_popdef([AS_MESSAGE_LOG_FD])dnl
13628 # Additional code
13629 __EOF__
13630 @end example
13632 This, however, may change in the future as the M4sh interface is
13633 stabilized further.
13635 Also, be aware that use of @env{LINENO} within the child script may
13636 report line numbers relative to their location in the parent script,
13637 even when using @code{AS_LINENO_PREPARE}, if the parent script was
13638 unable to locate a shell with working @env{LINENO} support.
13639 @end defmac
13641 @defmac AS_LINENO_PREPARE
13642 @asindex{LINENO_PREPARE}
13643 @evindex LINENO
13644 Find a shell that supports the special variable @env{LINENO}, which
13645 contains the number of the currently executing line.  This macro is
13646 automatically invoked by @code{AC_INIT} in configure scripts.
13647 @end defmac
13649 @defmac AS_ME_PREPARE
13650 @asindex{ME_PREPARE}
13651 Set up variable @env{as_me} to be the basename of the currently executing
13652 script.  This macro is automatically invoked by @code{AC_INIT} in
13653 configure scripts.
13654 @end defmac
13656 @defmac AS_SHELL_SANITIZE
13657 @asindex{SHELL_SANITIZE}
13658 Initialize the shell suitably for @command{configure} scripts.  This has
13659 the effect of @code{AS_BOURNE_COMPATIBLE}, and sets some other
13660 environment variables for predictable results from configuration tests.
13661 For example, it sets @env{LC_ALL} to change to the default C locale.
13662 @xref{Special Shell Variables}.  This macro is deprecated, since
13663 @code{AS_INIT} already invokes it.
13664 @end defmac
13667 @node File Descriptor Macros
13668 @section File Descriptor Macros
13669 @cindex input
13670 @cindex standard input
13671 @cindex file descriptors
13672 @cindex descriptors
13673 @cindex low-level output
13674 @cindex output, low-level
13676 The following macros define file descriptors used to output messages
13677 (or input values) from @file{configure} scripts.
13678 For example:
13680 @example
13681 echo "$wombats found" >&AS_MESSAGE_LOG_FD
13682 echo 'Enter desired kangaroo count:' >&AS_MESSAGE_FD
13683 read kangaroos <&AS_ORIGINAL_STDIN_FD`
13684 @end example
13686 @noindent
13687 However doing so is seldom needed, because Autoconf provides higher
13688 level macros as described below.
13690 @defmac AS_MESSAGE_FD
13691 @asindex{MESSAGE_FD}
13692 The file descriptor for @samp{checking for...}  messages and results.
13693 By default, @code{AS_INIT} sets this to @samp{1} for standalone M4sh
13694 clients.  However, @code{AC_INIT} shuffles things around to another file
13695 descriptor, in order to allow the @option{-q} option of
13696 @command{configure} to choose whether messages should go to the script's
13697 standard output or be discarded.
13699 If you want to display some messages, consider using one of the printing
13700 macros (@pxref{Printing Messages}) instead.  Copies of messages output
13701 via these macros are also recorded in @file{config.log}.
13702 @end defmac
13704 @anchor{AS_MESSAGE_LOG_FD}
13705 @defmac AS_MESSAGE_LOG_FD
13706 @asindex{MESSAGE_LOG_FD}
13707 This must either be empty, or expand to a file descriptor for log
13708 messages.  By default, @code{AS_INIT} sets this macro to the empty
13709 string for standalone M4sh clients, thus disabling logging.  However,
13710 @code{AC_INIT} shuffles things around so that both @command{configure}
13711 and @command{config.status} use @file{config.log} for log messages.
13712 Macros that run tools, like @code{AC_COMPILE_IFELSE} (@pxref{Running the
13713 Compiler}), redirect all output to this descriptor.  You may want to do
13714 so if you develop such a low-level macro.
13715 @end defmac
13717 @defmac AS_ORIGINAL_STDIN_FD
13718 @asindex{ORIGINAL_STDIN_FD}
13719 This must expand to a file descriptor for the original standard input.
13720 By default, @code{AS_INIT} sets this macro to @samp{0} for standalone
13721 M4sh clients.  However, @code{AC_INIT} shuffles things around for
13722 safety.
13724 When @command{configure} runs, it may accidentally execute an
13725 interactive command that has the same name as the non-interactive meant
13726 to be used or checked.  If the standard input was the terminal, such
13727 interactive programs would cause @command{configure} to stop, pending
13728 some user input.  Therefore @command{configure} redirects its standard
13729 input from @file{/dev/null} during its initialization.  This is not
13730 normally a problem, since @command{configure} normally does not need
13731 user input.
13733 In the extreme case where your @file{configure} script really needs to
13734 obtain some values from the original standard input, you can read them
13735 explicitly from @code{AS_ORIGINAL_STDIN_FD}.
13736 @end defmac
13739 @c =================================================== Writing Autoconf Macros.
13741 @node Writing Autoconf Macros
13742 @chapter Writing Autoconf Macros
13744 When you write a feature test that could be applicable to more than one
13745 software package, the best thing to do is encapsulate it in a new macro.
13746 Here are some instructions and guidelines for writing Autoconf macros.
13748 @menu
13749 * Macro Definitions::           Basic format of an Autoconf macro
13750 * Macro Names::                 What to call your new macros
13751 * Reporting Messages::          Notifying @command{autoconf} users
13752 * Dependencies Between Macros::  What to do when macros depend on other macros
13753 * Obsoleting Macros::           Warning about old ways of doing things
13754 * Coding Style::                Writing Autoconf macros @`a la Autoconf
13755 @end menu
13757 @node Macro Definitions
13758 @section Macro Definitions
13760 @defmac AC_DEFUN (@var{name}, @ovar{body})
13761 @acindex{DEFUN}
13762 Autoconf macros are defined using the @code{AC_DEFUN} macro, which is
13763 similar to the M4 builtin @code{m4_define} macro; this creates a macro
13764 named @var{name} and with @var{body} as its expansion.  In addition to
13765 defining a macro, @code{AC_DEFUN} adds to it some code that is used to
13766 constrain the order in which macros are called, while avoiding redundant
13767 output (@pxref{Prerequisite Macros}).
13768 @end defmac
13770 An Autoconf macro definition looks like this:
13772 @example
13773 AC_DEFUN(@var{macro-name}, @var{macro-body})
13774 @end example
13776 You can refer to any arguments passed to the macro as @samp{$1},
13777 @samp{$2}, etc.  @xref{Definitions, , How to define new macros, m4.info,
13778 GNU M4}, for more complete information on writing M4 macros.
13780 Most macros fall in one of two general categories.  The first category
13781 includes macros which take arguments, in order to generate output
13782 parameterized by those arguments.  Macros in this category are designed
13783 to be directly expanded, often multiple times, and should not be used as
13784 the argument to @code{AC_REQUIRE}.  The other category includes macros
13785 which are shorthand for a fixed block of text, and therefore do not take
13786 arguments.  For this category of macros, directly expanding the macro
13787 multiple times results in redundant output, so it is more common to use
13788 the macro as the argument to @code{AC_REQUIRE}, or to declare the macro
13789 with @code{AC_DEFUN_ONCE} (@pxref{One-Shot Macros}).
13791 Be sure to properly quote both the @var{macro-body} @emph{and} the
13792 @var{macro-name} to avoid any problems if the macro happens to have
13793 been previously defined.
13795 Each macro should have a header comment that gives its prototype, and a
13796 brief description.  When arguments have default values, display them in
13797 the prototype.  For example:
13799 @example
13800 # AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
13801 # --------------------------------------
13802 m4_define([AC_MSG_ERROR],
13803   [@{ AS_MESSAGE([error: $1], [2])
13804      exit m4_default([$2], [1]); @}])
13805 @end example
13807 Comments about the macro should be left in the header comment.  Most
13808 other comments make their way into @file{configure}, so just keep
13809 using @samp{#} to introduce comments.
13811 @cindex @code{dnl}
13812 If you have some special comments about pure M4 code, comments
13813 that make no sense in @file{configure} and in the header comment, then
13814 use the builtin @code{dnl}: it causes M4 to discard the text
13815 through the next newline.
13817 Keep in mind that @code{dnl} is rarely needed to introduce comments;
13818 @code{dnl} is more useful to get rid of the newlines following macros
13819 that produce no output, such as @code{AC_REQUIRE}.
13821 Public third-party macros need to use @code{AC_DEFUN}, and not
13822 @code{m4_define}, in order to be found by @command{aclocal}
13823 (@pxref{Extending aclocal,,, automake, GNU Automake}).
13824 Additionally, if it is ever determined that a macro should be made
13825 obsolete, it is easy to convert from @code{AC_DEFUN} to @code{AU_DEFUN}
13826 in order to have @command{autoupdate} assist the user in choosing a
13827 better alternative, but there is no corresponding way to make
13828 @code{m4_define} issue an upgrade notice (@pxref{AU_DEFUN}).
13830 There is another subtle, but important, difference between using
13831 @code{m4_define} and @code{AC_DEFUN}: only the former is unaffected by
13832 @code{AC_REQUIRE}.  When writing a file, it is always safe to replace a
13833 block of text with a @code{m4_define} macro that will expand to the same
13834 text.  But replacing a block of text with an @code{AC_DEFUN} macro with
13835 the same content does not necessarily give the same results, because it
13836 changes the location where any embedded but unsatisfied
13837 @code{AC_REQUIRE} invocations within the block will be expanded.  For an
13838 example of this, see @ref{Expanded Before Required}.
13840 @node Macro Names
13841 @section Macro Names
13843 All of the public Autoconf macros have all-uppercase names in the
13844 namespace @samp{^AC_} to prevent them from accidentally conflicting with
13845 other text; Autoconf also reserves the namespace @samp{^_AC_} for
13846 internal macros.  All shell variables that they use for internal
13847 purposes have mostly-lowercase names starting with @samp{ac_}.  Autoconf
13848 also uses here-document delimiters in the namespace @samp{^_AC[A-Z]}.  During
13849 @command{configure}, files produced by Autoconf make heavy use of the
13850 file system namespace @samp{^conf}.
13852 Since Autoconf is built on top of M4sugar (@pxref{Programming in
13853 M4sugar}) and M4sh (@pxref{Programming in M4sh}), you must also be aware
13854 of those namespaces (@samp{^_?\(m4\|AS\)_}).  And since
13855 @file{configure.ac} is also designed to be scanned by Autoheader,
13856 Autoscan, Autoupdate, and Automake, you should be aware of the
13857 @samp{^_?A[HNUM]_} namespaces.  In general, you @emph{should not use}
13858 the namespace of a package that does not own the macro or shell code you
13859 are writing.
13861 To ensure that your macros don't conflict with present or future
13862 Autoconf macros, you should prefix your own macro names and any shell
13863 variables they use with some other sequence.  Possibilities include your
13864 initials, or an abbreviation for the name of your organization or
13865 software package.  Historically, people have not always followed the
13866 rule of using a namespace appropriate for their package, and this has
13867 made it difficult for determining the origin of a macro (and where to
13868 report bugs about that macro), as well as difficult for the true
13869 namespace owner to add new macros without interference from pre-existing
13870 uses of third-party macros.  Perhaps the best example of this confusion
13871 is the @code{AM_GNU_GETTEXT} macro, which belongs, not to Automake, but
13872 to Gettext.
13874 Most of the Autoconf macros' names follow a structured naming convention
13875 that indicates the kind of feature check by the name.  The macro names
13876 consist of several words, separated by underscores, going from most
13877 general to most specific.  The names of their cache variables use the
13878 same convention (@pxref{Cache Variable Names}, for more information on
13879 them).
13881 The first word of the name after the namespace initials (such as
13882 @samp{AC_}) usually tells the category
13883 of the feature being tested.  Here are the categories used in Autoconf for
13884 specific test macros, the kind of macro that you are more likely to
13885 write.  They are also used for cache variables, in all-lowercase.  Use
13886 them where applicable; where they're not, invent your own categories.
13888 @table @code
13889 @item C
13890 C language builtin features.
13891 @item DECL
13892 Declarations of C variables in header files.
13893 @item FUNC
13894 Functions in libraries.
13895 @item GROUP
13896 Posix group owners of files.
13897 @item HEADER
13898 Header files.
13899 @item LIB
13900 C libraries.
13901 @item PROG
13902 The base names of programs.
13903 @item MEMBER
13904 Members of aggregates.
13905 @item SYS
13906 Operating system features.
13907 @item TYPE
13908 C builtin or declared types.
13909 @item VAR
13910 C variables in libraries.
13911 @end table
13913 After the category comes the name of the particular feature being
13914 tested.  Any further words in the macro name indicate particular aspects
13915 of the feature.  For example, @code{AC_PROG_CC_STDC} checks whether the
13916 C compiler supports ISO Standard C.
13918 An internal macro should have a name that starts with an underscore;
13919 Autoconf internals should therefore start with @samp{_AC_}.
13920 Additionally, a macro that is an internal subroutine of another macro
13921 should have a name that starts with an underscore and the name of that
13922 other macro, followed by one or more words saying what the internal
13923 macro does.  For example, @code{AC_PATH_X} has internal macros
13924 @code{_AC_PATH_X_XMKMF} and @code{_AC_PATH_X_DIRECT}.
13926 @node Reporting Messages
13927 @section Reporting Messages
13928 @cindex Messages, from @command{autoconf}
13930 When macros statically diagnose abnormal situations, benign or fatal, it
13931 is possible to make @command{autoconf} detect the problem, and refuse to
13932 create @file{configure} in the case of an error.  The macros in this
13933 section are considered obsolescent, and new code should use M4sugar
13934 macros for this purpose, see @ref{Diagnostic Macros}.
13936 On the other hand, it is possible to want to detect errors when
13937 @command{configure} is run, which are dependent on the environment of
13938 the user rather than the maintainer.  For dynamic diagnostics, see
13939 @ref{Printing Messages}.
13941 @defmac AC_DIAGNOSE (@var{category}, @var{message})
13942 @acindex{DIAGNOSE}
13943 Report @var{message} as a warning (or as an error if requested by the
13944 user) if warnings of the @var{category} are turned on.  This macro is
13945 obsolescent; you are encouraged to use:
13946 @example
13947 m4_warn([@var{category}], [@var{message}])
13948 @end example
13949 @noindent
13950 instead.  @xref{m4_warn}, for more details, including valid
13951 @var{category} names.
13952 @end defmac
13954 @defmac AC_WARNING (@var{message})
13955 @acindex{WARNING}
13956 Report @var{message} as a syntax warning.  This macro is obsolescent;
13957 you are encouraged to use:
13958 @example
13959 m4_warn([syntax], [@var{message}])
13960 @end example
13961 @noindent
13962 instead.  @xref{m4_warn}, for more details, as well as better
13963 finer-grained categories of warnings (not all problems have to do with
13964 syntax).
13965 @end defmac
13967 @defmac AC_FATAL (@var{message})
13968 @acindex{FATAL}
13969 Report a severe error @var{message}, and have @command{autoconf} die.
13970 This macro is obsolescent; you are encouraged to use:
13971 @example
13972 m4_fatal([@var{message}])
13973 @end example
13974 @noindent
13975 instead.  @xref{m4_fatal}, for more details.
13976 @end defmac
13978 When the user runs @samp{autoconf -W error}, warnings from
13979 @code{m4_warn} (including those issued through @code{AC_DIAGNOSE} and
13980 @code{AC_WARNING}) are reported as errors, see @ref{autoconf Invocation}.
13982 @node Dependencies Between Macros
13983 @section Dependencies Between Macros
13984 @cindex Dependencies between macros
13986 Some Autoconf macros depend on other macros having been called first in
13987 order to work correctly.  Autoconf provides a way to ensure that certain
13988 macros are called if needed and a way to warn the user if macros are
13989 called in an order that might cause incorrect operation.
13991 @menu
13992 * Prerequisite Macros::         Ensuring required information
13993 * Suggested Ordering::          Warning about possible ordering problems
13994 * One-Shot Macros::             Ensuring a macro is called only once
13995 @end menu
13997 @node Prerequisite Macros
13998 @subsection Prerequisite Macros
13999 @cindex Prerequisite macros
14000 @cindex Macros, prerequisites
14002 A macro that you write might need to use values that have previously
14003 been computed by other macros.  For example, @code{AC_DECL_YYTEXT}
14004 examines the output of @code{flex} or @code{lex}, so it depends on
14005 @code{AC_PROG_LEX} having been called first to set the shell variable
14006 @code{LEX}.
14008 Rather than forcing the user of the macros to keep track of the
14009 dependencies between them, you can use the @code{AC_REQUIRE} macro to do
14010 it automatically.  @code{AC_REQUIRE} can ensure that a macro is only
14011 called if it is needed, and only called once.
14013 @defmac AC_REQUIRE (@var{macro-name})
14014 @acindex{REQUIRE}
14015 If the M4 macro @var{macro-name} has not already been called, call it
14016 (without any arguments).  Make sure to quote @var{macro-name} with
14017 square brackets.  @var{macro-name} must have been defined using
14018 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
14019 that it has been called.
14021 @code{AC_REQUIRE} must be used inside a macro defined by @code{AC_DEFUN}; it
14022 must not be called from the top level.  Also, it does not make sense to
14023 require a macro that takes parameters.
14024 @end defmac
14026 @code{AC_REQUIRE} is often misunderstood.  It really implements
14027 dependencies between macros in the sense that if one macro depends upon
14028 another, the latter is expanded @emph{before} the body of the
14029 former.  To be more precise, the required macro is expanded before
14030 the outermost defined macro in the current expansion stack.
14031 In particular, @samp{AC_REQUIRE([FOO])} is not replaced with the body of
14032 @code{FOO}.  For instance, this definition of macros:
14034 @example
14035 @group
14036 AC_DEFUN([TRAVOLTA],
14037 [test "$body_temperature_in_celsius" -gt "38" &&
14038   dance_floor=occupied])
14039 AC_DEFUN([NEWTON_JOHN],
14040 [test "x$hair_style" = xcurly &&
14041   dance_floor=occupied])
14042 @end group
14044 @group
14045 AC_DEFUN([RESERVE_DANCE_FLOOR],
14046 [if date | grep '^Sat.*pm' >/dev/null 2>&1; then
14047   AC_REQUIRE([TRAVOLTA])
14048   AC_REQUIRE([NEWTON_JOHN])
14049 fi])
14050 @end group
14051 @end example
14053 @noindent
14054 with this @file{configure.ac}
14056 @example
14057 AC_INIT([Dance Manager], [1.0], [bug-dance@@example.org])
14058 RESERVE_DANCE_FLOOR
14059 if test "x$dance_floor" = xoccupied; then
14060   AC_MSG_ERROR([cannot pick up here, let's move])
14062 @end example
14064 @noindent
14065 does not leave you with a better chance to meet a kindred soul at
14066 other times than Saturday night since it expands into:
14068 @example
14069 @group
14070 test "$body_temperature_in_Celsius" -gt "38" &&
14071   dance_floor=occupied
14072 test "x$hair_style" = xcurly &&
14073   dance_floor=occupied
14075 if date | grep '^Sat.*pm' >/dev/null 2>&1; then
14079 @end group
14080 @end example
14082 This behavior was chosen on purpose: (i) it prevents messages in
14083 required macros from interrupting the messages in the requiring macros;
14084 (ii) it avoids bad surprises when shell conditionals are used, as in:
14086 @example
14087 @group
14088 if @dots{}; then
14089   AC_REQUIRE([SOME_CHECK])
14091 @dots{}
14092 SOME_CHECK
14093 @end group
14094 @end example
14096 However, this implementation can lead to another class of problems.
14097 Consider the case where an outer macro first expands, then indirectly
14098 requires, an inner macro:
14100 @example
14101 AC_DEFUN([TESTA], [[echo in A
14102 if test -n "$SEEN_A" ; then echo duplicate ; fi
14103 SEEN_A=:]])
14104 AC_DEFUN([TESTB], [AC_REQUIRE([TESTA])[echo in B
14105 if test -z "$SEEN_A" ; then echo bug ; fi]])
14106 AC_DEFUN([TESTC], [AC_REQUIRE([TESTB])[echo in C]])
14107 AC_DEFUN([OUTER], [[echo in OUTER]
14108 TESTA
14109 TESTC])
14110 OUTER
14111 @end example
14113 @noindent
14114 Prior to Autoconf 2.64, the implementation of @code{AC_REQUIRE}
14115 recognized that @code{TESTB} needed to be hoisted prior to the expansion
14116 of @code{OUTER}, but because @code{TESTA} had already been directly
14117 expanded, it failed to hoist @code{TESTA}.  Therefore, the expansion of
14118 @code{TESTB} occurs prior to its prerequisites, leading to the following
14119 output:
14121 @example
14122 in B
14124 in OUTER
14125 in A
14126 in C
14127 @end example
14129 @noindent
14130 Newer Autoconf is smart enough to recognize this situation, and hoists
14131 @code{TESTA} even though it has already been expanded, but issues a
14132 syntax warning in the process.  This is because the hoisted expansion of
14133 @code{TESTA} defeats the purpose of using @code{AC_REQUIRE} to avoid
14134 redundant code, and causes its own set of problems if the hoisted macro
14135 is not idempotent:
14137 @example
14138 in A
14139 in B
14140 in OUTER
14141 in A
14142 duplicate
14143 in C
14144 @end example
14146 The bug is not in Autoconf, but in the macro definitions.  If you ever
14147 pass a particular macro name to @code{AC_REQUIRE}, then you are implying
14148 that the macro only needs to be expanded once.  But to enforce this,
14149 either the macro must be declared with @code{AC_DEFUN_ONCE} (although
14150 this only helps in Autoconf 2.64 or newer), or all
14151 uses of that macro should be through @code{AC_REQUIRE}; directly
14152 expanding the macro defeats the point of using @code{AC_REQUIRE} to
14153 eliminate redundant expansion.  In the example, this rule of thumb was
14154 violated because @code{TESTB} requires @code{TESTA} while @code{OUTER}
14155 directly expands it.  One way of fixing the bug is to factor
14156 @code{TESTA} into two macros, the portion designed for direct and
14157 repeated use (here, named @code{TESTA}), and the portion designed for
14158 one-shot output and used only inside @code{AC_REQUIRE} (here, named
14159 @code{TESTA_PREREQ}).  Then, by fixing all clients to use the correct
14160 calling convention according to their needs:
14162 @example
14163 AC_DEFUN([TESTA], [AC_REQUIRE([TESTA_PREREQ])[echo in A]])
14164 AC_DEFUN([TESTA_PREREQ], [[echo in A_PREREQ
14165 if test -n "$SEEN_A" ; then echo duplicate ; fi
14166 SEEN_A=:]])
14167 AC_DEFUN([TESTB], [AC_REQUIRE([TESTA_PREREQ])[echo in B
14168 if test -z "$SEEN_A" ; then echo bug ; fi]])
14169 AC_DEFUN([TESTC], [AC_REQUIRE([TESTB])[echo in C]])
14170 AC_DEFUN([OUTER], [[echo in OUTER]
14171 TESTA
14172 TESTC])
14173 OUTER
14174 @end example
14176 @noindent
14177 the resulting output will then obey all dependency rules and avoid any
14178 syntax warnings, whether the script is built with old or new Autoconf
14179 versions:
14181 @example
14182 in A_PREREQ
14183 in B
14184 in OUTER
14185 in A
14186 in C
14187 @end example
14189 The helper macros @code{AS_IF} and @code{AS_CASE} may be used to
14190 enforce expansion of required macros outside of shell conditional
14191 constructs.  You are furthermore encouraged, although not required, to
14192 put all @code{AC_REQUIRE} calls
14193 at the beginning of a macro.  You can use @code{dnl} to avoid the empty
14194 lines they leave.
14196 @node Suggested Ordering
14197 @subsection Suggested Ordering
14198 @cindex Macros, ordering
14199 @cindex Ordering macros
14201 Some macros should be run before another macro if both are called, but
14202 neither @emph{requires} that the other be called.  For example, a macro
14203 that changes the behavior of the C compiler should be called before any
14204 macros that run the C compiler.  Many of these dependencies are noted in
14205 the documentation.
14207 Autoconf provides the @code{AC_BEFORE} macro to warn users when macros
14208 with this kind of dependency appear out of order in a
14209 @file{configure.ac} file.  The warning occurs when creating
14210 @command{configure} from @file{configure.ac}, not when running
14211 @command{configure}.
14213 For example, @code{AC_PROG_CPP} checks whether the C compiler
14214 can run the C preprocessor when given the @option{-E} option.  It should
14215 therefore be called after any macros that change which C compiler is
14216 being used, such as @code{AC_PROG_CC}.  So @code{AC_PROG_CC} contains:
14218 @example
14219 AC_BEFORE([$0], [AC_PROG_CPP])dnl
14220 @end example
14222 @noindent
14223 This warns the user if a call to @code{AC_PROG_CPP} has already occurred
14224 when @code{AC_PROG_CC} is called.
14226 @defmac AC_BEFORE (@var{this-macro-name}, @var{called-macro-name})
14227 @acindex{BEFORE}
14228 Make M4 print a warning message to the standard error output if
14229 @var{called-macro-name} has already been called.  @var{this-macro-name}
14230 should be the name of the macro that is calling @code{AC_BEFORE}.  The
14231 macro @var{called-macro-name} must have been defined using
14232 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
14233 that it has been called.
14234 @end defmac
14236 @node One-Shot Macros
14237 @subsection One-Shot Macros
14238 @cindex One-shot macros
14239 @cindex Macros, called once
14241 Some macros should be called only once, either because calling them
14242 multiple time is unsafe, or because it is bad style.  For instance
14243 Autoconf ensures that @code{AC_CANONICAL_BUILD} and cousins
14244 (@pxref{Canonicalizing}) are evaluated only once, because it makes no
14245 sense to run these expensive checks more than once.  Such one-shot
14246 macros can be defined using @code{AC_DEFUN_ONCE}.
14248 @defmac AC_DEFUN_ONCE (@var{macro-name}, @var{macro-body})
14249 @acindex{DEFUN_ONCE}
14250 Declare macro @var{macro-name} like @code{AC_DEFUN} would (@pxref{Macro
14251 Definitions}), but add additional logic that guarantees that only the
14252 first use of the macro (whether by direct expansion or
14253 @code{AC_REQUIRE}) causes an expansion of @var{macro-body}; the
14254 expansion will occur before the start of any enclosing macro defined by
14255 @code{AC_DEFUN}.  Subsequent expansions are silently ignored.
14256 Generally, it does not make sense for @var{macro-body} to use parameters
14257 such as @code{$1}.
14258 @end defmac
14260 Prior to Autoconf 2.64, a macro defined by @code{AC_DEFUN_ONCE} would
14261 emit a warning if it was directly expanded a second time, so for
14262 portability, it is better to use @code{AC_REQUIRE} than direct
14263 invocation of @var{macro-name} inside a macro defined by @code{AC_DEFUN}
14264 (@pxref{Prerequisite Macros}).
14266 @node Obsoleting Macros
14267 @section Obsoleting Macros
14268 @cindex Obsoleting macros
14269 @cindex Macros, obsoleting
14271 Configuration and portability technology has evolved over the years.
14272 Often better ways of solving a particular problem are developed, or
14273 ad-hoc approaches are systematized.  This process has occurred in many
14274 parts of Autoconf.  One result is that some of the macros are now
14275 considered @dfn{obsolete}; they still work, but are no longer considered
14276 the best thing to do, hence they should be replaced with more modern
14277 macros.  Ideally, @command{autoupdate} should replace the old macro calls
14278 with their modern implementation.
14280 Autoconf provides a simple means to obsolete a macro.
14282 @anchor{AU_DEFUN}
14283 @defmac AU_DEFUN (@var{old-macro}, @var{implementation}, @ovar{message})
14284 @auindex{DEFUN}
14285 Define @var{old-macro} as @var{implementation}.  The only difference
14286 with @code{AC_DEFUN} is that the user is warned that
14287 @var{old-macro} is now obsolete.
14289 If she then uses @command{autoupdate}, the call to @var{old-macro} is
14290 replaced by the modern @var{implementation}.  @var{message} should
14291 include information on what to do after running @command{autoupdate};
14292 @command{autoupdate} prints it as a warning, and includes it
14293 in the updated @file{configure.ac} file.
14295 The details of this macro are hairy: if @command{autoconf} encounters an
14296 @code{AU_DEFUN}ed macro, all macros inside its second argument are expanded
14297 as usual.  However, when @command{autoupdate} is run, only M4 and M4sugar
14298 macros are expanded here, while all other macros are disabled and
14299 appear literally in the updated @file{configure.ac}.
14300 @end defmac
14302 @defmac AU_ALIAS (@var{old-name}, @var{new-name})
14303 @auindex{ALIAS}
14304 Used if the @var{old-name} is to be replaced by a call to @var{new-macro}
14305 with the same parameters.  This happens for example if the macro was renamed.
14306 @end defmac
14308 @node Coding Style
14309 @section Coding Style
14310 @cindex Coding style
14312 The Autoconf macros follow a strict coding style.  You are encouraged to
14313 follow this style, especially if you intend to distribute your macro,
14314 either by contributing it to Autoconf itself or the
14315 @uref{http://@/www.gnu.org/@/software/@/autoconf-archive/, Autoconf Macro
14316 Archive}, or by other means.
14318 The first requirement is to pay great attention to the quotation.  For
14319 more details, see @ref{Autoconf Language}, and @ref{M4 Quotation}.
14321 Do not try to invent new interfaces.  It is likely that there is a macro
14322 in Autoconf that resembles the macro you are defining: try to stick to
14323 this existing interface (order of arguments, default values, etc.).  We
14324 @emph{are} conscious that some of these interfaces are not perfect;
14325 nevertheless, when harmless, homogeneity should be preferred over
14326 creativity.
14328 Be careful about clashes both between M4 symbols and between shell
14329 variables.
14331 If you stick to the suggested M4 naming scheme (@pxref{Macro Names}),
14332 you are unlikely to generate conflicts.  Nevertheless, when you need to
14333 set a special value, @emph{avoid using a regular macro name}; rather,
14334 use an ``impossible'' name.  For instance, up to version 2.13, the macro
14335 @code{AC_SUBST} used to remember what @var{symbol} macros were already defined
14336 by setting @code{AC_SUBST_@var{symbol}}, which is a regular macro name.
14337 But since there is a macro named @code{AC_SUBST_FILE}, it was just
14338 impossible to @samp{AC_SUBST(FILE)}!  In this case,
14339 @code{AC_SUBST(@var{symbol})} or @code{_AC_SUBST(@var{symbol})} should
14340 have been used (yes, with the parentheses).
14341 @c or better yet, high-level macros such as @code{m4_expand_once}
14343 No Autoconf macro should ever enter the user-variable name space; i.e.,
14344 except for the variables that are the actual result of running the
14345 macro, all shell variables should start with @code{ac_}.  In
14346 addition, small macros or any macro that is likely to be embedded in
14347 other macros should be careful not to use obvious names.
14349 @cindex @code{dnl}
14350 Do not use @code{dnl} to introduce comments: most of the comments you
14351 are likely to write are either header comments which are not output
14352 anyway, or comments that should make their way into @file{configure}.
14353 There are exceptional cases where you do want to comment special M4
14354 constructs, in which case @code{dnl} is right, but keep in mind that it
14355 is unlikely.
14357 M4 ignores the leading blanks and newlines before each argument.
14358 Use this feature to
14359 indent in such a way that arguments are (more or less) aligned with the
14360 opening parenthesis of the macro being called.  For instance, instead of
14362 @example
14363 AC_CACHE_CHECK(for EMX OS/2 environment,
14364 ac_cv_emxos2,
14365 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __EMX__;])],
14366 [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
14367 @end example
14369 @noindent
14370 write
14372 @example
14373 AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
14374 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
14375                    [ac_cv_emxos2=yes],
14376                    [ac_cv_emxos2=no])])
14377 @end example
14379 @noindent
14380 or even
14382 @example
14383 AC_CACHE_CHECK([for EMX OS/2 environment],
14384                [ac_cv_emxos2],
14385                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
14386                                                    [return __EMX__;])],
14387                                   [ac_cv_emxos2=yes],
14388                                   [ac_cv_emxos2=no])])
14389 @end example
14391 When using @code{AC_RUN_IFELSE} or any macro that cannot work when
14392 cross-compiling, provide a pessimistic value (typically @samp{no}).
14394 Feel free to use various tricks to prevent auxiliary tools, such as
14395 syntax-highlighting editors, from behaving improperly.  For instance,
14396 instead of:
14398 @example
14399 m4_bpatsubst([$1], [$"])
14400 @end example
14402 @noindent
14405 @example
14406 m4_bpatsubst([$1], [$""])
14407 @end example
14409 @noindent
14410 so that Emacsen do not open an endless ``string'' at the first quote.
14411 For the same reasons, avoid:
14413 @example
14414 test $[#] != 0
14415 @end example
14417 @noindent
14418 and use:
14420 @example
14421 test $[@@%:@@] != 0
14422 @end example
14424 @noindent
14425 Otherwise, the closing bracket would be hidden inside a @samp{#}-comment,
14426 breaking the bracket-matching highlighting from Emacsen.  Note the
14427 preferred style to escape from M4: @samp{$[1]}, @samp{$[@@]}, etc.  Do
14428 not escape when it is unnecessary.  Common examples of useless quotation
14429 are @samp{[$]$1} (write @samp{$$1}), @samp{[$]var} (use @samp{$var}),
14430 etc.  If you add portability issues to the picture, you'll prefer
14431 @samp{$@{1+"$[@@]"@}} to @samp{"[$]@@"}, and you'll prefer do something
14432 better than hacking Autoconf @code{:-)}.
14434 When using @command{sed}, don't use @option{-e} except for indenting
14435 purposes.  With the @code{s} and @code{y} commands, the preferred
14436 separator is @samp{/} unless @samp{/} itself might appear in the pattern
14437 or replacement, in which case you should use @samp{|}, or optionally
14438 @samp{,} if you know the pattern and replacement cannot contain a file
14439 name.  If none of these characters will do, choose a printable character
14440 that cannot appear in the pattern or replacement.  Characters from the
14441 set @samp{"#$&'()*;<=>?`|~} are good choices if the pattern or
14442 replacement might contain a file name, since they have special meaning
14443 to the shell and are less likely to occur in file names.
14445 @xref{Macro Definitions}, for details on how to define a macro.  If a
14446 macro doesn't use @code{AC_REQUIRE}, is expected to never be the object
14447 of an @code{AC_REQUIRE} directive, and macros required by other macros
14448 inside arguments do not need to be expanded before this macro, then
14449 use @code{m4_define}.  In case of doubt, use @code{AC_DEFUN}.
14450 Also take into account that public third-party macros need to use
14451 @code{AC_DEFUN} in order to be found by @command{aclocal}
14452 (@pxref{Extending aclocal,,, automake, GNU Automake}).
14453 All the @code{AC_REQUIRE} statements should be at the beginning of the
14454 macro, and each statement should be followed by @code{dnl}.
14456 You should not rely on the number of arguments: instead of checking
14457 whether an argument is missing, test that it is not empty.  It provides
14458 both a simpler and a more predictable interface to the user, and saves
14459 room for further arguments.
14461 Unless the macro is short, try to leave the closing @samp{])} at the
14462 beginning of a line, followed by a comment that repeats the name of the
14463 macro being defined.  This introduces an additional newline in
14464 @command{configure}; normally, that is not a problem, but if you want to
14465 remove it you can use @samp{[]dnl} on the last line.  You can similarly
14466 use @samp{[]dnl} after a macro call to remove its newline.  @samp{[]dnl}
14467 is recommended instead of @samp{dnl} to ensure that M4 does not
14468 interpret the @samp{dnl} as being attached to the preceding text or
14469 macro output.  For example, instead of:
14471 @example
14472 AC_DEFUN([AC_PATH_X],
14473 [AC_MSG_CHECKING([for X])
14474 AC_REQUIRE_CPP()
14475 @r{# @dots{}omitted@dots{}}
14476   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
14477 fi])
14478 @end example
14480 @noindent
14481 you would write:
14483 @example
14484 AC_DEFUN([AC_PATH_X],
14485 [AC_REQUIRE_CPP()[]dnl
14486 AC_MSG_CHECKING([for X])
14487 @r{# @dots{}omitted@dots{}}
14488   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
14489 fi[]dnl
14490 ])# AC_PATH_X
14491 @end example
14493 If the macro is long, try to split it into logical chunks.  Typically,
14494 macros that check for a bug in a function and prepare its
14495 @code{AC_LIBOBJ} replacement should have an auxiliary macro to perform
14496 this setup.  Do not hesitate to introduce auxiliary macros to factor
14497 your code.
14499 In order to highlight the recommended coding style, here is a macro
14500 written the old way:
14502 @example
14503 dnl Check for EMX on OS/2.
14504 dnl _AC_EMXOS2
14505 AC_DEFUN(_AC_EMXOS2,
14506 [AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2,
14507 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, return __EMX__;)],
14508 ac_cv_emxos2=yes, ac_cv_emxos2=no)])
14509 test "x$ac_cv_emxos2" = xyes && EMXOS2=yes])
14510 @end example
14512 @noindent
14513 and the new way:
14515 @example
14516 # _AC_EMXOS2
14517 # ----------
14518 # Check for EMX on OS/2.
14519 m4_define([_AC_EMXOS2],
14520 [AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
14521 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
14522                    [ac_cv_emxos2=yes],
14523                    [ac_cv_emxos2=no])])
14524 test "x$ac_cv_emxos2" = xyes && EMXOS2=yes[]dnl
14525 ])# _AC_EMXOS2
14526 @end example
14531 @c ============================================= Portable Shell Programming
14533 @node Portable Shell
14534 @chapter Portable Shell Programming
14535 @cindex Portable shell programming
14537 When writing your own checks, there are some shell-script programming
14538 techniques you should avoid in order to make your code portable.  The
14539 Bourne shell and upward-compatible shells like the Korn shell and Bash
14540 have evolved over the years, and many features added to the original
14541 System7 shell are now supported on all interesting porting targets.
14542 However, the following discussion between Russ Allbery and Robert Lipe
14543 is worth reading:
14545 @noindent
14546 Russ Allbery:
14548 @quotation
14549 The GNU assumption that @command{/bin/sh} is the one and only shell
14550 leads to a permanent deadlock.  Vendors don't want to break users'
14551 existing shell scripts, and there are some corner cases in the Bourne
14552 shell that are not completely compatible with a Posix shell.  Thus,
14553 vendors who have taken this route will @emph{never} (OK@dots{}``never say
14554 never'') replace the Bourne shell (as @command{/bin/sh}) with a
14555 Posix shell.
14556 @end quotation
14558 @noindent
14559 Robert Lipe:
14561 @quotation
14562 This is exactly the problem.  While most (at least most System V's) do
14563 have a Bourne shell that accepts shell functions most vendor
14564 @command{/bin/sh} programs are not the Posix shell.
14566 So while most modern systems do have a shell @emph{somewhere} that meets the
14567 Posix standard, the challenge is to find it.
14568 @end quotation
14570 For this reason, part of the job of M4sh (@pxref{Programming in M4sh})
14571 is to find such a shell.  But to prevent trouble, if you're not using
14572 M4sh you should not take advantage of features that were added after Unix
14573 version 7, circa 1977 (@pxref{Systemology}); you should not use aliases,
14574 negated character classes, or even @command{unset}.  @code{#} comments,
14575 while not in Unix version 7, were retrofitted in the original Bourne
14576 shell and can be assumed to be part of the least common denominator.
14578 On the other hand, if you're using M4sh you can assume that the shell
14579 has the features that were added in SVR2 (circa 1984), including shell
14580 functions,
14581 @command{return}, @command{unset}, and I/O redirection for builtins.  For
14582 more information, refer to @uref{http://@/www.in-ulm.de/@/~mascheck/@/bourne/}.
14583 However, some pitfalls have to be avoided for portable use of these
14584 constructs; these will be documented in the rest of this chapter.
14585 See in particular @ref{Shell Functions} and @ref{Limitations of
14586 Builtins, , Limitations of Shell Builtins}.
14588 Some ancient systems have quite
14589 small limits on the length of the @samp{#!} line; for instance, 32
14590 bytes (not including the newline) on SunOS 4.
14591 However, these ancient systems are no longer of practical concern.
14593 The set of external programs you should run in a @command{configure} script
14594 is fairly small.  @xref{Utilities in Makefiles, , Utilities in
14595 Makefiles, standards, GNU Coding Standards}, for the list.  This
14596 restriction allows users to start out with a fairly small set of
14597 programs and build the rest, avoiding too many interdependencies between
14598 packages.
14600 Some of these external utilities have a portable subset of features; see
14601 @ref{Limitations of Usual Tools}.
14603 There are other sources of documentation about shells.  The
14604 specification for the Posix
14605 @uref{http://@/www.opengroup.org/@/susv3/@/utilities/@/xcu_chap02@/.html, Shell
14606 Command Language}, though more generous than the restrictive shell
14607 subset described above, is fairly portable nowadays.  Also please see
14608 @uref{http://@/www.faqs.org/@/faqs/@/unix-faq/@/shell/, the Shell FAQs}.
14610 @menu
14611 * Shellology::                  A zoology of shells
14612 * Here-Documents::              Quirks and tricks
14613 * File Descriptors::            FDs and redirections
14614 * File System Conventions::     File names
14615 * Shell Pattern Matching::      Pattern matching
14616 * Shell Substitutions::         Variable and command expansions
14617 * Assignments::                 Varying side effects of assignments
14618 * Parentheses::                 Parentheses in shell scripts
14619 * Slashes::                     Slashes in shell scripts
14620 * Special Shell Variables::     Variables you should not change
14621 * Shell Functions::             What to look out for if you use them
14622 * Limitations of Builtins::     Portable use of not so portable /bin/sh
14623 * Limitations of Usual Tools::  Portable use of portable tools
14624 @end menu
14626 @node Shellology
14627 @section Shellology
14628 @cindex Shellology
14630 There are several families of shells, most prominently the Bourne family
14631 and the C shell family which are deeply incompatible.  If you want to
14632 write portable shell scripts, avoid members of the C shell family.  The
14633 @uref{http://@/www.faqs.org/@/faqs/@/unix-faq/@/shell/@/shell-differences/, the
14634 Shell difference FAQ} includes a small history of Posix shells, and a
14635 comparison between several of them.
14637 Below we describe some of the members of the Bourne shell family.
14639 @table @asis
14640 @item Ash
14641 @cindex Ash
14642 Ash is often used on GNU/Linux and BSD
14643 systems as a light-weight Bourne-compatible shell.  Ash 0.2 has some
14644 bugs that are fixed in the 0.3.x series, but portable shell scripts
14645 should work around them, since version 0.2 is still shipped with many
14646 GNU/Linux distributions.
14648 To be compatible with Ash 0.2:
14650 @itemize @minus
14651 @item
14652 don't use @samp{$?} after expanding empty or unset variables,
14653 or at the start of an @command{eval}:
14655 @example
14656 foo=
14657 false
14658 $foo
14659 echo "Do not use it: $?"
14660 false
14661 eval 'echo "Do not use it: $?"'
14662 @end example
14664 @item
14665 don't use command substitution within variable expansion:
14667 @example
14668 cat $@{FOO=`bar`@}
14669 @end example
14671 @item
14672 beware that single builtin substitutions are not performed by a
14673 subshell, hence their effect applies to the current shell!  @xref{Shell
14674 Substitutions}, item ``Command Substitution''.
14675 @end itemize
14677 @item Bash
14678 @cindex Bash
14679 To detect whether you are running Bash, test whether
14680 @code{BASH_VERSION} is set.  To require
14681 Posix compatibility, run @samp{set -o posix}.  @xref{Bash POSIX
14682 Mode, , Bash Posix Mode, bash, The GNU Bash Reference
14683 Manual}, for details.
14685 @item Bash 2.05 and later
14686 @cindex Bash 2.05 and later
14687 Versions 2.05 and later of Bash use a different format for the
14688 output of the @command{set} builtin, designed to make evaluating its
14689 output easier.  However, this output is not compatible with earlier
14690 versions of Bash (or with many other shells, probably).  So if
14691 you use Bash 2.05 or higher to execute @command{configure},
14692 you'll need to use Bash 2.05 for all other build tasks as well.
14694 @item Ksh
14695 @cindex Ksh
14696 @cindex Korn shell
14697 @prindex @samp{ksh}
14698 @prindex @samp{ksh88}
14699 @prindex @samp{ksh93}
14700 The Korn shell is compatible with the Bourne family and it mostly
14701 conforms to Posix.  It has two major variants commonly
14702 called @samp{ksh88} and @samp{ksh93}, named after the years of initial
14703 release.  It is usually called @command{ksh}, but is called @command{sh}
14704 on some hosts if you set your path appropriately.
14706 Solaris systems have three variants:
14707 @prindex @command{/usr/bin/ksh} on Solaris
14708 @command{/usr/bin/ksh} is @samp{ksh88}; it is
14709 standard on Solaris 2.0 and later.
14710 @prindex @command{/usr/xpg4/bin/sh} on Solaris
14711 @command{/usr/xpg4/bin/sh} is a Posix-compliant variant of
14712 @samp{ksh88}; it is standard on Solaris 9 and later.
14713 @prindex @command{/usr/dt/bin/dtksh} on Solaris
14714 @command{/usr/dt/bin/dtksh} is @samp{ksh93}.
14715 Variants that are not standard may be parts of optional
14716 packages.  There is no extra charge for these packages, but they are
14717 not part of a minimal OS install and therefore some installations may
14718 not have it.
14720 Starting with Tru64 Version 4.0, the Korn shell @command{/usr/bin/ksh}
14721 is also available as @command{/usr/bin/posix/sh}.  If the environment
14722 variable @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
14723 the standard shell conform to Posix.
14725 @item Pdksh
14726 @prindex @samp{pdksh}
14727 A public-domain clone of the Korn shell called @command{pdksh} is widely
14728 available: it has most of the @samp{ksh88} features along with a few of
14729 its own.  It usually sets @code{KSH_VERSION}, except if invoked as
14730 @command{/bin/sh} on OpenBSD, and similarly to Bash you can require
14731 Posix compatibility by running @samp{set -o posix}.  Unfortunately, with
14732 @command{pdksh} 5.2.14 (the latest stable version as of January 2007)
14733 Posix mode is buggy and causes @command{pdksh} to depart from Posix in
14734 at least one respect, see @ref{Shell Substitutions}.
14736 @item Zsh
14737 @cindex Zsh
14738 To detect whether you are running @command{zsh}, test whether
14739 @code{ZSH_VERSION} is set.  By default @command{zsh} is @emph{not}
14740 compatible with the Bourne shell: you must execute @samp{emulate sh},
14741 and for @command{zsh} versions before 3.1.6-dev-18 you must also
14742 set @code{NULLCMD} to @samp{:}.  @xref{Compatibility, , Compatibility,
14743 zsh, The Z Shell Manual}, for details.
14745 The default Mac OS X @command{sh} was originally Zsh; it was changed to
14746 Bash in Mac OS X 10.2.
14747 @end table
14749 @node Here-Documents
14750 @section Here-Documents
14751 @cindex Here-documents
14752 @cindex Shell here-documents
14754 Don't rely on @samp{\} being preserved just because it has no special
14755 meaning together with the next symbol.  In the native @command{sh}
14756 on OpenBSD 2.7 @samp{\"} expands to @samp{"} in here-documents with
14757 unquoted delimiter.  As a general rule, if @samp{\\} expands to @samp{\}
14758 use @samp{\\} to get @samp{\}.
14760 With OpenBSD 2.7's @command{sh}
14762 @example
14763 @group
14764 $ @kbd{cat <<EOF
14765 > \" \\
14766 > EOF}
14767 " \
14768 @end group
14769 @end example
14771 @noindent
14772 and with Bash:
14774 @example
14775 @group
14776 bash-2.04$ @kbd{cat <<EOF
14777 > \" \\
14778 > EOF}
14779 \" \
14780 @end group
14781 @end example
14783 Some shells mishandle large here-documents: for example,
14784 Solaris 10 @command{dtksh} and the UnixWare 7.1.1 Posix shell, which are
14785 derived from Korn shell version M-12/28/93d, mishandle braced variable
14786 expansion that crosses a 1024- or 4096-byte buffer boundary
14787 within a here-document.  Only the part of the variable name after the boundary
14788 is used.  For example, @code{$@{variable@}} could be replaced by the expansion
14789 of @code{$@{ble@}}.  If the end of the variable name is aligned with the block
14790 boundary, the shell reports an error, as if you used @code{$@{@}}.
14791 Instead of @code{$@{variable-default@}}, the shell may expand
14792 @code{$@{riable-default@}}, or even @code{$@{fault@}}.  This bug can often
14793 be worked around by omitting the braces: @code{$variable}.  The bug was
14794 fixed in
14795 @samp{ksh93g} (1998-04-30) but as of 2006 many operating systems were
14796 still shipping older versions with the bug.
14798 Many shells (including the Bourne shell) implement here-documents
14799 inefficiently.  In particular, some shells can be extremely inefficient when
14800 a single statement contains many here-documents.  For instance if your
14801 @file{configure.ac} includes something like:
14803 @example
14804 @group
14805 if <cross_compiling>; then
14806   assume this and that
14807 else
14808   check this
14809   check that
14810   check something else
14811   @dots{}
14812   on and on forever
14813   @dots{}
14815 @end group
14816 @end example
14818 A shell parses the whole @code{if}/@code{fi} construct, creating
14819 temporary files for each here-document in it.  Some shells create links
14820 for such here-documents on every @code{fork}, so that the clean-up code
14821 they had installed correctly removes them.  It is creating the links
14822 that can take the shell forever.
14824 Moving the tests out of the @code{if}/@code{fi}, or creating multiple
14825 @code{if}/@code{fi} constructs, would improve the performance
14826 significantly.  Anyway, this kind of construct is not exactly the
14827 typical use of Autoconf.  In fact, it's even not recommended, because M4
14828 macros can't look into shell conditionals, so we may fail to expand a
14829 macro when it was expanded before in a conditional path, and the
14830 condition turned out to be false at runtime, and we end up not
14831 executing the macro at all.
14833 Be careful with the use of @samp{<<-} to unindent here-documents.  The
14834 behavior is only portable for stripping leading @key{TAB}s, and things
14835 can silently break if an overzealous editor converts to using leading
14836 spaces (not all shells are nice enough to warn about unterminated
14837 here-documents).
14839 @example
14840 $ @kbd{printf 'cat <<-x\n\t1\n\t 2\n\tx\n' | bash && echo done}
14843 done
14844 $ @kbd{printf 'cat <<-x\n 1\n  2\n x\n' | bash-3.2 && echo done}
14846   2
14848 done
14849 @end example
14851 @node File Descriptors
14852 @section File Descriptors
14853 @cindex Descriptors
14854 @cindex File descriptors
14855 @cindex Shell file descriptors
14857 Most shells, if not all (including Bash, Zsh, Ash), output traces on
14858 stderr, even for subshells.  This might result in undesirable content
14859 if you meant to capture the standard-error output of the inner command:
14861 @example
14862 $ @kbd{ash -x -c '(eval "echo foo >&2") 2>stderr'}
14863 $ @kbd{cat stderr}
14864 + eval echo foo >&2
14865 + echo foo
14867 $ @kbd{bash -x -c '(eval "echo foo >&2") 2>stderr'}
14868 $ @kbd{cat stderr}
14869 + eval 'echo foo >&2'
14870 ++ echo foo
14872 $ @kbd{zsh -x -c '(eval "echo foo >&2") 2>stderr'}
14873 @i{# Traces on startup files deleted here.}
14874 $ @kbd{cat stderr}
14875 +zsh:1> eval echo foo >&2
14876 +zsh:1> echo foo
14878 @end example
14880 @noindent
14881 One workaround is to grep out uninteresting lines, hoping not to remove
14882 good ones.
14884 If you intend to redirect both standard error and standard output,
14885 redirect standard output first.  This works better with HP-UX,
14886 since its shell mishandles tracing if standard error is redirected
14887 first:
14889 @example
14890 $ @kbd{sh -x -c ': 2>err >out'}
14891 + :
14892 + 2> err $ @kbd{cat err}
14893 1> out
14894 @end example
14896 Don't try to redirect the standard error of a command substitution.  It
14897 must be done @emph{inside} the command substitution.  When running
14898 @samp{: `cd /zorglub` 2>/dev/null} expect the error message to
14899 escape, while @samp{: `cd /zorglub 2>/dev/null`} works properly.
14901 On the other hand, some shells, such as Solaris or FreeBSD
14902 @command{/bin/sh}, warn about missing programs before performing
14903 redirections.  Therefore, to silently check whether a program exists, it
14904 is necessary to perform redirections on a subshell:
14906 @example
14907 $ @kbd{/bin/sh -c 'nosuch 2>/dev/null'}
14908 nosuch: not found
14909 $ @kbd{/bin/sh -c '(nosuch) 2>/dev/null'}
14910 $ @kbd{bash -c 'nosuch 2>/dev/null'}
14911 @end example
14913 FreeBSD 6.2 sh may mix the trace output lines from the statements in a
14914 shell pipeline.
14916 It is worth noting that Zsh (but not Ash nor Bash) makes it possible
14917 in assignments though: @samp{foo=`cd /zorglub` 2>/dev/null}.
14919 Some shells, like @command{ash}, don't recognize bi-directional
14920 redirection (@samp{<>}).  And even on shells that recognize it, it is
14921 not portable to use on fifos: Posix does not require read-write support
14922 for named pipes, and Cygwin does not support it:
14924 @example
14925 $ @kbd{mkfifo fifo}
14926 $ @kbd{exec 5<>fifo}
14927 $ @kbd{echo hi >&5}
14928 bash: echo: write error: Communication error on send
14929 @end example
14931 When catering to old systems, don't redirect the same file descriptor
14932 several times, as you are doomed to failure under Ultrix.
14934 @example
14935 ULTRIX V4.4 (Rev. 69) System #31: Thu Aug 10 19:42:23 GMT 1995
14936 UWS V4.4 (Rev. 11)
14937 $ @kbd{eval 'echo matter >fullness' >void}
14938 illegal io
14939 $ @kbd{eval '(echo matter >fullness)' >void}
14940 illegal io
14941 $ @kbd{(eval '(echo matter >fullness)') >void}
14942 Ambiguous output redirect.
14943 @end example
14945 @noindent
14946 In each case the expected result is of course @file{fullness} containing
14947 @samp{matter} and @file{void} being empty.  However, this bug is
14948 probably not of practical concern to modern platforms.
14950 Solaris 10 @command{sh} will try to optimize away a @command{:} command
14951 in a loop after the first iteration, even if it is redirected:
14953 @example
14954 $ @kbd{for i in 1 2 3 ; do : >x$i; done}
14955 $ @kbd{ls}
14957 @end example
14959 @noindent
14960 As a workaround, @command{echo} or @command{eval} can be used.
14962 Don't rely on file descriptors 0, 1, and 2 remaining closed in a
14963 subsidiary program.  If any of these descriptors is closed, the
14964 operating system may open an unspecified file for the descriptor in the
14965 new process image.  Posix says this may be done only if the subsidiary
14966 program is set-user-ID or set-group-ID, but HP-UX 11.23 does
14967 it even for ordinary programs.
14969 Don't rely on open file descriptors being open in child processes.  In
14970 @command{ksh}, file descriptors above 2 which are opened using
14971 @samp{exec @var{n}>file} are closed by a subsequent @samp{exec} (such as
14972 that involved in the fork-and-exec which runs a program or script).
14973 Thus, using @command{sh}, we have:
14975 @example
14976 $ @kbd{cat ./descrips}
14977 #!/bin/sh -
14978 echo hello >&5
14979 $ @kbd{exec 5>t}
14980 $ @kbd{./descrips}
14981 $ @kbd{cat t}
14982 hello
14984 @end example
14986 @noindent
14987 But using ksh:
14989 @example
14990 $ @kbd{exec 5>t}
14991 $ @kbd{./descrips}
14992 hello
14993 $ @kbd{cat t}
14995 @end example
14997 @noindent
14998 Within the process which runs the @samp{descrips} script, file
14999 descriptor 5 is closed.
15001 Don't rely on redirection to a closed file descriptor to cause an
15002 error.  With Solaris @command{/bin/sh}, when the redirection fails, the
15003 output goes to the original file descriptor.
15005 @example
15006 $ @kbd{bash -c 'echo hi >&3' 3>&-; echo $?}
15007 bash: 3: Bad file descriptor
15009 $ @kbd{/bin/sh -c 'echo hi >&3' 3>&-; echo $?}
15012 @end example
15014 DOS variants cannot rename or remove open files, such as in
15015 @samp{mv foo bar >foo} or @samp{rm foo >foo}, even though this is
15016 perfectly portable among Posix hosts.
15018 A few ancient systems reserved some file descriptors.  By convention,
15019 file descriptor 3 was opened to @file{/dev/tty} when you logged into
15020 Eighth Edition (1985) through Tenth Edition Unix (1989).  File
15021 descriptor 4 had a special use on the Stardent/Kubota Titan (circa
15022 1990), though we don't now remember what it was.  Both these systems are
15023 obsolete, so it's now safe to treat file descriptors 3 and 4 like any
15024 other file descriptors.
15026 @node File System Conventions
15027 @section File System Conventions
15028 @cindex File system conventions
15030 Autoconf uses shell-script processing extensively, so the file names
15031 that it processes should not contain characters that are special to the
15032 shell.  Special characters include space, tab, newline, NUL, and
15033 the following:
15035 @example
15036 " # $ & ' ( ) * ; < = > ? [ \ ` |
15037 @end example
15039 Also, file names should not begin with @samp{~} or @samp{-}, and should
15040 contain neither @samp{-} immediately after @samp{/} nor @samp{~}
15041 immediately after @samp{:}.  On Posix-like platforms, directory names
15042 should not contain @samp{:}, as this runs afoul of @samp{:} used as the
15043 path separator.
15045 These restrictions apply not only to the files that you distribute, but
15046 also to the absolute file names of your source, build, and destination
15047 directories.
15049 On some Posix-like platforms, @samp{!} and @samp{^} are special too, so
15050 they should be avoided.
15052 Posix lets implementations treat leading @file{//} specially, but
15053 requires leading @file{///} and beyond to be equivalent to @file{/}.
15054 Most Unix variants treat @file{//} like @file{/}.  However, some treat
15055 @file{//} as a ``super-root'' that can provide access to files that are
15056 not otherwise reachable from @file{/}.  The super-root tradition began
15057 with Apollo Domain/OS, which died out long ago, but unfortunately Cygwin
15058 has revived it.
15060 While @command{autoconf} and friends are usually run on some Posix
15061 variety, they can be used on other systems, most notably DOS
15062 variants.  This impacts several assumptions regarding file names.
15064 @noindent
15065 For example, the following code:
15067 @example
15068 case $foo_dir in
15069   /*) # Absolute
15070      ;;
15071   *)
15072      foo_dir=$dots$foo_dir ;;
15073 esac
15074 @end example
15076 @noindent
15077 fails to properly detect absolute file names on those systems, because
15078 they can use a drivespec, and usually use a backslash as directory
15079 separator.  If you want to be portable to DOS variants (at the
15080 price of rejecting valid but oddball Posix file names like @file{a:\b}),
15081 you can check for absolute file names like this:
15083 @cindex absolute file names, detect
15084 @example
15085 case $foo_dir in
15086   [\\/]* | ?:[\\/]* ) # Absolute
15087      ;;
15088   *)
15089      foo_dir=$dots$foo_dir ;;
15090 esac
15091 @end example
15093 @noindent
15094 Make sure you quote the brackets if appropriate and keep the backslash as
15095 first character (@pxref{case, , Limitations of Shell Builtins}).
15097 Also, because the colon is used as part of a drivespec, these systems don't
15098 use it as path separator.  When creating or accessing paths, you can use the
15099 @code{PATH_SEPARATOR} output variable instead.  @command{configure} sets this
15100 to the appropriate value for the build system (@samp{:} or @samp{;}) when it
15101 starts up.
15103 File names need extra care as well.  While DOS variants
15104 that are Posixy enough to run @command{autoconf} (such as DJGPP)
15105 are usually able to handle long file names properly, there are still
15106 limitations that can seriously break packages.  Several of these issues
15107 can be easily detected by the
15108 @uref{ftp://@/ftp.gnu.org/@/gnu/@/non-gnu/@/doschk/@/doschk-1.1.tar.gz, doschk}
15109 package.
15111 A short overview follows; problems are marked with SFN/LFN to
15112 indicate where they apply: SFN means the issues are only relevant to
15113 plain DOS, not to DOS under Microsoft Windows
15114 variants, while LFN identifies problems that exist even under
15115 Microsoft Windows variants.
15117 @table @asis
15118 @item No multiple dots (SFN)
15119 DOS cannot handle multiple dots in file names.  This is an especially
15120 important thing to remember when building a portable configure script,
15121 as @command{autoconf} uses a .in suffix for template files.
15123 This is perfectly OK on Posix variants:
15125 @example
15126 AC_CONFIG_HEADERS([config.h])
15127 AC_CONFIG_FILES([source.c foo.bar])
15128 AC_OUTPUT
15129 @end example
15131 @noindent
15132 but it causes problems on DOS, as it requires @samp{config.h.in},
15133 @samp{source.c.in} and @samp{foo.bar.in}.  To make your package more portable
15134 to DOS-based environments, you should use this instead:
15136 @example
15137 AC_CONFIG_HEADERS([config.h:config.hin])
15138 AC_CONFIG_FILES([source.c:source.cin foo.bar:foobar.in])
15139 AC_OUTPUT
15140 @end example
15142 @item No leading dot (SFN)
15143 DOS cannot handle file names that start with a dot.  This is usually
15144 not important for @command{autoconf}.
15146 @item Case insensitivity (LFN)
15147 DOS is case insensitive, so you cannot, for example, have both a
15148 file called @samp{INSTALL} and a directory called @samp{install}.  This
15149 also affects @command{make}; if there's a file called @samp{INSTALL} in
15150 the directory, @samp{make install} does nothing (unless the
15151 @samp{install} target is marked as PHONY).
15153 @item The 8+3 limit (SFN)
15154 Because the DOS file system only stores the first 8 characters of
15155 the file name and the first 3 of the extension, those must be unique.
15156 That means that @file{foobar-part1.c}, @file{foobar-part2.c} and
15157 @file{foobar-prettybird.c} all resolve to the same file name
15158 (@file{FOOBAR-P.C}).  The same goes for @file{foo.bar} and
15159 @file{foo.bartender}.
15161 The 8+3 limit is not usually a problem under Microsoft Windows, as it
15162 uses numeric
15163 tails in the short version of file names to make them unique.  However, a
15164 registry setting can turn this behavior off.  While this makes it
15165 possible to share file trees containing long file names between SFN
15166 and LFN environments, it also means the above problem applies there
15167 as well.
15169 @item Invalid characters (LFN)
15170 Some characters are invalid in DOS file names, and should therefore
15171 be avoided.  In a LFN environment, these are @samp{/}, @samp{\},
15172 @samp{?}, @samp{*}, @samp{:}, @samp{<}, @samp{>}, @samp{|} and @samp{"}.
15173 In a SFN environment, other characters are also invalid.  These
15174 include @samp{+}, @samp{,}, @samp{[} and @samp{]}.
15176 @item Invalid names (LFN)
15177 Some DOS file names are reserved, and cause problems if you
15178 try to use files with those names.  These names include @file{CON},
15179 @file{AUX}, @file{COM1}, @file{COM2}, @file{COM3}, @file{COM4},
15180 @file{LPT1}, @file{LPT2}, @file{LPT3}, @file{NUL}, and @file{PRN}.
15181 File names are case insensitive, so even names like
15182 @file{aux/config.guess} are disallowed.
15184 @end table
15186 @node Shell Pattern Matching
15187 @section Shell Pattern Matching
15188 @cindex Shell pattern matching
15190 Nowadays portable patterns can use negated character classes like
15191 @samp{[!-aeiou]}.  The older syntax @samp{[^-aeiou]} is supported by
15192 some shells but not others; hence portable scripts should never use
15193 @samp{^} as the first character of a bracket pattern.
15195 Outside the C locale, patterns like @samp{[a-z]} are problematic since
15196 they may match characters that are not lower-case letters.
15198 @node Shell Substitutions
15199 @section Shell Substitutions
15200 @cindex Shell substitutions
15202 Contrary to a persistent urban legend, the Bourne shell does not
15203 systematically split variables and back-quoted expressions, in particular
15204 on the right-hand side of assignments and in the argument of @code{case}.
15205 For instance, the following code:
15207 @example
15208 case "$given_srcdir" in
15209 .)  top_srcdir="`echo "$dots" | sed 's|/$||'`" ;;
15210 *)  top_srcdir="$dots$given_srcdir" ;;
15211 esac
15212 @end example
15214 @noindent
15215 is more readable when written as:
15217 @example
15218 case $given_srcdir in
15219 .)  top_srcdir=`echo "$dots" | sed 's|/$||'` ;;
15220 *)  top_srcdir=$dots$given_srcdir ;;
15221 esac
15222 @end example
15224 @noindent
15225 and in fact it is even @emph{more} portable: in the first case of the
15226 first attempt, the computation of @code{top_srcdir} is not portable,
15227 since not all shells properly understand @code{"`@dots{}"@dots{}"@dots{}`"},
15228 for example Solaris 10 ksh:
15230 @example
15231 $ @kbd{foo="`echo " bar" | sed 's, ,,'`"}
15232 ksh: : cannot execute
15233 ksh: bar | sed 's, ,,': cannot execute
15234 @end example
15236 @noindent
15237 Posix does not specify behavior for this sequence.  On the other hand,
15238 behavior for @code{"`@dots{}\"@dots{}\"@dots{}`"} is specified by Posix,
15239 but in practice, not all shells understand it the same way: pdksh 5.2.14
15240 prints spurious quotes when in Posix mode:
15242 @example
15243 $ @kbd{echo "`echo \"hello\"`"}
15244 hello
15245 $ @kbd{set -o posix}
15246 $ @kbd{echo "`echo \"hello\"`"}
15247 "hello"
15248 @end example
15250 @noindent
15251 There is just no portable way to use double-quoted strings inside
15252 double-quoted back-quoted expressions (pfew!).
15254 @table @code
15255 @item $@@
15256 @cindex @samp{"$@@"}
15257 One of the most famous shell-portability issues is related to
15258 @samp{"$@@"}.  When there are no positional arguments, Posix says
15259 that @samp{"$@@"} is supposed to be equivalent to nothing, but the
15260 original Unix version 7 Bourne shell treated it as equivalent to
15261 @samp{""} instead, and this behavior survives in later implementations
15262 like Digital Unix 5.0.
15264 The traditional way to work around this portability problem is to use
15265 @samp{$@{1+"$@@"@}}.  Unfortunately this method does not work with
15266 Zsh (3.x and 4.x), which is used on Mac OS X@.  When emulating
15267 the Bourne shell, Zsh performs word splitting on @samp{$@{1+"$@@"@}}:
15269 @example
15270 zsh $ @kbd{emulate sh}
15271 zsh $ @kbd{for i in "$@@"; do echo $i; done}
15272 Hello World
15274 zsh $ @kbd{for i in $@{1+"$@@"@}; do echo $i; done}
15275 Hello
15276 World
15278 @end example
15280 @noindent
15281 Zsh handles plain @samp{"$@@"} properly, but we can't use plain
15282 @samp{"$@@"} because of the portability problems mentioned above.
15283 One workaround relies on Zsh's ``global aliases'' to convert
15284 @samp{$@{1+"$@@"@}} into @samp{"$@@"} by itself:
15286 @example
15287 test "$@{ZSH_VERSION+set@}" = set && alias -g '$@{1+"$@@"@}'='"$@@"'
15288 @end example
15290 Zsh only recognizes this alias when a shell word matches it exactly;
15291 @samp{"foo"$@{1+"$@@"@}} remains subject to word splitting.  Since this
15292 case always yields at least one shell word, use plain @samp{"$@@"}.
15294 A more conservative workaround is to avoid @samp{"$@@"} if it is
15295 possible that there may be no positional arguments.  For example,
15296 instead of:
15298 @example
15299 cat conftest.c "$@@"
15300 @end example
15302 you can use this instead:
15304 @example
15305 case $# in
15306 0) cat conftest.c;;
15307 *) cat conftest.c "$@@";;
15308 esac
15309 @end example
15311 Autoconf macros often use the @command{set} command to update
15312 @samp{$@@}, so if you are writing shell code intended for
15313 @command{configure} you should not assume that the value of @samp{$@@}
15314 persists for any length of time.
15317 @item $@{10@}
15318 @cindex positional parameters
15319 The 10th, 11th, @dots{} positional parameters can be accessed only after
15320 a @code{shift}.  The 7th Edition shell reported an error if given
15321 @code{$@{10@}}, and
15322 Solaris 10 @command{/bin/sh} still acts that way:
15324 @example
15325 $ @kbd{set 1 2 3 4 5 6 7 8 9 10}
15326 $ @kbd{echo $@{10@}}
15327 bad substitution
15328 @end example
15330 @item $@{@var{var}:-@var{value}@}
15331 @c Info cannot handle `:' in index entries.
15332 @ifnotinfo
15333 @cindex $@{@var{var}:-@var{value}@}
15334 @end ifnotinfo
15335 Old BSD shells, including the Ultrix @code{sh}, don't accept the
15336 colon for any shell substitution, and complain and die.
15337 Similarly for $@{@var{var}:=@var{value}@}, $@{@var{var}:?@var{value}@}, etc.
15339 @item $@{@var{var}=@var{literal}@}
15340 @cindex $@{@var{var}=@var{literal}@}
15341 Be sure to quote:
15343 @example
15344 : $@{var='Some words'@}
15345 @end example
15347 @noindent
15348 otherwise some shells, such as on Digital Unix V 5.0, die because
15349 of a ``bad substitution''.
15351 @sp 1
15353 Solaris @command{/bin/sh} has a frightening bug in its interpretation
15354 of this.  Imagine you need set a variable to a string containing
15355 @samp{@}}.  This @samp{@}} character confuses Solaris @command{/bin/sh}
15356 when the affected variable was already set.  This bug can be exercised
15357 by running:
15359 @example
15360 $ @kbd{unset foo}
15361 $ @kbd{foo=$@{foo='@}'@}}
15362 $ @kbd{echo $foo}
15364 $ @kbd{foo=$@{foo='@}'   # no error; this hints to what the bug is}
15365 $ @kbd{echo $foo}
15367 $ @kbd{foo=$@{foo='@}'@}}
15368 $ @kbd{echo $foo}
15369 @}@}
15370  ^ ugh!
15371 @end example
15373 It seems that @samp{@}} is interpreted as matching @samp{$@{}, even
15374 though it is enclosed in single quotes.  The problem doesn't happen
15375 using double quotes.
15377 @item $@{@var{var}=@var{expanded-value}@}
15378 @cindex $@{@var{var}=@var{expanded-value}@}
15379 On Ultrix,
15380 running
15382 @example
15383 default="yu,yaa"
15384 : $@{var="$default"@}
15385 @end example
15387 @noindent
15388 sets @var{var} to @samp{M-yM-uM-,M-yM-aM-a}, i.e., the 8th bit of
15389 each char is set.  You don't observe the phenomenon using a simple
15390 @samp{echo $var} since apparently the shell resets the 8th bit when it
15391 expands $var.  Here are two means to make this shell confess its sins:
15393 @example
15394 $ @kbd{cat -v <<EOF
15395 $var
15396 EOF}
15397 @end example
15399 @noindent
15402 @example
15403 $ @kbd{set | grep '^var=' | cat -v}
15404 @end example
15406 One classic incarnation of this bug is:
15408 @example
15409 default="a b c"
15410 : $@{list="$default"@}
15411 for c in $list; do
15412   echo $c
15413 done
15414 @end example
15416 @noindent
15417 You'll get @samp{a b c} on a single line.  Why?  Because there are no
15418 spaces in @samp{$list}: there are @samp{M- }, i.e., spaces with the 8th
15419 bit set, hence no IFS splitting is performed!!!
15421 One piece of good news is that Ultrix works fine with @samp{:
15422 $@{list=$default@}}; i.e., if you @emph{don't} quote.  The bad news is
15423 then that QNX 4.25 then sets @var{list} to the @emph{last} item of
15424 @var{default}!
15426 The portable way out consists in using a double assignment, to switch
15427 the 8th bit twice on Ultrix:
15429 @example
15430 list=$@{list="$default"@}
15431 @end example
15433 @noindent
15434 @dots{}but beware of the @samp{@}} bug from Solaris (see above).  For safety,
15435 use:
15437 @example
15438 test "$@{var+set@}" = set || var=@var{@{value@}}
15439 @end example
15441 @item $@{#@var{var}@}
15442 @itemx $@{@var{var}%@var{word}@}
15443 @itemx $@{@var{var}%%@var{word}@}
15444 @itemx $@{@var{var}#@var{word}@}
15445 @itemx $@{@var{var}##@var{word}@}
15446 @cindex $@{#@var{var}@}
15447 @cindex $@{@var{var}%@var{word}@}
15448 @cindex $@{@var{var}%%@var{word}@}
15449 @cindex $@{@var{var}#@var{word}@}
15450 @cindex $@{@var{var}##@var{word}@}
15451 Posix requires support for these usages, but they do not work with many
15452 traditional shells, e.g., Solaris 10 @command{/bin/sh}.
15454 Also, @command{pdksh} 5.2.14 mishandles some @var{word} forms.  For
15455 example if @samp{$1} is @samp{a/b} and @samp{$2} is @samp{a}, then
15456 @samp{$@{1#$2@}} should yield @samp{/b}, but with @command{pdksh} it
15457 yields the empty string.
15460 @item `@var{commands}`
15461 @cindex `@var{commands}`
15462 @cindex Command Substitution
15463 Posix requires shells to trim all trailing newlines from command
15464 output before substituting it, so assignments like
15465 @samp{dir=`echo "$file" | tr a A`} do not work as expected if
15466 @samp{$file} ends in a newline.
15468 While in general it makes no sense, do not substitute a single builtin
15469 with side effects, because Ash 0.2, trying to optimize, does not fork a
15470 subshell to perform the command.
15472 For instance, if you wanted to check that @command{cd} is silent, do not
15473 use @samp{test -z "`cd /`"} because the following can happen:
15475 @example
15476 $ @kbd{pwd}
15477 /tmp
15478 $ @kbd{test -z "`cd /`" && pwd}
15480 @end example
15482 @noindent
15483 The result of @samp{foo=`exit 1`} is left as an exercise to the reader.
15485 The MSYS shell leaves a stray byte in the expansion of a double-quoted
15486 command substitution of a native program, if the end of the substitution
15487 is not aligned with the end of the double quote.  This may be worked
15488 around by inserting another pair of quotes:
15490 @example
15491 $ @kbd{echo "`printf 'foo\r\n'` bar" > broken}
15492 $ @kbd{echo "`printf 'foo\r\n'`"" bar" | cmp - broken}
15493 - broken differ: char 4, line 1
15494 @end example
15496 Upon interrupt or SIGTERM, some shells may abort a command substitution,
15497 replace it with a null string, and wrongly evaluate the enclosing
15498 command before entering the trap or ending the script.  This can lead to
15499 spurious errors:
15501 @example
15502 $ @kbd{sh -c 'if test `sleep 5; echo hi` = hi; then echo yes; fi'}
15503 $ @kbd{^C}
15504 sh: test: hi: unexpected operator/operand
15505 @end example
15507 @noindent
15508 You can avoid this by assigning the command substitution to a temporary
15509 variable:
15511 @example
15512 $ @kbd{sh -c 'res=`sleep 5; echo hi`
15513          if test "x$res" = xhi; then echo yes; fi'}
15514 $ @kbd{^C}
15515 @end example
15517 @item $(@var{commands})
15518 @cindex $(@var{commands})
15519 This construct is meant to replace @samp{`@var{commands}`},
15520 and it has most of the problems listed under @code{`@var{commands}`}.
15522 This construct can be
15523 nested while this is impossible to do portably with back quotes.
15524 Unfortunately it is not yet universally supported.  Most notably, even recent
15525 releases of Solaris don't support it:
15527 @example
15528 $ @kbd{showrev -c /bin/sh | grep version}
15529 Command version: SunOS 5.10 Generic 121005-03 Oct 2006
15530 $ @kbd{echo $(echo blah)}
15531 syntax error: `(' unexpected
15532 @end example
15534 @noindent
15535 nor does IRIX 6.5's Bourne shell:
15536 @example
15537 $ @kbd{uname -a}
15538 IRIX firebird-image 6.5 07151432 IP22
15539 $ @kbd{echo $(echo blah)}
15540 $(echo blah)
15541 @end example
15543 If you do use @samp{$(@var{commands})}, make sure that the commands
15544 do not start with a parenthesis, as that would cause confusion with
15545 a different notation @samp{$((@var{expression}))} that in modern
15546 shells is an arithmetic expression not a command.  To avoid the
15547 confusion, insert a space between the two opening parentheses.
15549 Avoid @var{commands} that contain unbalanced parentheses in
15550 here-documents, comments, or case statement patterns, as many shells
15551 mishandle them.  For example, Bash 3.1, @samp{ksh88}, @command{pdksh}
15552 5.2.14, and Zsh 4.2.6 all mishandle the following valid command:
15554 @example
15555 echo $(case x in x) echo hello;; esac)
15556 @end example
15559 @item $((@var{expression}))
15560 @cindex $((@var{expression}))
15561 Arithmetic expansion is not portable as some shells (most
15562 notably Solaris 10 @command{/bin/sh}) don't support it.
15564 Among shells that do support @samp{$(( ))}, not all of them obey the
15565 Posix rule that octal and hexadecimal constants must be recognized:
15567 @example
15568 $ @kbd{bash -c 'echo $(( 010 + 0x10 ))'}
15570 $ @kbd{zsh -c 'echo $(( 010 + 0x10 ))'}
15572 $ @kbd{zsh -c 'emulate sh; echo $(( 010 + 0x10 ))'}
15574 $ @kbd{pdksh -c 'echo $(( 010 + 0x10 ))'}
15575 pdksh:  010 + 0x10 : bad number `0x10'
15576 $ @kbd{pdksh -c 'echo $(( 010 ))'}
15578 @end example
15580 When it is available, using arithmetic expansion provides a noticeable
15581 speedup in script execution; but testing for support requires
15582 @command{eval} to avoid syntax errors.  The following construct is used
15583 by @code{AS_VAR_ARITH} to provide arithmetic computation when all
15584 arguments are provided in decimal and without a leading zero, and all
15585 operators are properly quoted and appear as distinct arguments:
15587 @example
15588 if ( eval 'test $(( 1 + 1 )) = 2' ) 2>/dev/null; then
15589   eval 'func_arith ()
15590   @{
15591     func_arith_result=$(( $* ))
15592   @}'
15593 else
15594   func_arith ()
15595   @{
15596     func_arith_result=`expr "$@@"`
15597   @}
15599 func_arith 1 + 1
15600 foo=$func_arith_result
15601 @end example
15604 @item ^
15605 @cindex ^ quoting
15606 Always quote @samp{^}, otherwise traditional shells such as
15607 @command{/bin/sh} on Solaris 10 treat this like @samp{|}.
15609 @end table
15612 @node Assignments
15613 @section Assignments
15614 @cindex Shell assignments
15616 When setting several variables in a row, be aware that the order of the
15617 evaluation is undefined.  For instance @samp{foo=1 foo=2; echo $foo}
15618 gives @samp{1} with Solaris @command{/bin/sh}, but @samp{2} with Bash.
15619 You must use
15620 @samp{;} to enforce the order: @samp{foo=1; foo=2; echo $foo}.
15622 Don't rely on the following to find @file{subdir/program}:
15624 @example
15625 PATH=subdir$PATH_SEPARATOR$PATH program
15626 @end example
15628 @noindent
15629 as this does not work with Zsh 3.0.6.  Use something like this
15630 instead:
15632 @example
15633 (PATH=subdir$PATH_SEPARATOR$PATH; export PATH; exec program)
15634 @end example
15636 Don't rely on the exit status of an assignment: Ash 0.2 does not change
15637 the status and propagates that of the last statement:
15639 @example
15640 $ @kbd{false || foo=bar; echo $?}
15642 $ @kbd{false || foo=`:`; echo $?}
15644 @end example
15646 @noindent
15647 and to make things even worse, QNX 4.25 just sets the exit status
15648 to 0 in any case:
15650 @example
15651 $ @kbd{foo=`exit 1`; echo $?}
15653 @end example
15655 To assign default values, follow this algorithm:
15657 @enumerate
15658 @item
15659 If the default value is a literal and does not contain any closing
15660 brace, use:
15662 @example
15663 : $@{var='my literal'@}
15664 @end example
15666 @item
15667 If the default value contains no closing brace, has to be expanded, and
15668 the variable being initialized is not intended to be IFS-split
15669 (i.e., it's not a list), then use:
15671 @example
15672 : $@{var="$default"@}
15673 @end example
15675 @item
15676 If the default value contains no closing brace, has to be expanded, and
15677 the variable being initialized is intended to be IFS-split (i.e., it's a list),
15678 then use:
15680 @example
15681 var=$@{var="$default"@}
15682 @end example
15684 @item
15685 If the default value contains a closing brace, then use:
15687 @example
15688 test "$@{var+set@}" = set || var="has a '@}'"
15689 @end example
15690 @end enumerate
15692 In most cases @samp{var=$@{var="$default"@}} is fine, but in case of
15693 doubt, just use the last form.  @xref{Shell Substitutions}, items
15694 @samp{$@{@var{var}:-@var{value}@}} and @samp{$@{@var{var}=@var{value}@}}
15695 for the rationale.
15697 @node Parentheses
15698 @section Parentheses in Shell Scripts
15699 @cindex Shell parentheses
15701 Beware of two opening parentheses in a row, as many shell
15702 implementations treat them specially.  Posix requires that the command
15703 @samp{((cat))} must behave like @samp{(cat)}, but many shells, including
15704 Bash and the Korn shell, treat @samp{((cat))} as an arithmetic
15705 expression equivalent to @samp{let "cat"}, and may or may not report an
15706 error when they detect that @samp{cat} is not a number.  As another
15707 example, @samp{pdksh} 5.2.14 misparses the following code:
15709 @example
15710 if ((true) || false); then
15711   echo ok
15713 @end example
15715 @noindent
15716 To work around this problem, insert a space between the two opening
15717 parentheses.  There is a similar problem and workaround with
15718 @samp{$((}; see @ref{Shell Substitutions}.
15720 @node Slashes
15721 @section Slashes in Shell Scripts
15722 @cindex Shell slashes
15724 Unpatched Tru64 5.1 @command{sh} omits the last slash of command-line
15725 arguments that contain two trailing slashes:
15727 @example
15728 $ @kbd{echo / // /// //// .// //.}
15729 / / // /// ./ //.
15730 $ @kbd{x=//}
15731 $ @kbd{eval "echo \$x"}
15733 $ @kbd{set -x}
15734 $ @kbd{echo abc | tr -t ab //}
15735 + echo abc
15736 + tr -t ab /
15738 @end example
15740 Unpatched Tru64 4.0 @command{sh} adds a slash after @samp{"$var"} if the
15741 variable is empty and the second double-quote is followed by a word that
15742 begins and ends with slash:
15744 @example
15745 $ @kbd{sh -xc 'p=; echo "$p"/ouch/'}
15747 + echo //ouch/
15748 //ouch/
15749 @end example
15751 However, our understanding is that patches are available, so perhaps
15752 it's not worth worrying about working around these horrendous bugs.
15754 @node Special Shell Variables
15755 @section Special Shell Variables
15756 @cindex Shell variables
15757 @cindex Special shell variables
15759 Some shell variables should not be used, since they can have a deep
15760 influence on the behavior of the shell.  In order to recover a sane
15761 behavior from the shell, some variables should be unset; M4sh takes
15762 care of this and provides fallback values, whenever needed, to cater
15763 for a very old @file{/bin/sh} that does not support @command{unset}.
15764 (@pxref{Portable Shell, , Portable Shell Programming}).
15766 As a general rule, shell variable names containing a lower-case letter
15767 are safe; you can define and use these variables without worrying about
15768 their effect on the underlying system, and without worrying about
15769 whether the shell changes them unexpectedly.  (The exception is the
15770 shell variable @code{status}, as described below.)
15772 Here is a list of names that are known to cause trouble.  This list is
15773 not exhaustive, but you should be safe if you avoid the name
15774 @code{status} and names containing only upper-case letters and
15775 underscores.
15777 @c Alphabetical order, case insensitive, `A' before `a'.
15778 @table @code
15779 @item ?
15780 Not all shells correctly reset @samp{$?} after conditionals (@pxref{if,
15781 , Limitations of Shell Builtins}).  Not all shells manage @samp{$?}
15782 correctly in shell functions (@pxref{Shell Functions}) or in traps
15783 (@pxref{trap, , Limitations of Shell Builtins}).  Not all shells reset
15784 @samp{$?} to zero after an empty command.
15786 @example
15787 $ @kbd{bash -c 'false; $empty; echo $?'}
15789 $ @kbd{zsh -c 'false; $empty; echo $?'}
15791 @end example
15793 @item _
15794 @evindex _
15795 Many shells reserve @samp{$_} for various purposes, e.g., the name of
15796 the last command executed.
15798 @item BIN_SH
15799 @evindex BIN_SH
15800 In Tru64, if @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
15801 the standard shell conform to Posix.
15803 @item CDPATH
15804 @evindex CDPATH
15805 When this variable is set it specifies a list of directories to search
15806 when invoking @code{cd} with a relative file name that did not start
15807 with @samp{./} or @samp{../}.  Posix
15808 1003.1-2001 says that if a nonempty directory name from @env{CDPATH}
15809 is used successfully, @code{cd} prints the resulting absolute
15810 file name.  Unfortunately this output can break idioms like
15811 @samp{abs=`cd src && pwd`} because @code{abs} receives the name twice.
15812 Also, many shells do not conform to this part of Posix; for
15813 example, @command{zsh} prints the result only if a directory name
15814 other than @file{.} was chosen from @env{CDPATH}.
15816 In practice the shells that have this problem also support
15817 @command{unset}, so you can work around the problem as follows:
15819 @example
15820 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
15821 @end example
15823 You can also avoid output by ensuring that your directory name is
15824 absolute or anchored at @samp{./}, as in @samp{abs=`cd ./src && pwd`}.
15826 Configure scripts use M4sh, which automatically unsets @env{CDPATH} if
15827 possible, so you need not worry about this problem in those scripts.
15829 @item CLICOLOR_FORCE
15830 @evindex CLICOLOR_FORCE
15831 When this variable is set, some implementations of tools like
15832 @command{ls} attempt to add color to their output via terminal escape
15833 sequences, even when the output is not directed to a terminal, and can
15834 thus cause spurious failures in scripts.  Configure scripts use M4sh,
15835 which automatically unsets this variable.
15837 @item DUALCASE
15838 @evindex DUALCASE
15839 In the MKS shell, case statements and file name generation are
15840 case-insensitive unless @env{DUALCASE} is nonzero.
15841 Autoconf-generated scripts export this variable when they start up.
15843 @item ENV
15844 @itemx MAIL
15845 @itemx MAILPATH
15846 @itemx PS1
15847 @itemx PS2
15848 @itemx PS4
15849 @evindex ENV
15850 @evindex MAIL
15851 @evindex MAILPATH
15852 @evindex PS1
15853 @evindex PS2
15854 @evindex PS4
15855 These variables should not matter for shell scripts, since they are
15856 supposed to affect only interactive shells.  However, at least one
15857 shell (the pre-3.0 UWIN Korn shell) gets confused about
15858 whether it is interactive, which means that (for example) a @env{PS1}
15859 with a side effect can unexpectedly modify @samp{$?}.  To work around
15860 this bug, M4sh scripts (including @file{configure} scripts) do something
15861 like this:
15863 @example
15864 (unset ENV) >/dev/null 2>&1 && unset ENV MAIL MAILPATH
15865 PS1='$ '
15866 PS2='> '
15867 PS4='+ '
15868 @end example
15870 @noindent
15871 (actually, there is some complication due to bugs in @command{unset};
15872 see @pxref{unset, , Limitations of Shell Builtins}).
15874 @item FPATH
15875 @evindex FPATH
15876 The Korn shell uses @env{FPATH} to find shell functions, so avoid
15877 @env{FPATH} in portable scripts.  @env{FPATH} is consulted after
15878 @env{PATH}, but you still need to be wary of tests that use @env{PATH}
15879 to find whether a command exists, since they might report the wrong
15880 result if @env{FPATH} is also set.
15882 @item GREP_OPTIONS
15883 @evindex GREP_OPTIONS
15884 When this variable is set, some implementations of @command{grep} honor
15885 these options, even if the options include direction to enable colored
15886 output via terminal escape sequences, and the result can cause spurious
15887 failures when the output is not directed to a terminal.  Configure
15888 scripts use M4sh, which automatically unsets this variable.
15890 @item IFS
15891 @evindex IFS
15892 Long ago, shell scripts inherited @env{IFS} from the environment,
15893 but this caused many problems so modern shells ignore any environment
15894 settings for @env{IFS}.
15896 Don't set the first character of @env{IFS} to backslash.  Indeed,
15897 Bourne shells use the first character (backslash) when joining the
15898 components in @samp{"$@@"} and some shells then reinterpret (!)@: the
15899 backslash escapes, so you can end up with backspace and other strange
15900 characters.
15902 The proper value for @env{IFS} (in regular code, not when performing
15903 splits) is @samp{@key{SPC}@key{TAB}@key{RET}}.  The first character is
15904 especially important, as it is used to join the arguments in @samp{$*};
15905 however, note that traditional shells, but also bash-2.04, fail to adhere
15906 to this and join with a space anyway.
15908 M4sh guarantees that @env{IFS} will have the default value at the
15909 beginning of a script, and many macros within autoconf rely on this
15910 setting.  It is okay to use blocks of shell code that temporarily change
15911 the value of @env{IFS} in order to split on another character, but
15912 remember to restore it before expanding further macros.
15914 Unsetting @code{IFS} instead of resetting it to the default sequence
15915 is not suggested, since code that tries to save and restore the
15916 variable's value will incorrectly reset it to an empty value, thus
15917 disabling field splitting:
15919 @example
15920 unset IFS
15921 # default separators used for field splitting
15923 save_IFS=$IFS
15924 IFS=:
15925 # ...
15926 IFS=$save_IFS
15927 # no field splitting performed
15928 @end example
15930 @item LANG
15931 @itemx LC_ALL
15932 @itemx LC_COLLATE
15933 @itemx LC_CTYPE
15934 @itemx LC_MESSAGES
15935 @itemx LC_MONETARY
15936 @itemx LC_NUMERIC
15937 @itemx LC_TIME
15938 @evindex LANG
15939 @evindex LC_ALL
15940 @evindex LC_COLLATE
15941 @evindex LC_CTYPE
15942 @evindex LC_MESSAGES
15943 @evindex LC_MONETARY
15944 @evindex LC_NUMERIC
15945 @evindex LC_TIME
15947 You should set all these variables to @samp{C} because so much
15948 configuration code assumes the C locale and Posix requires that locale
15949 environment variables be set to @samp{C} if the C locale is desired;
15950 @file{configure} scripts and M4sh do that for you.
15951 Export these variables after setting them.
15953 @c  However, some older, nonstandard
15954 @c  systems (notably SCO) break if locale environment variables
15955 @c  are set to @samp{C}, so when running on these systems
15956 @c  Autoconf-generated scripts unset the variables instead.
15958 @item LANGUAGE
15959 @evindex LANGUAGE
15961 @env{LANGUAGE} is not specified by Posix, but it is a GNU
15962 extension that overrides @env{LC_ALL} in some cases, so you (or M4sh)
15963 should set it too.
15965 @item LC_ADDRESS
15966 @itemx LC_IDENTIFICATION
15967 @itemx LC_MEASUREMENT
15968 @itemx LC_NAME
15969 @itemx LC_PAPER
15970 @itemx LC_TELEPHONE
15971 @evindex LC_ADDRESS
15972 @evindex LC_IDENTIFICATION
15973 @evindex LC_MEASUREMENT
15974 @evindex LC_NAME
15975 @evindex LC_PAPER
15976 @evindex LC_TELEPHONE
15978 These locale environment variables are GNU extensions.  They
15979 are treated like their Posix brethren (@env{LC_COLLATE},
15980 etc.)@: as described above.
15982 @item LINENO
15983 @evindex LINENO
15984 Most modern shells provide the current line number in @code{LINENO}.
15985 Its value is the line number of the beginning of the current command.
15986 M4sh, and hence Autoconf, attempts to execute @command{configure} with
15987 a shell that supports @code{LINENO}.  If no such shell is available, it
15988 attempts to implement @code{LINENO} with a Sed prepass that replaces each
15989 instance of the string @code{$LINENO} (not followed by an alphanumeric
15990 character) with the line's number.  In M4sh scripts you should execute
15991 @code{AS_LINENO_PREPARE} so that these workarounds are included in
15992 your script; configure scripts do this automatically in @code{AC_INIT}.
15994 You should not rely on @code{LINENO} within @command{eval} or shell
15995 functions, as the behavior differs in practice.  The presence of a
15996 quoted newline within simple commands can alter which line number is
15997 used as the starting point for @code{$LINENO} substitutions within that
15998 command.  Also, the possibility of the Sed prepass means that you should
15999 not rely on @code{$LINENO} when quoted, when in here-documents, or when
16000 line continuations are used.  Subshells should be OK, though.  In the
16001 following example, lines 1, 9, and 14 are portable, but the other
16002 instances of @code{$LINENO} do not have deterministic values:
16004 @example
16005 @group
16006 $ @kbd{cat lineno}
16007 echo 1. $LINENO
16008 echo "2. $LINENO
16009 3. $LINENO"
16010 cat <<EOF
16011 5. $LINENO
16012 6. $LINENO
16013 7. \$LINENO
16015 ( echo 9. $LINENO )
16016 eval 'echo 10. $LINENO'
16017 eval 'echo 11. $LINENO
16018 echo 12. $LINENO'
16019 echo 13. '$LINENO'
16020 echo 14. $LINENO '
16021 15.' $LINENO
16022 f () @{ echo $1 $LINENO;
16023 echo $1 $LINENO @}
16024 f 18.
16025 echo 19. \
16026 $LINENO
16027 @end group
16028 @group
16029 $ @kbd{bash-3.2 ./lineno}
16030 1. 1
16031 2. 3
16032 3. 3
16033 5. 4
16034 6. 4
16035 7. $LINENO
16036 9. 9
16037 10. 10
16038 11. 12
16039 12. 13
16040 13. $LINENO
16041 14. 14
16042 15. 14
16043 18. 16
16044 18. 17
16045 19. 19
16046 @end group
16047 @group
16048 $ @kbd{zsh-4.3.4 ./lineno}
16049 1. 1
16050 2. 2
16051 3. 2
16052 5. 4
16053 6. 4
16054 7. $LINENO
16055 9. 9
16056 10. 1
16057 11. 1
16058 12. 2
16059 13. $LINENO
16060 14. 14
16061 15. 14
16062 18. 0
16063 18. 1
16064 19. 19
16065 @end group
16066 @group
16067 $ @kbd{pdksh-5.2.14 ./lineno}
16068 1. 1
16069 2. 2
16070 3. 2
16071 5. 4
16072 6. 4
16073 7. $LINENO
16074 9. 9
16075 10. 0
16076 11. 0
16077 12. 0
16078 13. $LINENO
16079 14. 14
16080 15. 14
16081 18. 16
16082 18. 17
16083 19. 19
16084 @end group
16085 @group
16086 $ @kbd{sed '=' <lineno |}
16087 > @kbd{  sed '}
16088 > @kbd{    N}
16089 > @kbd{    s,$,-,}
16090 > @kbd{    t loop}
16091 > @kbd{    :loop}
16092 > @kbd{    s,^\([0-9]*\)\(.*\)[$]LINENO\([^a-zA-Z0-9_]\),\1\2\1\3,}
16093 > @kbd{    t loop}
16094 > @kbd{    s,-$,,}
16095 > @kbd{    s,^[0-9]*\n,,}
16096 > @kbd{  ' |}
16097 > @kbd{  sh}
16098 1. 1
16099 2. 2
16100 3. 3
16101 5. 5
16102 6. 6
16103 7. \7
16104 9. 9
16105 10. 10
16106 11. 11
16107 12. 12
16108 13. 13
16109 14. 14
16110 15. 15
16111 18. 16
16112 18. 17
16113 19. 20
16114 @end group
16115 @end example
16117 In particular, note that @file{config.status} (and any other subsidiary
16118 script created by @code{AS_INIT_GENERATED}) might report line numbers
16119 relative to the parent script as a result of the potential Sed pass.
16121 @item NULLCMD
16122 @evindex NULLCMD
16123 When executing the command @samp{>foo}, @command{zsh} executes
16124 @samp{$NULLCMD >foo} unless it is operating in Bourne shell
16125 compatibility mode and the @command{zsh} version is newer
16126 than 3.1.6-dev-18.  If you are using an older @command{zsh}
16127 and forget to set @env{NULLCMD},
16128 your script might be suspended waiting for data on its standard input.
16130 @item PATH_SEPARATOR
16131 @evindex PATH_SEPARATOR
16132 On DJGPP systems, the @env{PATH_SEPARATOR} environment
16133 variable can be set to either @samp{:} or @samp{;} to control the path
16134 separator Bash uses to set up certain environment variables (such as
16135 @env{PATH}).  You can set this variable to @samp{;} if you want
16136 @command{configure} to use @samp{;} as a separator; this might be useful
16137 if you plan to use non-Posix shells to execute files.  @xref{File System
16138 Conventions}, for more information about @code{PATH_SEPARATOR}.
16140 @item PWD
16141 @evindex PWD
16142 Posix 1003.1-2001 requires that @command{cd} and
16143 @command{pwd} must update the @env{PWD} environment variable to point
16144 to the logical name of the current directory, but traditional shells
16145 do not support this.  This can cause confusion if one shell instance
16146 maintains @env{PWD} but a subsidiary and different shell does not know
16147 about @env{PWD} and executes @command{cd}; in this case @env{PWD}
16148 points to the wrong directory.  Use @samp{`pwd`} rather than
16149 @samp{$PWD}.
16151 @item RANDOM
16152 @evindex RANDOM
16153 Many shells provide @code{RANDOM}, a variable that returns a different
16154 integer each time it is used.  Most of the time, its value does not
16155 change when it is not used, but on IRIX 6.5 the value changes all
16156 the time.  This can be observed by using @command{set}.  It is common
16157 practice to use @code{$RANDOM} as part of a file name, but code
16158 shouldn't rely on @code{$RANDOM} expanding to a nonempty string.
16160 @item status
16161 @evindex status
16162 This variable is an alias to @samp{$?} for @code{zsh} (at least 3.1.6),
16163 hence read-only.  Do not use it.
16164 @end table
16166 @node Shell Functions
16167 @section Shell Functions
16168 @cindex Shell Functions
16170 Nowadays, it is difficult to find a shell that does not support
16171 shell functions at all.  However, some differences should be expected.
16173 Inside a shell function, you should not rely on the error status of a
16174 subshell if the last command of that subshell was @code{exit} or
16175 @code{trap}, as this triggers bugs in zsh 4.x; while Autoconf tries to
16176 find a shell that does not exhibit the bug, zsh might be the only shell
16177 present on the user's machine.
16179 Likewise, the state of @samp{$?} is not reliable when entering a shell
16180 function.  This has the effect that using a function as the first
16181 command in a @command{trap} handler can cause problems.
16183 @example
16184 $ @kbd{bash -c 'foo()@{ echo $?; @}; trap foo 0; (exit 2); exit 2'; echo $?}
16187 $ @kbd{ash -c 'foo()@{ echo $?; @}; trap foo 0; (exit 2); exit 2'; echo $?}
16190 @end example
16192 DJGPP bash 2.04 has a bug in that @command{return} from a
16193 shell function which also used a command substitution causes a
16194 segmentation fault.  To work around the issue, you can use
16195 @command{return} from a subshell, or @samp{AS_SET_STATUS} as last command
16196 in the execution flow of the function (@pxref{Common Shell Constructs}).
16198 Not all shells treat shell functions as simple commands impacted by
16199 @samp{set -e}, for example with Solaris 10 @command{bin/sh}:
16201 @example
16202 $ @kbd{bash -c 'f()@{ return 1; @}; set -e; f; echo oops}
16203 $ @kbd{/bin/sh -c 'f()@{ return 1; @}; set -e; f; echo oops}
16204 oops
16205 @end example
16207 Shell variables and functions may share the same namespace, for example
16208 with Solaris 10 @command{/bin/sh}:
16210 @example
16211 $ @kbd{f () @{ :; @}; f=; f}
16212 f: not found
16213 @end example
16215 @noindent
16216 For this reason, Autoconf (actually M4sh, @pxref{Programming in M4sh})
16217 uses the prefix @samp{as_fn_} for its functions.
16219 Handling of positional parameters and shell options varies among shells.
16220 For example, Korn shells reset and restore trace output (@samp{set -x})
16221 and other options upon function entry and exit.  Inside a function,
16222 IRIX sh sets @samp{$0} to the function name.
16224 It is not portable to pass temporary environment variables to shell
16225 functions.  Solaris @command{/bin/sh} does not see the variable.
16226 Meanwhile, not all shells follow the Posix rule that the assignment must
16227 affect the current environment in the same manner as special built-ins.
16229 @example
16230 $ @kbd{/bin/sh -c 'func()@{ echo $a;@}; a=1 func; echo $a'}
16231 @result{}
16232 @result{}
16233 $ @kbd{ash -c 'func()@{ echo $a;@}; a=1 func; echo $a'}
16234 @result{}1
16235 @result{}
16236 $ @kbd{bash -c 'set -o posix; func()@{ echo $a;@}; a=1 func; echo $a'}
16237 @result{}1
16238 @result{}1
16239 @end example
16241 Some ancient Bourne shell variants with function support did not reset
16242 @samp{$@var{i}, @var{i} >= 0}, upon function exit, so effectively the
16243 arguments of the script were lost after the first function invocation.
16244 It is probably not worth worrying about these shells any more.
16246 With AIX sh, a @command{trap} on 0 installed in a shell function
16247 triggers at function exit rather than at script exit, see @xref{trap, ,
16248 Limitations of Shell Builtins}.
16250 @node Limitations of Builtins
16251 @section Limitations of Shell Builtins
16252 @cindex Shell builtins
16253 @cindex Limitations of shell builtins
16255 No, no, we are serious: some shells do have limitations!  :)
16257 You should always keep in mind that any builtin or command may support
16258 options, and therefore differ in behavior with arguments
16259 starting with a dash.  For instance, even the innocent @samp{echo "$word"}
16260 can give unexpected results when @code{word} starts with a dash.  It is
16261 often possible to avoid this problem using @samp{echo "x$word"}, taking
16262 the @samp{x} into account later in the pipe.  Many of these limitations
16263 can be worked around using M4sh (@pxref{Programming in M4sh}).
16265 @c This table includes things like `@command{test} (files)', so we can't
16266 @c use @table @command.
16267 @table @asis
16268 @item @command{.}
16269 @c --------------
16270 @prindex @command{.}
16271 Use @command{.} only with regular files (use @samp{test -f}).  Bash
16272 2.03, for instance, chokes on @samp{. /dev/null}.  Remember that
16273 @command{.} uses @env{PATH} if its argument contains no slashes.  Also,
16274 some shells, including bash 3.2, implicitly append the current directory
16275 to this @env{PATH} search, even though Posix forbids it.  So if you want
16276 to use @command{.} on a file @file{foo} in the current directory, you
16277 must use @samp{. ./foo}.
16279 Not all shells gracefully handle syntax errors within a sourced file.
16280 On one extreme, some non-interactive shells abort the entire script.  On
16281 the other, @command{zsh} 4.3.10 has a bug where it fails to react to the
16282 syntax error.
16284 @example
16285 $ @kbd{echo 'fi' > syntax}
16286 $ @kbd{bash -c '. ./syntax; echo $?'}
16287 ./syntax: line 1: syntax error near unexpected token `fi'
16288 ./syntax: line 1: `fi'
16290 $ @kbd{ash -c '. ./syntax; echo $?'}
16291 ./syntax: 1: Syntax error: "fi" unexpected
16292 $ @kbd{zsh -c '. ./syntax; echo $?'}
16293 ./syntax:1: parse error near `fi'
16295 @end example
16297 @item @command{!}
16298 @c --------------
16299 @prindex @command{!}
16300 The Unix version 7 shell did not support
16301 negating the exit status of commands with @command{!}, and this feature
16302 is still absent from some shells (e.g., Solaris @command{/bin/sh}).
16303 Other shells, such as FreeBSD @command{/bin/sh} or @command{ash}, have
16304 bugs when using @command{!}:
16306 @example
16307 $ @kbd{sh -c '! : | :'; echo $?}
16309 $ @kbd{ash -c '! : | :'; echo $?}
16311 $ @kbd{sh -c '! @{ :; @}'; echo $?}
16313 $ @kbd{ash -c '! @{ :; @}'; echo $?}
16314 @{: not found
16315 Syntax error: "@}" unexpected
16317 @end example
16319 Shell code like this:
16321 @example
16322 if ! cmp file1 file2 >/dev/null 2>&1; then
16323   echo files differ or trouble
16325 @end example
16327 is therefore not portable in practice.  Typically it is easy to rewrite
16328 such code, e.g.:
16330 @example
16331 cmp file1 file2 >/dev/null 2>&1 ||
16332   echo files differ or trouble
16333 @end example
16335 More generally, one can always rewrite @samp{! @var{command}} as:
16337 @example
16338 if @var{command}; then (exit 1); else :; fi
16339 @end example
16342 @item @command{@{...@}}
16343 @c --------------------
16344 @prindex @command{@{...@}}
16345 Bash 3.2 (and earlier versions) sometimes does not properly set
16346 @samp{$?} when failing to write redirected output of a compound command.
16347 This problem is most commonly observed with @samp{@{@dots{}@}}; it does
16348 not occur with @samp{(@dots{})}.  For example:
16350 @example
16351 $ @kbd{bash -c '@{ echo foo; @} >/bad; echo $?'}
16352 bash: line 1: /bad: Permission denied
16354 $ @kbd{bash -c 'while :; do echo; done >/bad; echo $?'}
16355 bash: line 1: /bad: Permission denied
16357 @end example
16359 To work around the bug, prepend @samp{:;}:
16361 @example
16362 $ @kbd{bash -c ':;@{ echo foo; @} >/bad; echo $?'}
16363 bash: line 1: /bad: Permission denied
16365 @end example
16367 Posix requires a syntax error if a brace list has no contents.  However,
16368 not all shells obey this rule; and on shells where empty lists are
16369 permitted, the effect on @samp{$?} is inconsistent.  To avoid problems,
16370 ensure that a brace list is never empty.
16372 @example
16373 $ @kbd{bash -c 'false; @{ @}; echo $?' || echo $?}
16374 bash: line 1: syntax error near unexpected token `@}'
16375 bash: line 1: `false; @{ @}; echo $?'
16377 $ @kbd{zsh -c 'false; @{ @}; echo $?' || echo $?}
16379 $ @kbd{pdksh -c 'false; @{ @}; echo $?' || echo $?}
16381 @end example
16384 @item @command{break}
16385 @c ------------------
16386 @prindex @command{break}
16387 The use of @samp{break 2} etc.@: is safe.
16390 @anchor{case}
16391 @item @command{case}
16392 @c -----------------
16393 @prindex @command{case}
16394 You don't need to quote the argument; no splitting is performed.
16396 You don't need the final @samp{;;}, but you should use it.
16398 Posix requires support for @code{case} patterns with opening
16399 parentheses like this:
16401 @example
16402 case $file_name in
16403   (*.c) echo "C source code";;
16404 esac
16405 @end example
16407 @noindent
16408 but the @code{(} in this example is not portable to many Bourne
16409 shell implementations, which is a pity for those of us using tools that
16410 rely on balanced parentheses.  For instance, with Solaris
16411 @command{/bin/sh}:
16413 @example
16414 $ @kbd{case foo in (foo) echo foo;; esac}
16415 @error{}syntax error: `(' unexpected
16416 @end example
16418 @noindent
16419 The leading @samp{(} can be omitted safely.  Unfortunately, there are
16420 contexts where unbalanced parentheses cause other problems, such as when
16421 using a syntax-highlighting editor that searches for the balancing
16422 counterpart, or more importantly, when using a case statement as an
16423 underquoted argument to an Autoconf macro.  @xref{Balancing
16424 Parentheses}, for tradeoffs involved in various styles of dealing with
16425 unbalanced @samp{)}.
16427 Zsh handles pattern fragments derived from parameter expansions or
16428 command substitutions as though quoted:
16430 @example
16431 $ pat=\?; case aa in ?$pat) echo match;; esac
16432 $ pat=\?; case a? in ?$pat) echo match;; esac
16433 match
16434 @end example
16436 @noindent
16437 Because of a bug in its @code{fnmatch}, Bash fails to properly
16438 handle backslashes in character classes:
16440 @example
16441 bash-2.02$ @kbd{case /tmp in [/\\]*) echo OK;; esac}
16442 bash-2.02$
16443 @end example
16445 @noindent
16446 This is extremely unfortunate, since you are likely to use this code to
16447 handle Posix or MS-DOS absolute file names.  To work around this
16448 bug, always put the backslash first:
16450 @example
16451 bash-2.02$ @kbd{case '\TMP' in [\\/]*) echo OK;; esac}
16453 bash-2.02$ @kbd{case /tmp in [\\/]*) echo OK;; esac}
16455 @end example
16457 Many Bourne shells cannot handle closing brackets in character classes
16458 correctly.
16460 Some shells also have problems with backslash escaping in case you do not want
16461 to match the backslash: both a backslash and the escaped character match this
16462 pattern.  To work around this, specify the character class in a variable, so
16463 that quote removal does not apply afterwards, and the special characters don't
16464 have to be backslash-escaped:
16466 @example
16467 $ @kbd{case '\' in [\<]) echo OK;; esac}
16469 $ @kbd{scanset='[<]'; case '\' in $scanset) echo OK;; esac}
16471 @end example
16473 Even with this, Solaris @command{ksh} matches a backslash if the set
16474 contains any
16475 of the characters @samp{|}, @samp{&}, @samp{(}, or @samp{)}.
16477 Conversely, Tru64 @command{ksh} (circa 2003) erroneously always matches
16478 a closing parenthesis if not specified in a character class:
16480 @example
16481 $ @kbd{case foo in *\)*) echo fail ;; esac}
16482 fail
16483 $ @kbd{case foo in *')'*) echo fail ;; esac}
16484 fail
16485 @end example
16487 Some shells, such as Ash 0.3.8, are confused by an empty
16488 @code{case}/@code{esac}:
16490 @example
16491 ash-0.3.8 $ @kbd{case foo in esac;}
16492 @error{}Syntax error: ";" unexpected (expecting ")")
16493 @end example
16495 Posix requires @command{case} to give an exit status of 0 if no cases
16496 match.  However, @command{/bin/sh} in Solaris 10 does not obey this
16497 rule.  Meanwhile, it is unclear whether a case that matches, but
16498 contains no statements, must also change the exit status to 0.  The M4sh
16499 macro @code{AS_CASE} works around these inconsistencies.
16501 @example
16502 $ @kbd{bash -c 'case `false` in ?) ;; esac; echo $?'}
16504 $ @kbd{/bin/sh -c 'case `false` in ?) ;; esac; echo $?'}
16506 @end example
16509 @item @command{cd}
16510 @c ---------------
16511 @prindex @command{cd}
16512 Posix 1003.1-2001 requires that @command{cd} must support
16513 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
16514 with @option{-L} being the default.  However, traditional shells do
16515 not support these options, and their @command{cd} command has the
16516 @option{-P} behavior.
16518 Portable scripts should assume neither option is supported, and should
16519 assume neither behavior is the default.  This can be a bit tricky,
16520 since the Posix default behavior means that, for example,
16521 @samp{ls ..} and @samp{cd ..} may refer to different directories if
16522 the current logical directory is a symbolic link.  It is safe to use
16523 @code{cd @var{dir}} if @var{dir} contains no @file{..} components.
16524 Also, Autoconf-generated scripts check for this problem when computing
16525 variables like @code{ac_top_srcdir} (@pxref{Configuration Actions}),
16526 so it is safe to @command{cd} to these variables.
16528 See @xref{Special Shell Variables}, for portability problems involving
16529 @command{cd} and the @env{CDPATH} environment variable.
16530 Also please see the discussion of the @command{pwd} command.
16533 @anchor{echo}
16534 @item @command{echo}
16535 @c -----------------
16536 @prindex @command{echo}
16537 The simple @command{echo} is probably the most surprising source of
16538 portability troubles.  It is not possible to use @samp{echo} portably
16539 unless both options and escape sequences are omitted.  Don't expect any
16540 option.
16542 Do not use backslashes in the arguments, as there is no consensus on
16543 their handling.  For @samp{echo '\n' | wc -l}, the @command{sh} of
16544 Solaris outputs 2, but Bash and Zsh (in @command{sh} emulation mode) output 1.
16545 The problem is truly @command{echo}: all the shells
16546 understand @samp{'\n'} as the string composed of a backslash and an
16547 @samp{n}.  Within a command substitution, @samp{echo 'string\c'} will
16548 mess up the internal state of ksh88 on AIX 6.1 so that it will print
16549 the first character @samp{s} only, followed by a newline, and then
16550 entirely drop the output of the next echo in a command substitution.
16552 Because of these problems, do not pass a string containing arbitrary
16553 characters to @command{echo}.  For example, @samp{echo "$foo"} is safe
16554 only if you know that @var{foo}'s value cannot contain backslashes and
16555 cannot start with @samp{-}.
16557 If this may not be true, @command{printf} is in general safer and
16558 easier to use than @command{echo} and @command{echo -n}.  Thus, scripts
16559 where portability is not a major concern should use @command{printf
16560 '%s\n'} whenever @command{echo} could fail, and similarly use
16561 @command{printf %s} instead of @command{echo -n}. For portable shell
16562 scripts, instead, it is suggested to use a here-document like this:
16564 @example
16565 cat <<EOF
16566 $foo
16568 @end example
16570 Alternatively, M4sh provides @code{AS_ECHO} and @code{AS_ECHO_N} macros
16571 which choose between various portable implementations: @samp{echo}
16572 or @samp{print} where they work, @command{printf} if it is available,
16573 or else other creative tricks in order to work around the above problems.
16576 @item @command{eval}
16577 @c -----------------
16578 @prindex @command{eval}
16579 The @command{eval} command is useful in limited circumstances, e.g.,
16580 using commands like @samp{eval table_$key=\$value} and @samp{eval
16581 value=table_$key} to simulate a hash table when the key is known to be
16582 alphanumeric.
16584 You should also be wary of common bugs in @command{eval} implementations.
16585 In some shell implementations (e.g., older @command{ash}, OpenBSD 3.8
16586 @command{sh}, @command{pdksh} v5.2.14 99/07/13.2, and @command{zsh}
16587 4.2.5), the arguments of @samp{eval} are evaluated in a context where
16588 @samp{$?} is 0, so they exhibit behavior like this:
16590 @example
16591 $ @kbd{false; eval 'echo $?'}
16593 @end example
16595 The correct behavior here is to output a nonzero value,
16596 but portable scripts should not rely on this.
16598 You should not rely on @code{LINENO} within @command{eval}.
16599 @xref{Special Shell Variables}.
16601 Note that, even though these bugs are easily avoided,
16602 @command{eval} is tricky to use on arbitrary arguments.
16603 It is obviously unwise to use @samp{eval $cmd} if the string value of
16604 @samp{cmd} was derived from an untrustworthy source.  But even if the
16605 string value is valid, @samp{eval $cmd} might not work as intended,
16606 since it causes field splitting and file name expansion to occur twice,
16607 once for the @command{eval} and once for the command itself.  It is
16608 therefore safer to use @samp{eval "$cmd"}.  For example, if @var{cmd}
16609 has the value @samp{cat test?.c}, @samp{eval $cmd} might expand to the
16610 equivalent of @samp{cat test;.c} if there happens to be a file named
16611 @file{test;.c} in the current directory; and this in turn
16612 mistakenly attempts to invoke @command{cat} on the file @file{test} and
16613 then execute the command @command{.c}.  To avoid this problem, use
16614 @samp{eval "$cmd"} rather than @samp{eval $cmd}.
16616 However, suppose that you want to output the text of the evaluated
16617 command just before executing it.  Assuming the previous example,
16618 @samp{echo "Executing: $cmd"} outputs @samp{Executing: cat test?.c}, but
16619 this output doesn't show the user that @samp{test;.c} is the actual name
16620 of the copied file.  Conversely, @samp{eval "echo Executing: $cmd"}
16621 works on this example, but it fails with @samp{cmd='cat foo >bar'},
16622 since it mistakenly replaces the contents of @file{bar} by the
16623 string @samp{cat foo}.  No simple, general, and portable solution to
16624 this problem is known.
16626 @item @command{exec}
16627 @c -----------------
16628 @prindex @command{exec}
16629 Posix describes several categories of shell built-ins.  Special
16630 built-ins (such as @command{exit}) must impact the environment of the
16631 current shell, and need not be available through @command{exec}.  All
16632 other built-ins are regular, and must not propagate variable assignments
16633 to the environment of the current shell.  However, the group of regular
16634 built-ins is further distinguished by commands that do not require a
16635 @env{PATH} search (such as @command{cd}), in contrast to built-ins that
16636 are offered as a more efficient version of something that must still be
16637 found in a @env{PATH} search (such as @command{echo}).  Posix is not
16638 clear on whether @command{exec} must work with the list of 17 utilities
16639 that are invoked without a @env{PATH} search, and many platforms lack an
16640 executable for some of those built-ins:
16642 @example
16643 $ @kbd{sh -c 'exec cd /tmp'}
16644 sh: line 0: exec: cd: not found
16645 @end example
16647 All other built-ins that provide utilities specified by Posix must have
16648 a counterpart executable that exists on @env{PATH}, although Posix
16649 allows @command{exec} to use the built-in instead of the executable.
16650 For example, contrast @command{bash} 3.2 and @command{pdksh} 5.2.14:
16652 @example
16653 $ @kbd{bash -c 'pwd --version' | head -n1}
16654 bash: line 0: pwd: --: invalid option
16655 pwd: usage: pwd [-LP]
16656 $ @kbd{bash -c 'exec pwd --version' | head -n1}
16657 pwd (GNU coreutils) 6.10
16658 $ @kbd{pdksh -c 'exec pwd --version' | head -n1}
16659 pdksh: pwd: --: unknown option
16660 @end example
16662 When it is desired to avoid a regular shell built-in, the workaround is
16663 to use some other forwarding command, such as @command{env} or
16664 @command{nice}, that will ensure a path search:
16666 @example
16667 $ @kbd{pdksh -c 'exec true --version' | head -n1}
16668 $ @kbd{pdksh -c 'nice true --version' | head -n1}
16669 true (GNU coreutils) 6.10
16670 $ @kbd{pdksh -c 'env true --version' | head -n1}
16671 true (GNU coreutils) 6.10
16672 @end example
16674 @item @command{exit}
16675 @c -----------------
16676 @prindex @command{exit}
16677 The default value of @command{exit} is supposed to be @code{$?};
16678 unfortunately, some shells, such as the DJGPP port of Bash 2.04, just
16679 perform @samp{exit 0}.
16681 @example
16682 bash-2.04$ @kbd{foo=`exit 1` || echo fail}
16683 fail
16684 bash-2.04$ @kbd{foo=`(exit 1)` || echo fail}
16685 fail
16686 bash-2.04$ @kbd{foo=`(exit 1); exit` || echo fail}
16687 bash-2.04$
16688 @end example
16690 Using @samp{exit $?} restores the expected behavior.
16692 Some shell scripts, such as those generated by @command{autoconf}, use a
16693 trap to clean up before exiting.  If the last shell command exited with
16694 nonzero status, the trap also exits with nonzero status so that the
16695 invoker can tell that an error occurred.
16697 Unfortunately, in some shells, such as Solaris @command{/bin/sh}, an exit
16698 trap ignores the @code{exit} command's argument.  In these shells, a trap
16699 cannot determine whether it was invoked by plain @code{exit} or by
16700 @code{exit 1}.  Instead of calling @code{exit} directly, use the
16701 @code{AC_MSG_ERROR} macro that has a workaround for this problem.
16704 @anchor{export}
16705 @item @command{export}
16706 @c -------------------
16707 @prindex @command{export}
16708 The builtin @command{export} dubs a shell variable @dfn{environment
16709 variable}.  Each update of exported variables corresponds to an update
16710 of the environment variables.  Conversely, each environment variable
16711 received by the shell when it is launched should be imported as a shell
16712 variable marked as exported.
16714 Alas, many shells, such as Solaris @command{/bin/sh},
16715 IRIX 6.3, IRIX 5.2,
16716 AIX 4.1.5, and Digital Unix 4.0, forget to
16717 @command{export} the environment variables they receive.  As a result,
16718 two variables coexist: the environment variable and the shell
16719 variable.  The following code demonstrates this failure:
16721 @example
16722 #!/bin/sh
16723 echo $FOO
16724 FOO=bar
16725 echo $FOO
16726 exec /bin/sh $0
16727 @end example
16729 @noindent
16730 when run with @samp{FOO=foo} in the environment, these shells print
16731 alternately @samp{foo} and @samp{bar}, although they should print only
16732 @samp{foo} and then a sequence of @samp{bar}s.
16734 Therefore you should @command{export} again each environment variable
16735 that you update; the export can occur before or after the assignment.
16737 Posix is not clear on whether the @command{export} of an undefined
16738 variable causes the variable to be defined with the value of an empty
16739 string, or merely marks any future definition of a variable by that name
16740 for export.  Various shells behave differently in this regard:
16742 @example
16743 $ @kbd{sh -c 'export foo; env | grep foo'}
16744 $ @kbd{ash -c 'export foo; env | grep foo'}
16745 foo=
16746 @end example
16748 @item @command{false}
16749 @c ------------------
16750 @prindex @command{false}
16751 Don't expect @command{false} to exit with status 1: in native
16752 Solaris @file{/bin/false} exits with status 255.
16755 @item @command{for}
16756 @c ----------------
16757 @prindex @command{for}
16758 To loop over positional arguments, use:
16760 @example
16761 for arg
16763   echo "$arg"
16764 done
16765 @end example
16767 @noindent
16768 You may @emph{not} leave the @code{do} on the same line as @code{for},
16769 since some shells improperly grok:
16771 @example
16772 for arg; do
16773   echo "$arg"
16774 done
16775 @end example
16777 If you want to explicitly refer to the positional arguments, given the
16778 @samp{$@@} bug (@pxref{Shell Substitutions}), use:
16780 @example
16781 for arg in $@{1+"$@@"@}; do
16782   echo "$arg"
16783 done
16784 @end example
16786 @noindent
16787 But keep in mind that Zsh, even in Bourne shell emulation mode, performs
16788 word splitting on @samp{$@{1+"$@@"@}}; see @ref{Shell Substitutions},
16789 item @samp{$@@}, for more.
16791 In Solaris @command{/bin/sh}, when the list of arguments of a
16792 @command{for} loop starts with @emph{unquoted} tokens looking like
16793 variable assignments, the loop is not executed on those tokens:
16795 @example
16796 $ @kbd{/bin/sh -c 'for v in a=b c=d x e=f; do echo $v; done'}
16799 @end example
16801 @noindent
16802 Thankfully, quoting the assignment-like tokens, or starting the list
16803 with other tokens (including unquoted variable expansion that results in
16804 an assignment-like result), avoids the problem, so it is easy to work
16805 around:
16807 @example
16808 $ @kbd{/bin/sh -c 'for v in "a=b"; do echo $v; done'}
16810 $ @kbd{/bin/sh -c 'x=a=b; for v in $x c=d; do echo $v; done'}
16813 @end example
16815 @anchor{if}
16816 @item @command{if}
16817 @c ---------------
16818 @prindex @command{if}
16819 Using @samp{!} is not portable.  Instead of:
16821 @example
16822 if ! cmp -s file file.new; then
16823   mv file.new file
16825 @end example
16827 @noindent
16828 use:
16830 @example
16831 if cmp -s file file.new; then :; else
16832   mv file.new file
16834 @end example
16836 @noindent
16837 Or, especially if the @dfn{else} branch is short, you can use @code{||}.
16838 In M4sh, the @code{AS_IF} macro provides an easy way to write these kinds
16839 of conditionals:
16841 @example
16842 AS_IF([cmp -s file file.new], [], [mv file.new file])
16843 @end example
16845 This is especially useful in other M4 macros, where the @dfn{then} and
16846 @dfn{else} branches might be macro arguments.
16848 Some very old shells did not reset the exit status from an @command{if}
16849 with no @command{else}:
16851 @example
16852 $ @kbd{if (exit 42); then true; fi; echo $?}
16854 @end example
16856 @noindent
16857 whereas a proper shell should have printed @samp{0}.  But this is no
16858 longer a portability problem; any shell that supports functions gets it
16859 correct.  However, it explains why some makefiles have lengthy
16860 constructs:
16862 @example
16863 if test -f "$file"; then
16864   install "$file" "$dest"
16865 else
16866   :
16868 @end example
16871 @item @command{printf}
16872 @c ------------------
16873 @prindex @command{printf}
16874 A format string starting with a @samp{-} can cause problems.
16875 Bash interprets it as an option and
16876 gives an error.  And @samp{--} to mark the end of options is not good
16877 in the NetBSD Almquist shell (e.g., 0.4.6) which takes that
16878 literally as the format string.  Putting the @samp{-} in a @samp{%c}
16879 or @samp{%s} is probably easiest:
16881 @example
16882 printf %s -foo
16883 @end example
16885 Bash 2.03 mishandles an escape sequence that happens to evaluate to @samp{%}:
16887 @example
16888 $ @kbd{printf '\045'}
16889 bash: printf: `%': missing format character
16890 @end example
16892 Large outputs may cause trouble.  On Solaris 2.5.1 through 10, for
16893 example, @file{/usr/bin/printf} is buggy, so when using
16894 @command{/bin/sh} the command @samp{printf %010000x 123} normally dumps
16895 core.
16897 Since @command{printf} is not always a shell builtin, there is a
16898 potential speed penalty for using @code{printf '%s\n'} as a replacement
16899 for an @command{echo} that does not interpret @samp{\} or leading
16900 @samp{-}. With Solaris @command{ksh}, it is possible to use @code{print
16901 -r --} for this role instead.
16903 For a discussion of portable alternatives to both @command{printf}
16904 and @command{echo}, @xref{echo, , Limitations of Shell Builtins}.
16907 @item @command{pwd}
16908 @c ----------------
16909 @prindex @command{pwd}
16910 With modern shells, plain @command{pwd} outputs a ``logical''
16911 directory name, some of whose components may be symbolic links.  These
16912 directory names are in contrast to ``physical'' directory names, whose
16913 components are all directories.
16915 Posix 1003.1-2001 requires that @command{pwd} must support
16916 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
16917 with @option{-L} being the default.  However, traditional shells do
16918 not support these options, and their @command{pwd} command has the
16919 @option{-P} behavior.
16921 Portable scripts should assume neither option is supported, and should
16922 assume neither behavior is the default.  Also, on many hosts
16923 @samp{/bin/pwd} is equivalent to @samp{pwd -P}, but Posix
16924 does not require this behavior and portable scripts should not rely on
16927 Typically it's best to use plain @command{pwd}.  On modern hosts this
16928 outputs logical directory names, which have the following advantages:
16930 @itemize @bullet
16931 @item
16932 Logical names are what the user specified.
16933 @item
16934 Physical names may not be portable from one installation
16935 host to another due to network file system gymnastics.
16936 @item
16937 On modern hosts @samp{pwd -P} may fail due to lack of permissions to
16938 some parent directory, but plain @command{pwd} cannot fail for this
16939 reason.
16940 @end itemize
16942 Also please see the discussion of the @command{cd} command.
16945 @item @command{read}
16946 @c -----------------
16947 @prindex @command{read}
16948 No options are portable, not even support @option{-r} (Solaris
16949 @command{/bin/sh} for example).
16952 @anchor{set}
16953 @item @command{set}
16954 @c ----------------
16955 @prindex @command{set}
16956 With the FreeBSD 6.0 shell, the @command{set} command (without
16957 any options) does not sort its output.
16959 The @command{set} builtin faces the usual problem with arguments
16960 starting with a
16961 dash.  Modern shells such as Bash or Zsh understand @option{--} to specify
16962 the end of the options (any argument after @option{--} is a parameter,
16963 even @samp{-x} for instance), but many traditional shells (e.g., Solaris
16964 10 @command{/bin/sh}) simply stop option
16965 processing as soon as a non-option argument is found.  Therefore, use
16966 @samp{dummy} or simply @samp{x} to end the option processing, and use
16967 @command{shift} to pop it out:
16969 @example
16970 set x $my_list; shift
16971 @end example
16973 Avoid @samp{set -}, e.g., @samp{set - $my_list}.  Posix no
16974 longer requires support for this command, and in traditional shells
16975 @samp{set - $my_list} resets the @option{-v} and @option{-x} options, which
16976 makes scripts harder to debug.
16978 Some nonstandard shells do not recognize more than one option
16979 (e.g., @samp{set -e -x} assigns @samp{-x} to the command line).  It is
16980 better to combine them:
16982 @example
16983 set -ex
16984 @end example
16986 @cindex @command{set -e}
16987 The option @option{-e} has historically been underspecified, with enough
16988 ambiguities to cause numerous differences across various shell
16989 implementations.  Perhaps the best reference is
16990 @uref{http://www.opengroup.org/@/austin/@/mailarchives/@/ag-review/@/msg03507.html,
16991 this link}, recommending a change to Posix 2008 to match @command{ksh88}
16992 behavior.  Note that mixing @code{set -e} and shell functions is asking
16993 for surprises:
16995 @example
16996 set -e
16997 doit()
16999   rm file
17000   echo one
17002 doit || echo two
17003 @end example
17005 @noindent
17006 According to the recommendation, @samp{one} should always be output
17007 regardless of whether the @command{rm} failed, because it occurs within
17008 the body of the shell function @samp{doit} invoked on the left side of
17009 @samp{||}, where the effects of @samp{set -e} are not enforced.
17010 Likewise, @samp{two} should never be printed, since the failure of
17011 @command{rm} does not abort the function, such that the status of
17012 @samp{doit} is 0.
17014 The BSD shell has had several problems with the @option{-e}
17015 option.  Older versions of the BSD
17016 shell (circa 1990) mishandled @samp{&&}, @samp{||}, @samp{if}, and
17017 @samp{case} when @option{-e} was in effect, causing the shell to exit
17018 unexpectedly in some cases.  This was particularly a problem with
17019 makefiles, and led to circumlocutions like @samp{sh -c 'test -f file ||
17020 touch file'}, where the seemingly-unnecessary @samp{sh -c '@dots{}'}
17021 wrapper works around the bug (@pxref{Failure in Make Rules}).
17023 Even relatively-recent versions of the BSD shell (e.g., OpenBSD 3.4)
17024 wrongly exit with @option{-e} if the last command within a compound
17025 statement fails and is guarded by an @samp{&&} only.  For example:
17027 @example
17028 #! /bin/sh
17029 set -e
17030 foo=''
17031 test -n "$foo" && exit 1
17032 echo one
17033 if :; then
17034   test -n "$foo" && exit 1
17035   echo two
17036   test -n "$foo" && exit 1
17038 echo three
17039 @end example
17041 @noindent
17042 does not print @samp{three}.  One workaround is to change the last
17043 instance of @samp{test -n "$foo" && exit 1} to be @samp{if test -n
17044 "$foo"; then exit 1; fi} instead.  Another possibility is to warn BSD
17045 users not to use @samp{sh -e}.
17047 When @samp{set -e} is in effect, a failed command substitution in
17048 Solaris @command{/bin/sh} cannot be ignored, even with @samp{||}.
17050 @example
17051 $ @kbd{/bin/sh -c 'set -e; foo=`false` || echo foo; echo bar'}
17052 $ @kbd{bash -c 'set -e; foo=`false` || echo foo; echo bar'}
17055 @end example
17057 @noindent
17058 Moreover, a command substitution, successful or not, causes this shell to
17059 exit from a failing outer command even in presence of an @samp{&&} list:
17061 @example
17062 $ @kbd{bash -c 'set -e; false `true` && echo notreached; echo ok'}
17064 $ @kbd{sh -c 'set -e; false `true` && echo notreached; echo ok'}
17066 @end example
17068 Portable scripts should not use @samp{set -e} if @command{trap} is used
17069 to install an exit handler.  This is because Tru64/OSF 5.1 @command{sh}
17070 sometimes enters the trap handler with the exit status of the command
17071 prior to the one that triggered the errexit handler:
17073 @example
17074 $ @kbd{sh -ec 'trap '\''echo $?'\'' 0; false'}
17076 $ @kbd{sh -c 'set -e; trap '\''echo $?'\'' 0; false'}
17078 @end example
17080 @noindent
17081 Thus, when writing a script in M4sh, rather than trying to rely on
17082 @samp{set -e}, it is better to append @samp{|| AS_EXIT} to any
17083 statement where it is desirable to abort on failure.
17085 @cindex @command{set -b}
17086 @cindex @command{set -m}
17087 Job control is not provided by all shells, so the use of @samp{set -m}
17088 or @samp{set -b} must be done with care.  When using @command{zsh} in
17089 native mode, asynchronous notification (@samp{set -b}) is enabled by
17090 default, and using @samp{emulate sh} to switch to Posix mode does not
17091 clear this setting (although asynchronous notification has no impact
17092 unless job monitoring is also enabled).  Also, @command{zsh} 4.3.10 and
17093 earlier have a bug where job control can be manipulated in interactive
17094 shells, but not in subshells or scripts.  Furthermore, some shells, like
17095 @command{pdksh}, fail to treat subshells as interactive, even though the
17096 parent shell was.
17098 @example
17099 $ @kbd{echo $ZSH_VERSION}
17100 4.3.10
17101 $ @kbd{set -m; echo $?}
17103 $ @kbd{zsh -c 'set -m; echo $?'}
17104 set: can't change option: -m
17105 $ @kbd{(set -m); echo $?}
17106 set: can't change option: -m
17108 $ @kbd{pdksh -ci 'echo $-; (echo $-)'}
17111 @end example
17114 @item @command{shift}
17115 @c ------------------
17116 @prindex @command{shift}
17117 Not only is @command{shift}ing a bad idea when there is nothing left to
17118 shift, but in addition it is not portable: the shell of MIPS
17119 RISC/OS 4.52 refuses to do it.
17121 Don't use @samp{shift 2} etc.; while it in the SVR1 shell (1983),
17122 it is also absent in many pre-Posix shells.
17125 @item @command{source}
17126 @c -------------------
17127 @prindex @command{source}
17128 This command is not portable, as Posix does not require it; use
17129 @command{.} instead.
17132 @item @command{test}
17133 @c -----------------
17134 @prindex @command{test}
17135 The @code{test} program is the way to perform many file and string
17136 tests.  It is often invoked by the alternate name @samp{[}, but using
17137 that name in Autoconf code is asking for trouble since it is an M4 quote
17138 character.
17140 The @option{-a}, @option{-o}, @samp{(}, and @samp{)} operands are not
17141 present in all implementations, and have been marked obsolete by Posix
17142 2008.  This is because there are inherent ambiguities in using them.
17143 For example, @samp{test "$1" -a "$2"} looks like a binary operator to
17144 check whether two strings are both non-empty, but if @samp{$1} is the
17145 literal @samp{!}, then some implementations of @command{test} treat it
17146 as a negation of the unary operator @option{-a}.
17148 Thus, portable uses of @command{test} should never have more than four
17149 arguments, and scripts should use shell constructs like @samp{&&} and
17150 @samp{||} instead.  If you combine @samp{&&} and @samp{||} in the same
17151 statement, keep in mind that they have equal precedence, so it is often
17152 better to parenthesize even when this is redundant.  For example:
17154 @smallexample
17155 # Not portable:
17156 test "X$a" = "X$b" -a \
17157   '(' "X$c" != "X$d" -o "X$e" = "X$f" ')'
17159 # Portable:
17160 test "X$a" = "X$b" &&
17161   @{ test "X$c" != "X$d" || test "X$e" = "X$f"; @}
17162 @end smallexample
17164 @command{test} does not process options like most other commands do; for
17165 example, it does not recognize the @option{--} argument as marking the
17166 end of options.
17168 It is safe to use @samp{!} as a @command{test} operator.  For example,
17169 @samp{if test ! -d foo; @dots{}} is portable even though @samp{if ! test
17170 -d foo; @dots{}} is not.
17173 @item @command{test} (files)
17174 @c -------------------------
17175 To enable @command{configure} scripts to support cross-compilation, they
17176 shouldn't do anything that tests features of the build system instead of
17177 the host system.  But occasionally you may find it necessary to check
17178 whether some arbitrary file exists.  To do so, use @samp{test -f} or
17179 @samp{test -r}.  Do not use @samp{test -x}, because 4.3BSD does not
17180 have it.  Do not use @samp{test -e} either, because Solaris @command{/bin/sh}
17181 lacks it.  To test for symbolic links on systems that have them, use
17182 @samp{test -h} rather than @samp{test -L}; either form conforms to
17183 Posix 1003.1-2001, but older shells like Solaris 8
17184 @code{/bin/sh} support only @option{-h}.
17186 @item @command{test} (strings)
17187 @c ---------------------------
17188 Posix says that @samp{test "@var{string}"} succeeds if @var{string} is
17189 not null, but this usage is not portable to traditional platforms like
17190 Solaris 10 @command{/bin/sh}, which mishandle strings like @samp{!} and
17191 @samp{-n}.
17193 Posix also says that @samp{test ! "@var{string}"},
17194 @samp{test -n "@var{string}"} and
17195 @samp{test -z "@var{string}"} work with any string, but many
17196 shells (such as Solaris, AIX 3.2, UNICOS 10.0.0.6,
17197 Digital Unix 4, etc.)@: get confused if
17198 @var{string} looks like an operator:
17200 @example
17201 $ @kbd{test -n =}
17202 test: argument expected
17203 $ @kbd{test ! -n}
17204 test: argument expected
17205 @end example
17207 Similarly, Posix says that both @samp{test "@var{string1}" = "@var{string2"}}
17208 and @samp{test "@var{string1}" != "@var{string2"}} work for any pairs of
17209 strings, but in practice this is not true for troublesome strings that
17210 look like operators or parentheses, or that begin with @samp{-}.
17212 It is best to protect such strings with a leading @samp{X}, e.g.,
17213 @samp{test "X@var{string}" != X} rather than @samp{test -n
17214 "@var{string}"} or @samp{test ! "@var{string}"}.
17216 It is common to find variations of the following idiom:
17218 @example
17219 test -n "`echo $ac_feature | sed 's/[-a-zA-Z0-9_]//g'`" &&
17220   @var{action}
17221 @end example
17223 @noindent
17224 to take an action when a token matches a given pattern.  Such constructs
17225 should be avoided by using:
17227 @example
17228 case $ac_feature in
17229   *[!-a-zA-Z0-9_]*) @var{action};;
17230 esac
17231 @end example
17233 If the pattern is a complicated regular expression that cannot be
17234 expressed as a shell pattern, use something like this instead:
17236 @example
17237 expr "X$ac_feature" : 'X.*[^-a-zA-Z0-9_]' >/dev/null &&
17238   @var{action}
17239 @end example
17241 @samp{expr "X@var{foo}" : "X@var{bar}"} is more robust than @samp{echo
17242 "X@var{foo}" | grep "^X@var{bar}"}, because it avoids problems when
17243 @samp{@var{foo}} contains backslashes.
17246 @anchor{trap}
17247 @item @command{trap}
17248 @c -----------------
17249 @prindex @command{trap}
17250 It is safe to trap at least the signals 1, 2, 13, and 15.  You can also
17251 trap 0, i.e., have the @command{trap} run when the script ends (either via an
17252 explicit @command{exit}, or the end of the script).  The trap for 0 should be
17253 installed outside of a shell function, or AIX 5.3 @command{/bin/sh}
17254 will invoke the trap at the end of this function.
17256 Posix says that @samp{trap - 1 2 13 15} resets the traps for the
17257 specified signals to their default values, but many common shells (e.g.,
17258 Solaris @command{/bin/sh}) misinterpret this and attempt to execute a
17259 ``command'' named @command{-} when the specified conditions arise.
17260 Posix 2008 also added a requirement to support @samp{trap 1 2 13 15} to
17261 reset traps, as this is supported by a larger set of shells, but there
17262 are still shells like @command{dash} that mistakenly try to execute
17263 @command{1} instead of resetting the traps.  Therefore, there is no
17264 portable workaround, except for @samp{trap - 0}, for which
17265 @samp{trap '' 0} is a portable substitute.
17267 Although Posix is not absolutely clear on this point, it is widely
17268 admitted that when entering the trap @samp{$?} should be set to the exit
17269 status of the last command run before the trap.  The ambiguity can be
17270 summarized as: ``when the trap is launched by an @command{exit}, what is
17271 the @emph{last} command run: that before @command{exit}, or
17272 @command{exit} itself?''
17274 Bash considers @command{exit} to be the last command, while Zsh and
17275 Solaris @command{/bin/sh} consider that when the trap is run it is
17276 @emph{still} in the @command{exit}, hence it is the previous exit status
17277 that the trap receives:
17279 @example
17280 $ @kbd{cat trap.sh}
17281 trap 'echo $?' 0
17282 (exit 42); exit 0
17283 $ @kbd{zsh trap.sh}
17285 $ @kbd{bash trap.sh}
17287 @end example
17289 The portable solution is then simple: when you want to @samp{exit 42},
17290 run @samp{(exit 42); exit 42}, the first @command{exit} being used to
17291 set the exit status to 42 for Zsh, and the second to trigger the trap
17292 and pass 42 as exit status for Bash.  In M4sh, this is covered by using
17293 @code{AS_EXIT}.
17295 The shell in FreeBSD 4.0 has the following bug: @samp{$?} is
17296 reset to 0 by empty lines if the code is inside @command{trap}.
17298 @example
17299 $ @kbd{trap 'false}
17301 echo $?' 0
17302 $ @kbd{exit}
17304 @end example
17306 @noindent
17307 Fortunately, this bug only affects @command{trap}.
17309 Several shells fail to execute an exit trap that is defined inside a
17310 subshell, when the last command of that subshell is not a builtin.  A
17311 workaround is to use @samp{exit $?} as the shell builtin.
17313 @example
17314 $ @kbd{bash -c '(trap "echo hi" 0; /bin/true)'}
17316 $ @kbd{/bin/sh -c '(trap "echo hi" 0; /bin/true)'}
17317 $ @kbd{/bin/sh -c '(trap "echo hi" 0; /bin/true; exit $?)'}
17319 @end example
17321 @noindent
17322 Likewise, older implementations of @command{bash} failed to preserve
17323 @samp{$?} across an exit trap consisting of a single cleanup command.
17325 @example
17326 $ @kbd{bash -c 'trap "/bin/true" 0; exit 2'; echo $?}
17328 $ @kbd{bash-2.05b -c 'trap "/bin/true" 0; exit 2'; echo $?}
17330 $ @kbd{bash-2.05b -c 'trap ":; /bin/true" 0; exit 2'; echo $?}
17332 @end example
17334 @item @command{true}
17335 @c -----------------
17336 @prindex @command{true}
17337 @c Info cannot handle `:' in index entries.
17338 @c @prindex @command{:}
17339 Don't worry: as far as we know @command{true} is portable.
17340 Nevertheless, it's not always a builtin (e.g., Bash 1.x), and the
17341 portable shell community tends to prefer using @command{:}.  This has a
17342 funny side effect: when asked whether @command{false} is more portable
17343 than @command{true} Alexandre Oliva answered:
17345 @quotation
17346 In a sense, yes, because if it doesn't exist, the shell will produce an
17347 exit status of failure, which is correct for @command{false}, but not
17348 for @command{true}.
17349 @end quotation
17352 @anchor{unset}
17353 @item @command{unset}
17354 @c ------------------
17355 @prindex @command{unset}
17356 In some nonconforming shells (e.g., Bash 2.05a), @code{unset FOO} fails
17357 when @code{FOO} is not set.  You can use
17359 @smallexample
17360 FOO=; unset FOO
17361 @end smallexample
17363 if you are not sure that @code{FOO} is set.
17365 A few ancient shells lack @command{unset} entirely.  For some variables
17366 such as @code{PS1}, you can use a neutralizing value instead:
17368 @smallexample
17369 PS1='$ '
17370 @end smallexample
17372 Usually, shells that do not support @command{unset} need less effort to
17373 make the environment sane, so for example is not a problem if you cannot
17374 unset @command{CDPATH} on those shells.  However, Bash 2.01 mishandles
17375 @code{unset MAIL} in some cases and dumps core.  So, you should do
17376 something like
17378 @smallexample
17379 ( (unset MAIL) || exit 1) >/dev/null 2>&1 && unset MAIL || :
17380 @end smallexample
17382 @noindent
17383 @xref{Special Shell Variables}, for some neutralizing values.  Also, see
17384 @ref{export, , Limitations of Builtins}, for
17385 the case of environment variables.
17387 @item @command{wait}
17388 @c -----------------
17389 @prindex @command{wait}
17390 The exit status of @command{wait} is not always reliable.
17391 @end table
17393 @node Limitations of Usual Tools
17394 @section Limitations of Usual Tools
17395 @cindex Limitations of usual tools
17397 The small set of tools you can expect to find on any machine can still
17398 include some limitations you should be aware of.
17400 @comment Between this list and the list of builtins above, we should
17401 @comment mention all the tools in GNU Coding Standards ``Utilities in
17402 @comment Makefiles''.
17404 @c This table includes things like `@command{expr} (|)', so we can't
17405 @c use @table @command.
17406 @table @asis
17407 @item @command{awk}
17408 @c ----------------
17409 @prindex @command{awk}
17410 Don't leave white space before the opening parenthesis in a user function call.
17411 Posix does not allow this and GNU Awk rejects it:
17413 @example
17414 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
17415         BEGIN @{ die () @}'}
17416 gawk: cmd. line:2:         BEGIN @{ die () @}
17417 gawk: cmd. line:2:                      ^ parse error
17418 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
17419         BEGIN @{ die() @}'}
17420 Aaaaarg!
17421 @end example
17423 Posix says that if a program contains only @samp{BEGIN} actions, and
17424 contains no instances of @code{getline}, then the program merely
17425 executes the actions without reading input.  However, traditional Awk
17426 implementations (such as Solaris 10 @command{awk}) read and discard
17427 input in this case.  Portable scripts can redirect input from
17428 @file{/dev/null} to work around the problem.  For example:
17430 @example
17431 awk 'BEGIN @{print "hello world"@}' </dev/null
17432 @end example
17434 Posix says that in an @samp{END} action, @samp{$NF} (and presumably,
17435 @samp{$1}) retain their value from the last record read, if no
17436 intervening @samp{getline} occurred.  However, some implementations
17437 (such as Solaris 10 @samp{/usr/bin/awk}, @samp{nawk}, or Darwin
17438 @samp{awk}) reset these variables.  A workaround is to use an
17439 intermediate variable prior to the @samp{END} block.  For example:
17441 @example
17442 $ @kbd{cat end.awk}
17443 @{ tmp = $1 @}
17444 END @{ print "a", $1, $NF, "b", tmp @}
17445 $ @kbd{echo 1 | awk -f end.awk}
17446 a   b 1
17447 $ @kbd{echo 1 | gawk -f end.awk}
17448 a 1 1 b 1
17449 @end example
17451 If you want your program to be deterministic, don't depend on @code{for}
17452 on arrays:
17454 @example
17455 $ @kbd{cat for.awk}
17456 END @{
17457   arr["foo"] = 1
17458   arr["bar"] = 1
17459   for (i in arr)
17460     print i
17462 $ @kbd{gawk -f for.awk </dev/null}
17465 $ @kbd{nawk -f for.awk </dev/null}
17468 @end example
17470 Some Awk implementations, such as HP-UX 11.0's native one,
17471 mishandle anchors:
17473 @example
17474 $ @kbd{echo xfoo | $AWK '/foo|^bar/ @{ print @}'}
17475 $ @kbd{echo bar | $AWK '/foo|^bar/ @{ print @}'}
17477 $ @kbd{echo xfoo | $AWK '/^bar|foo/ @{ print @}'}
17478 xfoo
17479 $ @kbd{echo bar | $AWK '/^bar|foo/ @{ print @}'}
17481 @end example
17483 @noindent
17484 Either do not depend on such patterns (i.e., use @samp{/^(.*foo|bar)/},
17485 or use a simple test to reject such implementations.
17487 On @samp{ia64-hp-hpux11.23}, Awk mishandles @code{printf} conversions
17488 after @code{%u}:
17490 @example
17491 $ @kbd{awk 'BEGIN @{ printf "%u %d\n", 0, -1 @}'}
17492 0 0
17493 @end example
17495 AIX version 5.2 has an arbitrary limit of 399 on the
17496 length of regular expressions and literal strings in an Awk program.
17498 Traditional Awk implementations derived from Unix version 7, such as
17499 Solaris @command{/bin/awk}, have many limitations and do not
17500 conform to Posix.  Nowadays @code{AC_PROG_AWK} (@pxref{Particular
17501 Programs}) finds you an Awk that doesn't have these problems, but if
17502 for some reason you prefer not to use @code{AC_PROG_AWK} you may need to
17503 address them.
17505 Traditional Awk does not support multidimensional arrays or user-defined
17506 functions.
17508 Traditional Awk does not support the @option{-v} option.  You can use
17509 assignments after the program instead, e.g., @code{$AWK '@{print v
17510 $1@}' v=x}; however, don't forget that such assignments are not
17511 evaluated until they are encountered (e.g., after any @code{BEGIN}
17512 action).
17514 Traditional Awk does not support the keywords @code{delete} or @code{do}.
17516 Traditional Awk does not support the expressions
17517 @code{@var{a}?@var{b}:@var{c}}, @code{!@var{a}}, @code{@var{a}^@var{b}},
17518 or @code{@var{a}^=@var{b}}.
17520 Traditional Awk does not support the predefined @code{CONVFMT} variable.
17522 Traditional Awk supports only the predefined functions @code{exp}, @code{index},
17523 @code{int}, @code{length}, @code{log}, @code{split}, @code{sprintf},
17524 @code{sqrt}, and @code{substr}.
17526 Traditional Awk @code{getline} is not at all compatible with Posix;
17527 avoid it.
17529 Traditional Awk has @code{for (i in a) @dots{}} but no other uses of the
17530 @code{in} keyword.  For example, it lacks @code{if (i in a) @dots{}}.
17532 In code portable to both traditional and modern Awk, @code{FS} must be a
17533 string containing just one ordinary character, and similarly for the
17534 field-separator argument to @code{split}.
17536 Traditional Awk has a limit of 99 fields in a record.  Since some Awk
17537 implementations, like Tru64's, split the input even if you don't refer
17538 to any field in the script, to circumvent this problem, set @samp{FS}
17539 to an unusual character and use @code{split}.
17541 Traditional Awk has a limit of at most 99 bytes in a number formatted by
17542 @code{OFMT}; for example, @code{OFMT="%.300e"; print 0.1;} typically
17543 dumps core.
17545 The original version of Awk had a limit of at most 99 bytes per
17546 @code{split} field, 99 bytes per @code{substr} substring, and 99 bytes
17547 per run of non-special characters in a @code{printf} format, but these
17548 bugs have been fixed on all practical hosts that we know of.
17550 HP-UX 11.00 and IRIX 6.5 Awk require that input files have a line length
17551 of at most 3070 bytes.
17553 @item @command{basename}
17554 @c ---------------------
17555 @prindex @command{basename}
17556 Not all hosts have a working @command{basename}.
17557 You can use @command{expr} instead.
17559 @c AS_BASENAME is to be replaced by a better API.
17560 @ignore
17561 Not all hosts have a working @command{basename}, and you should instead
17562 use @code{AS_BASENAME} (@pxref{Programming in M4sh}), followed by
17563 @command{expr} if you need to strip a suffix.  For example:
17565 @example
17566 a=`basename "$aname"`       # This is not portable.
17567 a=`AS_BASENAME(["$aname"])` # This is more portable.
17569 # This is not portable.
17570 c=`basename "$cname" .c`
17572 # This is more portable.
17573 c=`AS_BASENAME(["$cname"])`
17574 case $c in
17575 ?*.c) c=`expr "X$c" : 'X\(.*\)\.c'`;;
17576 esac
17577 @end example
17578 @end ignore
17581 @item @command{cat}
17582 @c ----------------
17583 @prindex @command{cat}
17584 Don't rely on any option.
17587 @item @command{cc}
17588 @c ---------------
17589 @prindex @command{cc}
17590 The command @samp{cc -c foo.c} traditionally produces an object file
17591 named @file{foo.o}.  Most compilers allow @option{-c} to be combined
17592 with @option{-o} to specify a different object file name, but
17593 Posix does not require this combination and a few compilers
17594 lack support for it.  @xref{C Compiler}, for how GNU Make
17595 tests for this feature with @code{AC_PROG_CC_C_O}.
17597 When a compilation such as @samp{cc -o foo foo.c} fails, some compilers
17598 (such as CDS on Reliant Unix) leave a @file{foo.o}.
17600 HP-UX @command{cc} doesn't accept @file{.S} files to preprocess and
17601 assemble.  @samp{cc -c foo.S} appears to succeed, but in fact does
17602 nothing.
17604 The default executable, produced by @samp{cc foo.c}, can be
17606 @itemize
17607 @item @file{a.out} --- usual Posix convention.
17608 @item @file{b.out} --- i960 compilers (including @command{gcc}).
17609 @item @file{a.exe} --- DJGPP port of @command{gcc}.
17610 @item @file{a_out.exe} --- GNV @command{cc} wrapper for DEC C on OpenVMS.
17611 @item @file{foo.exe} --- various MS-DOS compilers.
17612 @end itemize
17614 The C compiler's traditional name is @command{cc}, but other names like
17615 @command{gcc} are common.  Posix 1003.1-2001 specifies the
17616 name @command{c99}, but older Posix editions specified
17617 @command{c89} and anyway these standard names are rarely used in
17618 practice.  Typically the C compiler is invoked from makefiles that use
17619 @samp{$(CC)}, so the value of the @samp{CC} make variable selects the
17620 compiler name.
17622 @item @command{chgrp}
17623 @itemx @command{chown}
17624 @c -------------------
17625 @prindex @command{chgrp}
17626 @prindex @command{chown}
17627 It is not portable to change a file's group to a group that the owner
17628 does not belong to.
17630 @item @command{chmod}
17631 @c ------------------
17632 @prindex @command{chmod}
17633 Avoid usages like @samp{chmod -w file}; use @samp{chmod a-w file}
17634 instead, for two reasons.  First, plain @option{-w} does not necessarily
17635 make the file unwritable, since it does not affect mode bits that
17636 correspond to bits in the file mode creation mask.  Second,
17637 Posix says that the @option{-w} might be interpreted as an
17638 implementation-specific option, not as a mode; Posix suggests
17639 using @samp{chmod -- -w file} to avoid this confusion, but unfortunately
17640 @samp{--} does not work on some older hosts.
17643 @item @command{cmp}
17644 @c ----------------
17645 @prindex @command{cmp}
17646 @command{cmp} performs a raw data comparison of two files, while
17647 @command{diff} compares two text files.  Therefore, if you might compare
17648 DOS files, even if only checking whether two files are different, use
17649 @command{diff} to avoid spurious differences due to differences of
17650 newline encoding.
17653 @item @command{cp}
17654 @c ---------------
17655 @prindex @command{cp}
17656 Avoid the @option{-r} option, since Posix 1003.1-2004 marks it as
17657 obsolescent and its behavior on special files is implementation-defined.
17658 Use @option{-R} instead.  On GNU hosts the two options
17659 are equivalent, but on Solaris hosts (for example) @code{cp -r}
17660 reads from pipes instead of replicating them.
17662 Some @command{cp} implementations (e.g., BSD/OS 4.2) do not allow
17663 trailing slashes at the end of nonexistent destination directories.  To
17664 avoid this problem, omit the trailing slashes.  For example, use
17665 @samp{cp -R source /tmp/newdir} rather than @samp{cp -R source
17666 /tmp/newdir/} if @file{/tmp/newdir} does not exist.
17668 @c This is thanks to Ian.
17669 The ancient SunOS 4 @command{cp} does not support @option{-f}, although
17670 its @command{mv} does.
17672 @cindex timestamp resolution
17673 Traditionally, file timestamps had 1-second resolution, and @samp{cp
17674 -p} copied the timestamps exactly.  However, many modern file systems
17675 have timestamps with 1-nanosecond resolution.  Unfortunately, @samp{cp
17676 -p} implementations truncate timestamps when copying files, so this
17677 can result in the destination file appearing to be older than the
17678 source.  The exact amount of truncation depends on the resolution of
17679 the system calls that @command{cp} uses; traditionally this was
17680 @code{utime}, which has 1-second resolution, but some newer
17681 @command{cp} implementations use @code{utimes}, which has
17682 1-microsecond resolution.  These newer implementations include GNU
17683 Core Utilities 5.0.91 or later, and Solaris 8 (sparc) patch 109933-02 or
17684 later.  Unfortunately as of January 2006 there is still no system
17685 call to set timestamps to the full nanosecond resolution.
17687 Bob Proulx notes that @samp{cp -p} always @emph{tries} to copy
17688 ownerships.  But whether it actually does copy ownerships or not is a
17689 system dependent policy decision implemented by the kernel.  If the
17690 kernel allows it then it happens.  If the kernel does not allow it then
17691 it does not happen.  It is not something @command{cp} itself has control
17692 over.
17694 In Unix System V any user can chown files to any other user, and System
17695 V also has a non-sticky @file{/tmp}.  That probably derives from the
17696 heritage of System V in a business environment without hostile users.
17697 BSD changed this
17698 to be a more secure model where only root can @command{chown} files and
17699 a sticky @file{/tmp} is used.  That undoubtedly derives from the heritage
17700 of BSD in a campus environment.
17702 GNU/Linux and Solaris by default follow BSD, but
17703 can be configured to allow a System V style @command{chown}.  On the
17704 other hand, HP-UX follows System V, but can
17705 be configured to use the modern security model and disallow
17706 @command{chown}.  Since it is an administrator-configurable parameter
17707 you can't use the name of the kernel as an indicator of the behavior.
17711 @item @command{date}
17712 @c -----------------
17713 @prindex @command{date}
17714 Some versions of @command{date} do not recognize special @samp{%} directives,
17715 and unfortunately, instead of complaining, they just pass them through,
17716 and exit with success:
17718 @example
17719 $ @kbd{uname -a}
17720 OSF1 medusa.sis.pasteur.fr V5.1 732 alpha
17721 $ @kbd{date "+%s"}
17723 @end example
17726 @item @command{diff}
17727 @c -----------------
17728 @prindex @command{diff}
17729 Option @option{-u} is nonportable.
17731 Some implementations, such as Tru64's, fail when comparing to
17732 @file{/dev/null}.  Use an empty file instead.
17735 @item @command{dirname}
17736 @c --------------------
17737 @prindex @command{dirname}
17738 Not all hosts have a working @command{dirname}, and you should instead
17739 use @code{AS_DIRNAME} (@pxref{Programming in M4sh}).  For example:
17741 @example
17742 dir=`dirname "$file"`       # This is not portable.
17743 dir=`AS_DIRNAME(["$file"])` # This is more portable.
17744 @end example
17747 @item @command{egrep}
17748 @c ------------------
17749 @prindex @command{egrep}
17750 Posix 1003.1-2001 no longer requires @command{egrep},
17751 but many hosts do not yet support the Posix
17752 replacement @code{grep -E}.  Also, some traditional implementations do
17753 not work on long input lines.  To work around these problems, invoke
17754 @code{AC_PROG_EGREP} and then use @code{$EGREP}.
17756 Portable extended regular expressions should use @samp{\} only to escape
17757 characters in the string @samp{$()*+.?[\^@{|}.  For example, @samp{\@}}
17758 is not portable, even though it typically matches @samp{@}}.
17760 The empty alternative is not portable.  Use @samp{?} instead.  For
17761 instance with Digital Unix v5.0:
17763 @example
17764 > printf "foo\n|foo\n" | $EGREP '^(|foo|bar)$'
17765 |foo
17766 > printf "bar\nbar|\n" | $EGREP '^(foo|bar|)$'
17767 bar|
17768 > printf "foo\nfoo|\n|bar\nbar\n" | $EGREP '^(foo||bar)$'
17770 |bar
17771 @end example
17773 @command{$EGREP} also suffers the limitations of @command{grep}
17774 (@pxref{grep, , Limitations of Usual Tools}).
17776 @item @command{expr}
17777 @c -----------------
17778 @prindex @command{expr}
17779 Not all implementations obey the Posix rule that @samp{--} separates
17780 options from arguments; likewise, not all implementations provide the
17781 extension to Posix that the first argument can be treated as part of a
17782 valid expression rather than an invalid option if it begins with
17783 @samp{-}.  When performing arithmetic, use @samp{expr 0 + $var} if
17784 @samp{$var} might be a negative number, to keep @command{expr} from
17785 interpreting it as an option.
17787 No @command{expr} keyword starts with @samp{X}, so use @samp{expr
17788 X"@var{word}" : 'X@var{regex}'} to keep @command{expr} from
17789 misinterpreting @var{word}.
17791 Don't use @code{length}, @code{substr}, @code{match} and @code{index}.
17793 @item @command{expr} (@samp{|})
17794 @prindex @command{expr} (@samp{|})
17795 You can use @samp{|}.  Although Posix does require that @samp{expr
17796 ''} return the empty string, it does not specify the result when you
17797 @samp{|} together the empty string (or zero) with the empty string.  For
17798 example:
17800 @example
17801 expr '' \| ''
17802 @end example
17804 Posix 1003.2-1992 returns the empty string
17805 for this case, but traditional Unix returns @samp{0} (Solaris is
17806 one such example).  In Posix 1003.1-2001, the specification was
17807 changed to match traditional Unix's behavior (which is
17808 bizarre, but it's too late to fix this).  Please note that the same
17809 problem does arise when the empty string results from a computation,
17810 as in:
17812 @example
17813 expr bar : foo \| foo : bar
17814 @end example
17816 @noindent
17817 Avoid this portability problem by avoiding the empty string.
17820 @item @command{expr} (@samp{:})
17821 @c ----------------------------
17822 @prindex @command{expr}
17823 Portable @command{expr} regular expressions should use @samp{\} to
17824 escape only characters in the string @samp{$()*.0123456789[\^n@{@}}.
17825 For example, alternation, @samp{\|}, is common but Posix does not
17826 require its support, so it should be avoided in portable scripts.
17827 Similarly, @samp{\+} and @samp{\?} should be avoided.
17829 Portable @command{expr} regular expressions should not begin with
17830 @samp{^}.  Patterns are automatically anchored so leading @samp{^} is
17831 not needed anyway.
17833 On the other hand, the behavior of the @samp{$} anchor is not portable
17834 on multi-line strings.  Posix is ambiguous whether the anchor applies to
17835 each line, as was done in older versions of GNU Coreutils, or
17836 whether it applies only to the end of the overall string, as in
17837 Coreutils 6.0 and most other implementations.
17839 @example
17840 $ @kbd{baz='foo}
17841 > @kbd{bar'}
17842 $ @kbd{expr "X$baz" : 'X\(foo\)$'}
17844 $ @kbd{expr-5.97 "X$baz" : 'X\(foo\)$'}
17846 @end example
17848 The Posix standard is ambiguous as to whether
17849 @samp{expr 'a' : '\(b\)'} outputs @samp{0} or the empty string.
17850 In practice, it outputs the empty string on most platforms, but portable
17851 scripts should not assume this.  For instance, the QNX 4.25 native
17852 @command{expr} returns @samp{0}.
17854 One might think that a way to get a uniform behavior would be to use
17855 the empty string as a default value:
17857 @example
17858 expr a : '\(b\)' \| ''
17859 @end example
17861 @noindent
17862 Unfortunately this behaves exactly as the original expression; see the
17863 @command{expr} (@samp{|}) entry for more information.
17865 Some ancient @command{expr} implementations (e.g., SunOS 4 @command{expr} and
17866 Solaris 8 @command{/usr/ucb/expr}) have a silly length limit that causes
17867 @command{expr} to fail if the matched substring is longer than 120
17868 bytes.  In this case, you might want to fall back on @samp{echo|sed} if
17869 @command{expr} fails.  Nowadays this is of practical importance only for
17870 the rare installer who mistakenly puts @file{/usr/ucb} before
17871 @file{/usr/bin} in @env{PATH}.
17873 On Mac OS X 10.4, @command{expr} mishandles the pattern @samp{[^-]} in
17874 some cases.  For example, the command
17875 @example
17876 expr Xpowerpc-apple-darwin8.1.0 : 'X[^-]*-[^-]*-\(.*\)'
17877 @end example
17879 @noindent
17880 outputs @samp{apple-darwin8.1.0} rather than the correct @samp{darwin8.1.0}.
17881 This particular case can be worked around by substituting @samp{[^--]}
17882 for @samp{[^-]}.
17884 Don't leave, there is some more!
17886 The QNX 4.25 @command{expr}, in addition of preferring @samp{0} to
17887 the empty string, has a funny behavior in its exit status: it's always 1
17888 when parentheses are used!
17890 @example
17891 $ @kbd{val=`expr 'a' : 'a'`; echo "$?: $val"}
17892 0: 1
17893 $ @kbd{val=`expr 'a' : 'b'`; echo "$?: $val"}
17894 1: 0
17896 $ @kbd{val=`expr 'a' : '\(a\)'`; echo "?: $val"}
17897 1: a
17898 $ @kbd{val=`expr 'a' : '\(b\)'`; echo "?: $val"}
17899 1: 0
17900 @end example
17902 @noindent
17903 In practice this can be a big problem if you are ready to catch failures
17904 of @command{expr} programs with some other method (such as using
17905 @command{sed}), since you may get twice the result.  For instance
17907 @example
17908 $ @kbd{expr 'a' : '\(a\)' || echo 'a' | sed 's/^\(a\)$/\1/'}
17909 @end example
17911 @noindent
17912 outputs @samp{a} on most hosts, but @samp{aa} on QNX 4.25.  A
17913 simple workaround consists of testing @command{expr} and using a variable
17914 set to @command{expr} or to @command{false} according to the result.
17916 Tru64 @command{expr} incorrectly treats the result as a number, if it
17917 can be interpreted that way:
17919 @example
17920 $ @kbd{expr 00001 : '.*\(...\)'}
17922 @end example
17924 On HP-UX 11, @command{expr} only supports a single
17925 sub-expression.
17927 @example
17928 $ @kbd{expr 'Xfoo' : 'X\(f\(oo\)*\)$'}
17929 expr: More than one '\(' was used.
17930 @end example
17933 @item @command{fgrep}
17934 @c ------------------
17935 @prindex @command{fgrep}
17936 Posix 1003.1-2001 no longer requires @command{fgrep},
17937 but many hosts do not yet support the Posix
17938 replacement @code{grep -F}.  Also, some traditional implementations do
17939 not work on long input lines.  To work around these problems, invoke
17940 @code{AC_PROG_FGREP} and then use @code{$FGREP}.
17942 Tru64/OSF 5.1 @command{fgrep} does not match an empty pattern.
17945 @item @command{find}
17946 @c -----------------
17947 @prindex @command{find}
17948 The option @option{-maxdepth} seems to be GNU specific.
17949 Tru64 v5.1, NetBSD 1.5 and Solaris @command{find}
17950 commands do not understand it.
17952 The replacement of @samp{@{@}} is guaranteed only if the argument is
17953 exactly @emph{@{@}}, not if it's only a part of an argument.  For
17954 instance on DU, and HP-UX 10.20 and HP-UX 11:
17956 @example
17957 $ @kbd{touch foo}
17958 $ @kbd{find . -name foo -exec echo "@{@}-@{@}" \;}
17959 @{@}-@{@}
17960 @end example
17962 @noindent
17963 while GNU @command{find} reports @samp{./foo-./foo}.
17966 @anchor{grep}
17967 @item @command{grep}
17968 @c -----------------
17969 @prindex @command{grep}
17970 Portable scripts can rely on the @command{grep} options @option{-c},
17971 @option{-l}, @option{-n}, and @option{-v}, but should avoid other
17972 options.  For example, don't use @option{-w}, as Posix does not require
17973 it and Irix 6.5.16m's @command{grep} does not support it.  Also,
17974 portable scripts should not combine @option{-c} with @option{-l},
17975 as Posix does not allow this.
17977 Some of the options required by Posix are not portable in practice.
17978 Don't use @samp{grep -q} to suppress output, because many @command{grep}
17979 implementations (e.g., Solaris) do not support @option{-q}.
17980 Don't use @samp{grep -s} to suppress output either, because Posix
17981 says @option{-s} does not suppress output, only some error messages;
17982 also, the @option{-s} option of traditional @command{grep} behaved
17983 like @option{-q} does in most modern implementations.  Instead,
17984 redirect the standard output and standard error (in case the file
17985 doesn't exist) of @code{grep} to @file{/dev/null}.  Check the exit
17986 status of @code{grep} to determine whether it found a match.
17988 The QNX4 implementation fails to count lines with @code{grep -c '$'},
17989 but works with @code{grep -c '^'}.  Other alternatives for counting
17990 lines are to use @code{sed -n '$='} or @code{wc -l}.
17992 Some traditional @command{grep} implementations do not work on long
17993 input lines.  On AIX the default @code{grep} silently truncates long
17994 lines on the input before matching.
17996 Also, many implementations do not support multiple regexps
17997 with @option{-e}: they either reject @option{-e} entirely (e.g., Solaris)
17998 or honor only the last pattern (e.g., IRIX 6.5 and NeXT).  To
17999 work around these problems, invoke @code{AC_PROG_GREP} and then use
18000 @code{$GREP}.
18002 Another possible workaround for the multiple @option{-e} problem is to
18003 separate the patterns by newlines, for example:
18005 @example
18006 grep 'foo
18007 bar' in.txt
18008 @end example
18010 @noindent
18011 except that this fails with traditional @command{grep}
18012 implementations and with OpenBSD 3.8 @command{grep}.
18014 Traditional @command{grep} implementations (e.g., Solaris) do not
18015 support the @option{-E} or @option{-F} options.  To work around these
18016 problems, invoke @code{AC_PROG_EGREP} and then use @code{$EGREP}, and
18017 similarly for @code{AC_PROG_FGREP} and @code{$FGREP}.  Even if you are
18018 willing to require support for Posix @command{grep}, your script should
18019 not use both @option{-E} and @option{-F}, since Posix does not allow
18020 this combination.
18022 Portable @command{grep} regular expressions should use @samp{\} only to
18023 escape characters in the string @samp{$()*.0123456789[\^@{@}}.  For example,
18024 alternation, @samp{\|}, is common but Posix does not require its
18025 support in basic regular expressions, so it should be avoided in
18026 portable scripts.  Solaris and HP-UX @command{grep} do not support it.
18027 Similarly, the following escape sequences should also be avoided:
18028 @samp{\<}, @samp{\>}, @samp{\+}, @samp{\?}, @samp{\`}, @samp{\'},
18029 @samp{\B}, @samp{\b}, @samp{\S}, @samp{\s}, @samp{\W}, and @samp{\w}.
18031 Posix does not specify the behavior of @command{grep} on binary files.
18032 An example where this matters is using BSD @command{grep} to
18033 search text that includes embedded ANSI escape sequences for
18034 colored output to terminals (@samp{\033[m} is the sequence to restore
18035 normal output); the behavior depends on whether input is seekable:
18037 @example
18038 $ @kbd{printf 'esc\033[mape\n' > sample}
18039 $ @kbd{grep . sample}
18040 Binary file sample matches
18041 $ @kbd{cat sample | grep .}
18042 escape
18043 @end example
18046 @item @command{join}
18047 @c -----------------
18048 @prindex @command{join}
18049 Solaris 8 @command{join} has bugs when the second operand is standard
18050 input, and when standard input is a pipe.  For example, the following
18051 shell script causes Solaris 8 @command{join} to loop forever:
18053 @example
18054 cat >file <<'EOF'
18055 1 x
18056 2 y
18058 cat file | join file -
18059 @end example
18061 Use @samp{join - file} instead.
18064 @item @command{ln}
18065 @c ---------------
18066 @prindex @command{ln}
18067 @cindex Symbolic links
18068 Don't rely on @command{ln} having a @option{-f} option.  Symbolic links
18069 are not available on old systems; use @samp{$(LN_S)} as a portable substitute.
18071 For versions of the DJGPP before 2.04,
18072 @command{ln} emulates symbolic links
18073 to executables by generating a stub that in turn calls the real
18074 program.  This feature also works with nonexistent files like in the
18075 Posix spec.  So @samp{ln -s file link} generates @file{link.exe},
18076 which attempts to call @file{file.exe} if run.  But this feature only
18077 works for executables, so @samp{cp -p} is used instead for these
18078 systems.  DJGPP versions 2.04 and later have full support
18079 for symbolic links.
18082 @item @command{ls}
18083 @c ---------------
18084 @prindex @command{ls}
18085 @cindex Listing directories
18086 The portable options are @option{-acdilrtu}.  Current practice is for
18087 @option{-l} to output both owner and group, even though ancient versions
18088 of @command{ls} omitted the group.
18090 On ancient hosts, @samp{ls foo} sent the diagnostic @samp{foo not found}
18091 to standard output if @file{foo} did not exist.  Hence a shell command
18092 like @samp{sources=`ls *.c 2>/dev/null`} did not always work, since it
18093 was equivalent to @samp{sources='*.c not found'} in the absence of
18094 @samp{.c} files.  This is no longer a practical problem, since current
18095 @command{ls} implementations send diagnostics to standard error.
18097 The behavior of @command{ls} on a directory that is being concurrently
18098 modified is not always predictable, because of a data race where cached
18099 information returned by @code{readdir} does not match the current
18100 directory state.  In fact, MacOS 10.5 has an intermittent bug where
18101 @code{readdir}, and thus @command{ls}, sometimes lists a file more than
18102 once if other files were added or removed from the directory immediately
18103 prior to the @command{ls} call.  Since @command{ls} already sorts its
18104 output, the duplicate entries can be avoided by piping the results
18105 through @code{uniq}.
18107 @anchor{mkdir}
18108 @item @command{mkdir}
18109 @c ------------------
18110 @prindex @command{mkdir}
18111 @cindex Making directories
18112 No @command{mkdir} option is portable to older systems.  Instead of
18113 @samp{mkdir -p @var{file-name}}, you should use
18114 @code{AS_MKDIR_P(@var{file-name})} (@pxref{Programming in M4sh})
18115 or @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs}).
18117 Combining the @option{-m} and @option{-p} options, as in @samp{mkdir -m
18118 go-w -p @var{dir}}, often leads to trouble.  FreeBSD
18119 @command{mkdir} incorrectly attempts to change the permissions of
18120 @var{dir} even if it already exists.  HP-UX 11.23 and
18121 IRIX 6.5 @command{mkdir} often assign the wrong permissions to
18122 any newly-created parents of @var{dir}.
18124 Posix does not clearly specify whether @samp{mkdir -p foo}
18125 should succeed when @file{foo} is a symbolic link to an already-existing
18126 directory.  The GNU Core Utilities 5.1.0 @command{mkdir}
18127 succeeds, but Solaris @command{mkdir} fails.
18129 Traditional @code{mkdir -p} implementations suffer from race conditions.
18130 For example, if you invoke @code{mkdir -p a/b} and @code{mkdir -p a/c}
18131 at the same time, both processes might detect that @file{a} is missing,
18132 one might create @file{a}, then the other might try to create @file{a}
18133 and fail with a @code{File exists} diagnostic.  The GNU Core
18134 Utilities (@samp{fileutils} version 4.1), FreeBSD 5.0,
18135 NetBSD 2.0.2, and OpenBSD 2.4 are known to be
18136 race-free when two processes invoke @code{mkdir -p} simultaneously, but
18137 earlier versions are vulnerable.  Solaris @command{mkdir} is still
18138 vulnerable as of Solaris 10, and other traditional Unix systems are
18139 probably vulnerable too.  This possible race is harmful in parallel
18140 builds when several Make rules call @code{mkdir -p} to
18141 construct directories.  You may use
18142 @code{install-sh -d} as a safe replacement, provided this script is
18143 recent enough; the copy shipped with Autoconf 2.60 and Automake 1.10 is
18144 OK, but copies from older versions are vulnerable.
18147 @item @command{mkfifo}
18148 @itemx @command{mknod}
18149 @c -------------------
18150 @prindex @command{mkfifo}
18151 @prindex @command{mknod}
18152 The GNU Coding Standards state that @command{mknod} is safe to use on
18153 platforms where it has been tested to exist; but it is generally portable
18154 only for creating named FIFOs, since device numbers are
18155 platform-specific.  Autotest uses @command{mkfifo} to implement parallel
18156 testsuites.  Posix states that behavior is unspecified when opening a
18157 named FIFO for both reading and writing; on at least Cygwin, this
18158 results in failure on any attempt to read or write to that file
18159 descriptor.
18161 @item @command{mktemp}
18162 @c -------------------
18163 @prindex @command{mktemp}
18164 @cindex Creating temporary files
18165 Shell scripts can use temporary files safely with @command{mktemp}, but
18166 it does not exist on all systems.  A portable way to create a safe
18167 temporary file name is to create a temporary directory with mode 700 and
18168 use a file inside this directory.  Both methods prevent attackers from
18169 gaining control, though @command{mktemp} is far less likely to fail
18170 gratuitously under attack.
18172 Here is sample code to create a new temporary directory safely:
18174 @example
18175 # Create a temporary directory $tmp in $TMPDIR (default /tmp).
18176 # Use mktemp if possible; otherwise fall back on mkdir,
18177 # with $RANDOM to make collisions less likely.
18178 : $@{TMPDIR=/tmp@}
18180   tmp=`
18181     (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
18182   ` &&
18183   test -n "$tmp" && test -d "$tmp"
18184 @} || @{
18185   tmp=$TMPDIR/foo$$-$RANDOM
18186 @c $$ restore font-lock
18187   (umask 077 && mkdir "$tmp")
18188 @} || exit $?
18189 @end example
18192 @item @command{mv}
18193 @c ---------------
18194 @prindex @command{mv}
18195 @cindex Moving open files
18196 The only portable options are @option{-f} and @option{-i}.
18198 Moving individual files between file systems is portable (it was in Unix
18199 version 6),
18200 but it is not always atomic: when doing @samp{mv new existing}, there's
18201 a critical section where neither the old nor the new version of
18202 @file{existing} actually exists.
18204 On some systems moving files from @file{/tmp} can sometimes cause
18205 undesirable (but perfectly valid) warnings, even if you created these
18206 files.  This is because @file{/tmp} belongs to a group that ordinary
18207 users are not members of, and files created in @file{/tmp} inherit
18208 the group of @file{/tmp}.  When the file is copied, @command{mv} issues
18209 a diagnostic without failing:
18211 @smallexample
18212 $ @kbd{touch /tmp/foo}
18213 $ @kbd{mv /tmp/foo .}
18214 @error{}mv: ./foo: set owner/group (was: 100/0): Operation not permitted
18215 $ @kbd{echo $?}
18217 $ @kbd{ls foo}
18219 @end smallexample
18221 @noindent
18222 This annoying behavior conforms to Posix, unfortunately.
18224 Moving directories across mount points is not portable, use @command{cp}
18225 and @command{rm}.
18227 DOS variants cannot rename or remove open files, and do not
18228 support commands like @samp{mv foo bar >foo}, even though this is
18229 perfectly portable among Posix hosts.
18232 @item @command{od}
18233 @c ---------------
18234 @prindex @command{od}
18236 In Mac OS X 10.3, @command{od} does not support the
18237 standard Posix options @option{-A}, @option{-j}, @option{-N}, or
18238 @option{-t}, or the XSI option @option{-s}.  The only
18239 supported Posix option is @option{-v}, and the only supported
18240 XSI options are those in @option{-bcdox}.  The BSD
18241 @command{hexdump} program can be used instead.
18243 This problem no longer exists in Mac OS X 10.4.3.
18246 @item @command{rm}
18247 @c ---------------
18248 @prindex @command{rm}
18249 The @option{-f} and @option{-r} options are portable.
18251 It is not portable to invoke @command{rm} without operands.  For
18252 example, on many systems @samp{rm -f -r} (with no other arguments)
18253 silently succeeds without doing anything, but it fails with a diagnostic
18254 on NetBSD 2.0.2.
18256 A file might not be removed even if its parent directory is writable
18257 and searchable.  Many Posix hosts cannot remove a mount point, a named
18258 stream, a working directory, or a last link to a file that is being
18259 executed.
18261 DOS variants cannot rename or remove open files, and do not
18262 support commands like @samp{rm foo >foo}, even though this is
18263 perfectly portable among Posix hosts.
18265 @item @command{rmdir}
18266 @c ------------------
18267 @prindex @command{rmdir}
18268 Just as with @command{rm}, some platforms refuse to remove a working
18269 directory.
18271 @anchor{sed}
18272 @item @command{sed}
18273 @c ----------------
18274 @prindex @command{sed}
18275 Patterns should not include the separator (unless escaped), even as part
18276 of a character class.  In conformance with Posix, the Cray
18277 @command{sed} rejects @samp{s/[^/]*$//}: use @samp{s%[^/]*$%%}.
18278 Even when escaped, patterns should not include separators that are also
18279 used as @command{sed} metacharacters.  For example, GNU sed 4.0.9 rejects
18280 @samp{s,x\@{1\,\@},,}, while sed 4.1 strips the backslash before the comma
18281 before evaluating the basic regular expression.
18283 Avoid empty patterns within parentheses (i.e., @samp{\(\)}).  Posix does
18284 not require support for empty patterns, and Unicos 9 @command{sed} rejects
18285 them.
18287 Unicos 9 @command{sed} loops endlessly on patterns like @samp{.*\n.*}.
18289 Sed scripts should not use branch labels longer than 7 characters and
18290 should not contain comments.  HP-UX sed has a limit of 99 commands
18291 (not counting @samp{:} commands) and
18292 48 labels, which can not be circumvented by using more than one script
18293 file.  It can execute up to 19 reads with the @samp{r} command per cycle.
18294 Solaris @command{/usr/ucb/sed} rejects usages that exceed a limit of
18295 about 6000 bytes for the internal representation of commands.
18297 Avoid redundant @samp{;}, as some @command{sed} implementations, such as
18298 NetBSD 1.4.2's, incorrectly try to interpret the second
18299 @samp{;} as a command:
18301 @example
18302 $ @kbd{echo a | sed 's/x/x/;;s/x/x/'}
18303 sed: 1: "s/x/x/;;s/x/x/": invalid command code ;
18304 @end example
18306 Input should not have unreasonably long lines, since some @command{sed}
18307 implementations have an input buffer limited to 4000 bytes.  Likewise,
18308 not all @command{sed} implementations can handle embedded @code{NUL} or
18309 a missing trailing newline.
18311 Portable @command{sed} regular expressions should use @samp{\} only to escape
18312 characters in the string @samp{$()*.0123456789[\^n@{@}}.  For example,
18313 alternation, @samp{\|}, is common but Posix does not require its
18314 support, so it should be avoided in portable scripts.  Solaris
18315 @command{sed} does not support alternation; e.g., @samp{sed '/a\|b/d'}
18316 deletes only lines that contain the literal string @samp{a|b}.
18317 Similarly, @samp{\+} and @samp{\?} should be avoided.
18319 Anchors (@samp{^} and @samp{$}) inside groups are not portable.
18321 Nested parentheses in patterns (e.g., @samp{\(\(a*\)b*)\)}) are
18322 quite portable to current hosts, but was not supported by some ancient
18323 @command{sed} implementations like SVR3.
18325 Some @command{sed} implementations, e.g., Solaris, restrict the special
18326 role of the asterisk @samp{*} to one-character regular expressions and
18327 back-references, and the special role of interval expressions
18328 @samp{\@{@var{m}\@}}, @samp{\@{@var{m},\@}}, or @samp{\@{@var{m},@var{n}\@}}
18329 to one-character regular expressions.  This may lead to unexpected behavior:
18331 @example
18332 $ @kbd{echo '1*23*4' | /usr/bin/sed 's/\(.\)*/x/g'}
18333 x2x4
18334 $ @kbd{echo '1*23*4' | /usr/xpg4/bin/sed 's/\(.\)*/x/g'}
18336 @end example
18338 The @option{-e} option is mostly portable.
18339 However, its argument
18340 cannot start with @samp{a}, @samp{c}, or @samp{i},
18341 as this runs afoul of a Tru64 5.1 bug.
18342 Also, its argument cannot be empty, as this fails on AIX 5.3.
18343 Some people prefer to use @samp{-e}:
18345 @example
18346 sed -e '@var{command-1}' \
18347     -e '@var{command-2}'
18348 @end example
18350 @noindent
18351 as opposed to the equivalent:
18353 @example
18354 sed '
18355   @var{command-1}
18356   @var{command-2}
18358 @end example
18360 @noindent
18361 The following usage is sometimes equivalent:
18363 @example
18364 sed '@var{command-1};@var{command-2}'
18365 @end example
18367 but Posix says that this use of a semicolon has undefined effect if
18368 @var{command-1}'s verb is @samp{@{}, @samp{a}, @samp{b}, @samp{c},
18369 @samp{i}, @samp{r}, @samp{t}, @samp{w}, @samp{:}, or @samp{#}, so you
18370 should use semicolon only with simple scripts that do not use these
18371 verbs.
18373 Posix up to the 2008 revision requires the argument of the @option{-e}
18374 option to be a syntactically complete script.  GNU @command{sed} allows
18375 to pass multiple script fragments, each as argument of a separate
18376 @option{-e} option, that are then combined, with newlines between the
18377 fragments, and a future Posix revision may allow this as well.  This
18378 approach is not portable with script fragments ending in backslash; for
18379 example, the @command{sed} programs on Solaris 10, HP-UX 11, and AIX
18380 don't allow splitting in this case:
18382 @example
18383 $ @kbd{echo a | sed -n -e 'i\}
18384 @kbd{0'}
18386 $ @kbd{echo a | sed -n -e 'i\' -e 0}
18387 Unrecognized command: 0
18388 @end example
18390 @noindent
18391 In practice, however, this technique of joining fragments
18392 through @option{-e} works for multiple @command{sed} functions within
18393 @samp{@{} and @samp{@}}, even if that is not specified by Posix:
18395 @example
18396 @c The quote around the closing brace silences interactive zsh.
18397 $ @kbd{echo a | sed -n -e '/a/@{' -e s/a/b/ -e p -e '@}'}
18399 @end example
18401 Commands inside @{ @} brackets are further restricted.  Posix 2008 says that
18402 they cannot be preceded by addresses, @samp{!}, or @samp{;}, and that
18403 each command must be followed immediately by a newline, without any
18404 intervening blanks or semicolons.  The closing bracket must be alone on
18405 a line, other than white space preceding or following it.  However, a
18406 future version of Posix may standardize the use of addresses within brackets.
18408 Contrary to yet another urban legend, you may portably use @samp{&} in
18409 the replacement part of the @code{s} command to mean ``what was
18410 matched''.  All descendants of Unix version 7 @command{sed}
18411 (at least; we
18412 don't have first hand experience with older @command{sed} implementations) have
18413 supported it.
18415 Posix requires that you must not have any white space between
18416 @samp{!} and the following command.  It is OK to have blanks between
18417 the address and the @samp{!}.  For instance, on Solaris:
18419 @example
18420 $ @kbd{echo "foo" | sed -n '/bar/ ! p'}
18421 @error{}Unrecognized command: /bar/ ! p
18422 $ @kbd{echo "foo" | sed -n '/bar/! p'}
18423 @error{}Unrecognized command: /bar/! p
18424 $ @kbd{echo "foo" | sed -n '/bar/ !p'}
18426 @end example
18428 Posix also says that you should not combine @samp{!} and @samp{;}.  If
18429 you use @samp{!}, it is best to put it on a command that is delimited by
18430 newlines rather than @samp{;}.
18432 Also note that Posix requires that the @samp{b}, @samp{t}, @samp{r}, and
18433 @samp{w} commands be followed by exactly one space before their argument.
18434 On the other hand, no white space is allowed between @samp{:} and the
18435 subsequent label name.
18437 If a sed script is specified on the command line and ends in an
18438 @samp{a}, @samp{c}, or @samp{i} command, the last line of inserted text
18439 should be followed by a newline.  Otherwise some @command{sed}
18440 implementations (e.g., OpenBSD 3.9) do not append a newline to the
18441 inserted text.
18443 Many @command{sed} implementations (e.g., MacOS X 10.4,
18444 OpenBSD 3.9, Solaris 10
18445 @command{/usr/ucb/sed}) strip leading white space from the text of
18446 @samp{a}, @samp{c}, and @samp{i} commands.  Prepend a backslash to
18447 work around this incompatibility with Posix:
18449 @example
18450 $ @kbd{echo flushleft | sed 'a\}
18451 > @kbd{   indented}
18452 > @kbd{'}
18453 flushleft
18454 indented
18455 $ @kbd{echo foo | sed 'a\}
18456 > @kbd{\   indented}
18457 > @kbd{'}
18458 flushleft
18459    indented
18460 @end example
18462 Posix requires that with an empty regular expression, the last non-empty
18463 regular expression from either an address specification or substitution
18464 command is applied.  However, busybox 1.6.1 complains when using a
18465 substitution command with a replacement containing a back-reference to
18466 an empty regular expression; the workaround is repeating the regular
18467 expression.
18469 @example
18470 $ @kbd{echo abc | busybox sed '/a\(b\)c/ s//\1/'}
18471 sed: No previous regexp.
18472 $ @kbd{echo abc | busybox sed '/a\(b\)c/ s/a\(b\)c/\1/'}
18474 @end example
18477 @item @command{sed} (@samp{t})
18478 @c ---------------------------
18479 @prindex @command{sed} (@samp{t})
18480 Some old systems have @command{sed} that ``forget'' to reset their
18481 @samp{t} flag when starting a new cycle.  For instance on MIPS
18482 RISC/OS, and on IRIX 5.3, if you run the following @command{sed}
18483 script (the line numbers are not actual part of the texts):
18485 @example
18486 s/keep me/kept/g  # a
18487 t end             # b
18488 s/.*/deleted/g    # c
18489 :end              # d
18490 @end example
18492 @noindent
18495 @example
18496 delete me         # 1
18497 delete me         # 2
18498 keep me           # 3
18499 delete me         # 4
18500 @end example
18502 @noindent
18503 you get
18505 @example
18506 deleted
18507 delete me
18508 kept
18509 deleted
18510 @end example
18512 @noindent
18513 instead of
18515 @example
18516 deleted
18517 deleted
18518 kept
18519 deleted
18520 @end example
18522 Why?  When processing line 1, (c) matches, therefore sets the @samp{t}
18523 flag, and the output is produced.  When processing
18524 line 2, the @samp{t} flag is still set (this is the bug).  Command (a)
18525 fails to match, but @command{sed} is not supposed to clear the @samp{t}
18526 flag when a substitution fails.  Command (b) sees that the flag is set,
18527 therefore it clears it, and jumps to (d), hence you get @samp{delete me}
18528 instead of @samp{deleted}.  When processing line (3), @samp{t} is clear,
18529 (a) matches, so the flag is set, hence (b) clears the flags and jumps.
18530 Finally, since the flag is clear, line 4 is processed properly.
18532 There are two things one should remember about @samp{t} in @command{sed}.
18533 Firstly, always remember that @samp{t} jumps if @emph{some} substitution
18534 succeeded, not only the immediately preceding substitution.  Therefore,
18535 always use a fake @samp{t clear} followed by a @samp{:clear} on the next
18536 line, to reset the @samp{t} flag where needed.
18538 Secondly, you cannot rely on @command{sed} to clear the flag at each new
18539 cycle.
18541 One portable implementation of the script above is:
18543 @example
18544 t clear
18545 :clear
18546 s/keep me/kept/g
18547 t end
18548 s/.*/deleted/g
18549 :end
18550 @end example
18552 @item @command{sleep}
18553 @c ------------------
18554 @prindex @command{sleep}
18555 Using @command{sleep} is generally portable.  However, remember that
18556 adding a @command{sleep} to work around timestamp issues, with a minimum
18557 granularity of one second, doesn't scale well for parallel builds on
18558 modern machines with sub-second process completion.
18560 @item @command{sort}
18561 @c -----------------
18562 @prindex @command{sort}
18563 Remember that sort order is influenced by the current locale.  Inside
18564 @file{configure}, the C locale is in effect, but in Makefile snippets,
18565 you may need to specify @code{LC_ALL=C sort}.
18567 @item @command{tar}
18568 @c ----------------
18569 @prindex @command{tar}
18570 There are multiple file formats for @command{tar}; if you use Automake,
18571 the macro @code{AM_INIT_AUTOMAKE} has some options controlling which
18572 level of portability to use.
18574 @anchor{touch}
18575 @item @command{touch}
18576 @c ------------------
18577 @prindex @command{touch}
18578 @cindex timestamp resolution
18579 If you specify the desired timestamp (e.g., with the @option{-r}
18580 option), @command{touch} typically uses the @code{utime} or
18581 @code{utimes} system call, which can result in the same kind of
18582 timestamp truncation problems that @samp{cp -p} has.
18584 On ancient BSD systems, @command{touch} or any command that
18585 results in an empty file does not update the timestamps, so use a
18586 command like @command{echo} as a workaround.
18587 Also,
18588 GNU @command{touch} 3.16r (and presumably all before that)
18589 fails to work on SunOS 4.1.3 when the empty file is on an
18590 NFS-mounted 4.2 volume.
18591 However, these problems are no longer of practical concern.
18593 @item @command{tr}
18594 @c ---------------
18595 @prindex @command{tr}
18596 @cindex carriage return, deleting
18597 @cindex newline, deleting
18598 @cindex deleting carriage return
18599 Not all versions of @command{tr} handle all backslash character escapes.
18600 For example, Solaris 10 @command{/usr/ucb/tr} falls over, even though
18601 Solaris contains more modern @command{tr} in other locations.
18602 Using octal escapes is more portable for carriage returns, since
18603 @samp{\015} is the same for both ASCII and EBCDIC, and since use of
18604 literal carriage returns in scripts causes a number of other problems.
18605 But for other characters, like newline, using octal escapes ties the
18606 operation to ASCII, so it is better to use literal characters.
18608 @example
18609 $ @kbd{@{ echo moon; echo light; @} | /usr/ucb/tr -d '\n' ; echo}
18611 light
18612 $ @kbd{@{ echo moon; echo light; @} | /usr/bin/tr -d '\n' ; echo}
18613 moonlight
18614 $ @kbd{@{ echo moon; echo light; @} | /usr/ucb/tr -d '\012' ; echo}
18615 moonlight
18616 $ @kbd{nl='}
18617 @kbd{'; @{ echo moon; echo light; @} | /usr/ucb/tr -d "$nl" ; echo}
18618 moonlight
18619 @end example
18621 Not all versions of @command{tr} recognize ranges of characters: at
18622 least Solaris @command{/usr/bin/tr} still fails to do so.  But you can
18623 use @command{/usr/xpg4/bin/tr} instead.
18625 @example
18626 $ @kbd{echo "Hazy Fantazy" | LC_ALL=C /usr/bin/tr a-z A-Z}
18627 HAZy FAntAZy
18628 $ @kbd{echo "Hazy Fantazy" | LC_ALL=C /usr/xpg4/bin/tr a-z A-Z}
18629 HAZY FANTAZY
18630 @end example
18632 When providing two arguments, be sure the second string is at least as
18633 long as the first.
18635 @example
18636 $ @kbd{echo abc | /usr/xpg4/bin/tr bc d}
18638 $ @kbd{echo abc | coreutils/tr bc d}
18640 @end example
18642 Posix requires @command{tr} to operate on binary files.  But at least
18643 Solaris @command{/usr/ucb/tr} and @command{/usr/bin/tr} silently discard
18644 @code{NUL} in the input prior to doing any translation.  When using
18645 @command{tr} to process a binary file that may contain @code{NUL} bytes,
18646 it is necessary to use @command{/usr/xpg4/bin/tr} instead, or
18647 @command{/usr/xpg6/bin/tr} if that is available.
18649 @example
18650 $ @kbd{printf 'a\0b' | /usr/ucb/tr x x | od -An -tx1}
18651  61 62
18652 $ @kbd{printf 'a\0b' | /usr/bin/tr x x | od -An -tx1}
18653  61 62
18654 $ @kbd{printf 'a\0b' | /usr/xpg4/bin/tr x x | od -An -tx1}
18655  61 00 62
18656 @end example
18658 Solaris @command{/usr/ucb/tr} additionally fails to handle @samp{\0} as the
18659 octal escape for @code{NUL}.
18661 @example
18662 $ @kbd{printf 'abc' | /usr/ucb/tr 'bc' '\0d' | od -An -tx1}
18663  61 62 63
18664 $ @kbd{printf 'abc' | /usr/bin/tr 'bc' '\0d' | od -An -tx1}
18665  61 00 64
18666 $ @kbd{printf 'abc' | /usr/xpg4/bin/tr 'bc' '\0d' | od -An -tx1}
18667  61 00 64
18668 @end example
18670 @end table
18673 @node Portable Make
18674 @chapter Portable Make Programming
18675 @prindex @command{make}
18676 @cindex Limitations of @command{make}
18678 Writing portable makefiles is an art.  Since a makefile's commands are
18679 executed by the shell, you must consider the shell portability issues
18680 already mentioned.  However, other issues are specific to @command{make}
18681 itself.
18683 @menu
18684 * $< in Ordinary Make Rules::   $< in ordinary rules
18685 * Failure in Make Rules::       Failing portably in rules
18686 * Special Chars in Names::      Special Characters in Macro Names
18687 * Backslash-Newline-Newline::   Empty last lines in macro definitions
18688 * Backslash-Newline Comments::  Spanning comments across line boundaries
18689 * Long Lines in Makefiles::     Line length limitations
18690 * Macros and Submakes::         @code{make macro=value} and submakes
18691 * The Make Macro MAKEFLAGS::    @code{$(MAKEFLAGS)} portability issues
18692 * The Make Macro SHELL::        @code{$(SHELL)} portability issues
18693 * Parallel Make::               Parallel @command{make} quirks
18694 * Comments in Make Rules::      Other problems with Make comments
18695 * Newlines in Make Rules::      Using literal newlines in rules
18696 * obj/ and Make::               Don't name a subdirectory @file{obj}
18697 * make -k Status::              Exit status of @samp{make -k}
18698 * VPATH and Make::              @code{VPATH} woes
18699 * Single Suffix Rules::         Single suffix rules and separated dependencies
18700 * Timestamps and Make::         Subsecond timestamp resolution
18701 @end menu
18703 @node $< in Ordinary Make Rules
18704 @section @code{$<} in Ordinary Make Rules
18706 Posix says that the @samp{$<} construct in makefiles can be
18707 used only in inference rules and in the @samp{.DEFAULT} rule; its
18708 meaning in ordinary rules is unspecified.  Solaris @command{make}
18709 for instance replaces it with the empty string.  OpenBSD (3.0 and
18710 later) @command{make} diagnoses these uses and errors out.
18712 @node Failure in Make Rules
18713 @section Failure in Make Rules
18715 Posix 2008 requires that @command{make} must invoke each command with
18716 the equivalent of a @samp{sh -e -c} subshell, which causes the
18717 subshell to exit immediately if a subsidiary simple-command fails,
18718 although not all @command{make} implementations have historically
18719 followed this rule.  For
18720 example, the command @samp{touch T; rm -f U} may attempt to
18721 remove @file{U} even if the @command{touch} fails, although this is not
18722 permitted with Posix make.  One way to work around failures in simple
18723 commands is to reword them so that they always succeed, e.g., @samp{touch
18724 T || :; rm -f U}.
18725 However, even this approach can run into common bugs in BSD
18726 implementations of the @option{-e} option of @command{sh} and
18727 @command{set} (@pxref{set, , Limitations of Shell Builtins}), so if you
18728 are worried
18729 about porting to buggy BSD shells it may be simpler to migrate
18730 complicated @command{make} actions into separate scripts.
18732 @node Special Chars in Names
18733 @section Special Characters in Make Macro Names
18735 Posix limits macro names to nonempty strings containing only
18736 ASCII letters and digits, @samp{.}, and @samp{_}.  Many
18737 @command{make} implementations allow a wider variety of characters, but
18738 portable makefiles should avoid them.  It is portable to start a name
18739 with a special character, e.g., @samp{$(.FOO)}.
18741 Some ancient @command{make} implementations don't support leading
18742 underscores in macro names.  An example is NEWS-OS 4.2R.
18744 @example
18745 $ @kbd{cat Makefile}
18746 _am_include = #
18747 _am_quote =
18748 all:; @@echo this is test
18749 $ @kbd{make}
18750 Make: Must be a separator on rules line 2.  Stop.
18751 $ @kbd{cat Makefile2}
18752 am_include = #
18753 am_quote =
18754 all:; @@echo this is test
18755 $ @kbd{make -f Makefile2}
18756 this is test
18757 @end example
18759 @noindent
18760 However, this problem is no longer of practical concern.
18762 @node Backslash-Newline-Newline
18763 @section Backslash-Newline-Newline in Make Macro Values
18765 @c  This has been seen on ia64 hpux 11.20, and on one hppa hpux 10.20,
18766 @c  but another hppa hpux 10.20 didn't have it.  Bob Proulx
18767 @c  <bob@proulx.com> thinks it was in hpux 8.0 too.
18768 On some versions of HP-UX, @command{make} reads multiple newlines
18769 following a backslash, continuing to the next non-empty line.  For
18770 example,
18772 @example
18773 FOO = one \
18775 BAR = two
18777 test:
18778         : FOO is "$(FOO)"
18779         : BAR is "$(BAR)"
18780 @end example
18782 @noindent
18783 shows @code{FOO} equal to @code{one BAR = two}.  Other implementations
18784 sensibly let a backslash continue only to the immediately following
18785 line.
18787 @node Backslash-Newline Comments
18788 @section Backslash-Newline in Make Comments
18790 According to Posix, Make comments start with @code{#}
18791 and continue until an unescaped newline is reached.
18793 @example
18794 $ @kbd{cat Makefile}
18795 # A = foo \
18796       bar \
18797       baz
18799 all:
18800         @@echo ok
18801 $ @kbd{make}   # GNU make
18803 @end example
18805 @noindent
18806 However this is not always the case.  Some implementations
18807 discard everything from @code{#} through the end of the line, ignoring any
18808 trailing backslash.
18810 @example
18811 $ @kbd{pmake}  # BSD make
18812 "Makefile", line 3: Need an operator
18813 Fatal errors encountered -- cannot continue
18814 @end example
18816 @noindent
18817 Therefore, if you want to comment out a multi-line definition, prefix each
18818 line with @code{#}, not only the first.
18820 @example
18821 # A = foo \
18822 #     bar \
18823 #     baz
18824 @end example
18826 @node Long Lines in Makefiles
18827 @section Long Lines in Makefiles
18829 Tru64 5.1's @command{make} has been reported to crash when given a
18830 makefile with lines longer than around 20 kB.  Earlier versions are
18831 reported to exit with @code{Line too long} diagnostics.
18833 @node Macros and Submakes
18834 @section @code{make macro=value} and Submakes
18836 A command-line variable definition such as @code{foo=bar} overrides any
18837 definition of @code{foo} in a makefile.  Some @command{make}
18838 implementations (such as GNU @command{make}) propagate this
18839 override to subsidiary invocations of @command{make}.  Some other
18840 implementations do not pass the substitution along to submakes.
18842 @example
18843 $ @kbd{cat Makefile}
18844 foo = foo
18845 one:
18846         @@echo $(foo)
18847         $(MAKE) two
18848 two:
18849         @@echo $(foo)
18850 $ @kbd{make foo=bar}            # GNU make 3.79.1
18852 make two
18853 make[1]: Entering directory `/home/adl'
18855 make[1]: Leaving directory `/home/adl'
18856 $ @kbd{pmake foo=bar}           # BSD make
18858 pmake two
18860 @end example
18862 You have a few possibilities if you do want the @code{foo=bar} override
18863 to propagate to submakes.  One is to use the @option{-e}
18864 option, which causes all environment variables to have precedence over
18865 the makefile macro definitions, and declare foo as an environment
18866 variable:
18868 @example
18869 $ @kbd{env foo=bar make -e}
18870 @end example
18872 The @option{-e} option is propagated to submakes automatically,
18873 and since the environment is inherited between @command{make}
18874 invocations, the @code{foo} macro is overridden in
18875 submakes as expected.
18877 This syntax (@code{foo=bar make -e}) is portable only when used
18878 outside of a makefile, for instance from a script or from the
18879 command line.  When run inside a @command{make} rule, GNU
18880 @command{make} 3.80 and prior versions forget to propagate the
18881 @option{-e} option to submakes.
18883 Moreover, using @option{-e} could have unexpected side effects if your
18884 environment contains some other macros usually defined by the
18885 makefile.  (See also the note about @code{make -e} and @code{SHELL}
18886 below.)
18888 If you can foresee all macros that a user might want to override, then
18889 you can propagate them to submakes manually, from your makefile:
18891 @example
18892 foo = foo
18893 one:
18894         @@echo $(foo)
18895         $(MAKE) foo=$(foo) two
18896 two:
18897         @@echo $(foo)
18898 @end example
18900 Another way to propagate a variable to submakes in a portable way is to
18901 expand an extra variable in every invocation of @samp{$(MAKE)} within
18902 your makefile:
18904 @example
18905 foo = foo
18906 one:
18907         @@echo $(foo)
18908         $(MAKE) $(SUBMAKEFLAGS) two
18909 two:
18910         @@echo $(foo)
18911 @end example
18913 Users must be aware that this technique is in use to take advantage of
18914 it, e.g.@: with @code{make foo=bar SUBMAKEFLAGS='foo=bar'}, but it
18915 allows any macro to be overridden.  Makefiles generated by
18916 @command{automake} use this technique, expanding @code{$(AM_MAKEFLAGS)}
18917 on the command lines of submakes (@pxref{Subdirectories, , Automake,
18918 automake, GNU Automake}).
18920 @node The Make Macro MAKEFLAGS
18921 @section The Make Macro MAKEFLAGS
18922 @cindex @code{MAKEFLAGS} and @command{make}
18923 @cindex @command{make} and @code{MAKEFLAGS}
18925 Posix requires @command{make} to use @code{MAKEFLAGS} to affect the
18926 current and recursive invocations of make, but allows implementations
18927 several formats for the variable.  It is tricky to parse
18928 @code{$MAKEFLAGS} to determine whether @option{-s} for silent execution
18929 or @option{-k} for continued execution are in effect.  For example, you
18930 cannot assume that the first space-separated word in @code{$MAKEFLAGS}
18931 contains single-letter options, since in the Cygwin version of
18932 GNU @command{make} it is either @option{--unix} or
18933 @option{--win32} with the second word containing single-letter options.
18935 @example
18936 $ @kbd{cat Makefile}
18937 all:
18938         @@echo MAKEFLAGS = $(MAKEFLAGS)
18939 $ @kbd{make}
18940 MAKEFLAGS = --unix
18941 $ @kbd{make -k}
18942 MAKEFLAGS = --unix -k
18943 @end example
18945 @node The Make Macro SHELL
18946 @section The Make Macro @code{SHELL}
18947 @cindex @code{SHELL} and @command{make}
18948 @cindex @command{make} and @code{SHELL}
18950 Posix-compliant @command{make} internally uses the @code{$(SHELL)}
18951 macro to spawn shell processes and execute Make rules.  This
18952 is a builtin macro supplied by @command{make}, but it can be modified
18953 by a makefile or by a command-line argument.
18955 Not all @command{make} implementations define this @code{SHELL} macro.
18956 Tru64
18957 @command{make} is an example; this implementation always uses
18958 @code{/bin/sh}.  So it's a good idea to always define @code{SHELL} in
18959 your makefiles.  If you use Autoconf, do
18961 @example
18962 SHELL = @@SHELL@@
18963 @end example
18965 @noindent
18966 If you use Automake, this is done for you.
18968 Do not force @code{SHELL = /bin/sh} because that is not correct
18969 everywhere.  Remember, @file{/bin/sh} is not Posix compliant on many
18970 systems, such as FreeBSD 4, NetBSD 3, AIX 3, Solaris 10, or Tru64.
18971 Additionally, DJGPP lacks @code{/bin/sh}, and when its
18972 GNU @command{make} port sees such a setting it enters a
18973 special emulation mode where features like pipes and redirections are
18974 emulated on top of DOS's @command{command.com}.  Unfortunately this
18975 emulation is incomplete; for instance it does not handle command
18976 substitutions.  Using @code{@@SHELL@@} means that your makefile will
18977 benefit from the same improved shell, such as @command{bash} or
18978 @command{ksh}, that was discovered during @command{configure}, so that
18979 you aren't fighting two different sets of shell bugs between the two
18980 contexts.
18982 Posix-compliant @command{make} should never acquire the value of
18983 $(SHELL) from the environment, even when @code{make -e} is used
18984 (otherwise, think about what would happen to your rules if
18985 @code{SHELL=/bin/tcsh}).
18987 However not all @command{make} implementations have this exception.
18988 For instance it's not surprising that Tru64 @command{make} doesn't
18989 protect @code{SHELL}, since it doesn't use it.
18991 @example
18992 $ @kbd{cat Makefile}
18993 SHELL = /bin/sh
18994 FOO = foo
18995 all:
18996         @@echo $(SHELL)
18997         @@echo $(FOO)
18998 $ @kbd{env SHELL=/bin/tcsh FOO=bar make -e}   # Tru64 Make
18999 /bin/tcsh
19001 $ @kbd{env SHELL=/bin/tcsh FOO=bar gmake -e}  # GNU make
19002 /bin/sh
19004 @end example
19006 Conversely, @command{make} is not supposed to export any changes to the
19007 macro @code{SHELL} to child processes.  Again, many implementations
19008 break this rule:
19010 @example
19011 $ @kbd{cat Makefile}
19012 all:
19013         @@echo $(SHELL)
19014         @@printenv SHELL
19015 $ @kbd{env SHELL=sh make -e SHELL=/bin/ksh}   # BSD Make, GNU make 3.80
19016 /bin/ksh
19017 /bin/ksh
19018 $ @kbd{env SHELL=sh gmake -e SHELL=/bin/ksh}  # GNU make 3.81
19019 /bin/ksh
19021 @end example
19023 @node Parallel Make
19024 @section Parallel Make
19025 @cindex Parallel @command{make}
19027 Support for parallel execution in @command{make} implementation varies.
19028 Generally, using GNU make is your best bet.  When NetBSD
19029 @command{make} is invoked with @option{-j@var{N}}, it will reuse the
19030 same shell for multiple commands within one recipe.  This can have
19031 unexpected consequences.@footnote{Note that GNU make has
19032 heuristics to avoid spawning a shell at all if the command is deemed
19033 safe to be executed directly.} For example, change of directories or
19034 variables persist between commands:
19036 @example
19037 all:
19038         @@var=value; cd /; pwd; echo $$var; echo $$$$
19039         @@pwd; echo $$var; echo $$$$
19040 @end example
19042 @noindent
19043 may output the following with @code{make -j1}:
19045 @example
19046 --- all ---
19048 value
19049 32235
19051 value
19052 32235
19053 @end example
19055 while without @option{-j1}, or with @option{-B}, the output looks less
19056 surprising:
19058 @example
19060 value
19061 32238
19062 /tmp
19064 32239
19065 @end example
19067 Another consequence of this is that, if one command in a recipe uses
19068 @code{exit 0} to indicate a successful exit, the shell will be gone
19069 and the remaining commands of this recipe will not be executed.
19071 The above example also shows additional status output NetBSD
19072 @command{make} produces in parallel mode for targets being updated.
19074 Furthermore, parallel NetBSD @command{make} will route standard error
19075 from commands that it spawns into its own standard output, and may
19076 remove leading whitespace from output lines.
19078 You can avoid these issues by using the @option{-B} option to enable
19079 compatibility semantics.  However, that will effectively also disable
19080 all parallelism as that will cause prerequisites to be updated in the
19081 order they are listed in a rule.
19083 @node Comments in Make Rules
19084 @section Comments in Make Rules
19085 @cindex Comments in @file{Makefile} rules
19086 @cindex @file{Makefile} rules and comments
19088 Never put comments in a rule.
19090 Some @command{make} treat anything starting with a tab as a command for
19091 the current rule, even if the tab is immediately followed by a @code{#}.
19092 The @command{make} from Tru64 Unix V5.1 is one of them.  The following
19093 makefile runs @code{# foo} through the shell.
19095 @example
19096 all:
19097         # foo
19098 @end example
19100 As a workaround, you can use the @command{:} no-op command with a string
19101 argument that gets ignored:
19103 @example
19104 all:
19105         : "foo"
19106 @end example
19108 @node Newlines in Make Rules
19109 @section Newlines in Make Rules
19110 @cindex Newlines in @file{Makefile} rules
19111 @cindex @file{Makefile} rules and newlines
19113 In shell scripts, newlines can be used inside string literals.  But in
19114 the shell statements of @file{Makefile} rules, this is not possible:
19115 A newline not preceded by a backslash is a separator between shell
19116 statements.  Whereas a newline that is preceded by a backslash becomes
19117 part of the shell statement according to POSIX, but gets replaced,
19118 together with the backslash that precedes it, by a space in GNU
19119 @command{make} 3.80 and older.  So, how can a newline be used in a string
19120 literal?
19122 The trick is to set up a shell variable that contains a newline:
19124 @example
19125 nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"
19126 @end example
19128 For example, in order to create a multiline @samp{sed} expression that
19129 inserts a blank line after every line of a file, this code can be used:
19131 @example
19132 nlinit=`echo 'nl="'; echo '"'`; eval "$$nlinit"; \
19133 sed -e "s/\$$/\\$$@{nl@}/" < input > output
19134 @end example
19136 @node obj/ and Make
19137 @section The @file{obj/} Subdirectory and Make
19138 @cindex @file{obj/}, subdirectory
19139 @cindex BSD @command{make} and @file{obj/}
19141 Never name one of your subdirectories @file{obj/} if you don't like
19142 surprises.
19144 If an @file{obj/} directory exists, BSD @command{make} enters it
19145 before reading the makefile.  Hence the makefile in the
19146 current directory is not read.
19148 @example
19149 $ @kbd{cat Makefile}
19150 all:
19151         echo Hello
19152 $ @kbd{cat obj/Makefile}
19153 all:
19154         echo World
19155 $ @kbd{make}      # GNU make
19156 echo Hello
19157 Hello
19158 $ @kbd{pmake}     # BSD make
19159 echo World
19160 World
19161 @end example
19163 @node make -k Status
19164 @section Exit Status of @code{make -k}
19165 @cindex @code{make -k}
19167 Do not rely on the exit status of @code{make -k}.  Some implementations
19168 reflect whether they encountered an error in their exit status; other
19169 implementations always succeed.
19171 @example
19172 $ @kbd{cat Makefile}
19173 all:
19174         false
19175 $ @kbd{make -k; echo exit status: $?}    # GNU make
19176 false
19177 make: *** [all] Error 1
19178 exit status: 2
19179 $ @kbd{pmake -k; echo exit status: $?}   # BSD make
19180 false
19181 *** Error code 1 (continuing)
19182 exit status: 0
19183 @end example
19185 @node VPATH and Make
19186 @section @code{VPATH} and Make
19187 @cindex @code{VPATH}
19189 Posix does not specify the semantics of @code{VPATH}.  Typically,
19190 @command{make} supports @code{VPATH}, but its implementation is not
19191 consistent.
19193 Autoconf and Automake support makefiles whose usages of @code{VPATH} are
19194 portable to recent-enough popular implementations of @command{make}, but
19195 to keep the resulting makefiles portable, a package's makefile
19196 prototypes must take the following issues into account.  These issues
19197 are complicated and are often poorly understood, and installers who use
19198 @code{VPATH} should expect to find many bugs in this area.  If you use
19199 @code{VPATH}, the simplest way to avoid these portability bugs is to
19200 stick with GNU @command{make}, since it is the most
19201 commonly-used @command{make} among Autoconf users.
19203 Here are some known issues with some @code{VPATH}
19204 implementations.
19206 @menu
19207 * Variables listed in VPATH::   @code{VPATH} must be literal on ancient hosts
19208 * VPATH and Double-colon::      Problems with @samp{::} on ancient hosts
19209 * $< in Explicit Rules::        @code{$<} does not work in ordinary rules
19210 * Automatic Rule Rewriting::    @code{VPATH} goes wild on Solaris
19211 * Tru64 Directory Magic::       @command{mkdir} goes wild on Tru64
19212 * Make Target Lookup::          More details about @code{VPATH} lookup
19213 @end menu
19215 @node Variables listed in VPATH
19216 @subsection Variables listed in @code{VPATH}
19217 @cindex @code{VPATH} and variables
19218 @cindex variables and @code{VPATH}
19220 Do not set @code{VPATH} to the value of another variable, for example
19221 @samp{VPATH = $(srcdir)}, because some ancient versions of
19222 @command{make} do not do variable substitutions on the value of
19223 @code{VPATH}.  For example, use this
19225 @example
19226 srcdir = @@srcdir@@
19227 VPATH = @@srcdir@@
19228 @end example
19230 @noindent
19231 rather than @samp{VPATH = $(srcdir)}.  Note that with GNU
19232 Automake, there is no need to set this yourself.
19234 @node VPATH and Double-colon
19235 @subsection @code{VPATH} and Double-colon Rules
19236 @cindex @code{VPATH} and double-colon rules
19237 @cindex double-colon rules and @code{VPATH}
19239 With ancient versions of Sun @command{make},
19240 any assignment to @code{VPATH} causes @command{make} to execute only
19241 the first set of double-colon rules.
19242 However, this problem is no longer of practical concern.
19244 @node $< in Explicit Rules
19245 @subsection @code{$<} Not Supported in Explicit Rules
19246 @cindex explicit rules, @code{$<}, and @code{VPATH}
19247 @cindex @code{$<}, explicit rules, and @code{VPATH}
19248 @cindex @code{VPATH}, explicit rules, and @code{$<}
19250 Using @code{$<} in explicit rules is not portable.
19251 The prerequisite file must be named explicitly in the rule.  If you want
19252 to find the prerequisite via a @code{VPATH} search, you have to code the
19253 whole thing manually.  @xref{Build Directories}.
19255 @node Automatic Rule Rewriting
19256 @subsection Automatic Rule Rewriting
19257 @cindex @code{VPATH} and automatic rule rewriting
19258 @cindex automatic rule rewriting and @code{VPATH}
19260 Some @command{make} implementations, such as Solaris and Tru64,
19261 search for prerequisites in @code{VPATH} and
19262 then rewrite each occurrence as a plain word in the rule.
19263 For instance:
19265 @example
19266 # This isn't portable to GNU make.
19267 VPATH = ../pkg/src
19268 f.c: if.c
19269         cp if.c f.c
19270 @end example
19272 @noindent
19273 executes @code{cp ../pkg/src/if.c f.c} if @file{if.c} is
19274 found in @file{../pkg/src}.
19276 However, this rule leads to real problems in practice.  For example, if
19277 the source directory contains an ordinary file named @file{test} that is
19278 used in a dependency, Solaris @command{make} rewrites commands like
19279 @samp{if test -r foo; @dots{}} to @samp{if ../pkg/src/test -r foo;
19280 @dots{}}, which is typically undesirable.  To avoid this problem,
19281 portable makefiles should never mention a source file whose name is that
19282 of a shell keyword like @file{until} or a shell command like
19283 @command{cat} or @command{gcc} or @command{test}.
19285 Because of these problems GNU @command{make} and many other
19286 @command{make} implementations do not rewrite commands, so portable
19287 makefiles should
19288 search @code{VPATH} manually.  It is tempting to write this:
19290 @smallexample
19291 # This isn't portable to Solaris make.
19292 VPATH = ../pkg/src
19293 f.c: if.c
19294         cp `test -f if.c || echo $(VPATH)/`if.c f.c
19295 @end smallexample
19297 @noindent
19298 However, the ``prerequisite rewriting'' still applies here.  So if
19299 @file{if.c} is in @file{../pkg/src}, Solaris and Tru64 @command{make}
19300 execute
19302 @smallexample
19303 cp `test -f ../pkg/src/if.c || echo ../pkg/src/`if.c f.c
19304 @end smallexample
19306 @noindent
19307 which reduces to
19309 @example
19310 cp if.c f.c
19311 @end example
19313 @noindent
19314 and thus fails.  Oops.
19316 A simple workaround, and good practice anyway, is to use @samp{$?} and
19317 @samp{$@@} when possible:
19319 @smallexample
19320 VPATH = ../pkg/src
19321 f.c: if.c
19322         cp $? $@@
19323 @end smallexample
19325 @noindent
19326 but this does not generalize well to commands with multiple
19327 prerequisites.  A more general workaround is to rewrite the rule so that
19328 the prerequisite @file{if.c} never appears as a plain word.  For
19329 example, these three rules would be safe, assuming @file{if.c} is in
19330 @file{../pkg/src} and the other files are in the working directory:
19332 @smallexample
19333 VPATH = ../pkg/src
19334 f.c: if.c f1.c
19335         cat `test -f ./if.c || echo $(VPATH)/`if.c f1.c >$@@
19336 g.c: if.c g1.c
19337         cat `test -f 'if.c' || echo $(VPATH)/`if.c g1.c >$@@
19338 h.c: if.c h1.c
19339         cat `test -f "if.c" || echo $(VPATH)/`if.c h1.c >$@@
19340 @end smallexample
19342 Things get worse when your prerequisites are in a macro.
19344 @example
19345 VPATH = ../pkg/src
19346 HEADERS = f.h g.h h.h
19347 install-HEADERS: $(HEADERS)
19348         for i in $(HEADERS); do \
19349           $(INSTALL) -m 644 \
19350             `test -f $$i || echo $(VPATH)/`$$i \
19351             $(DESTDIR)$(includedir)/$$i; \
19352 @c $$ restore font-lock
19353         done
19354 @end example
19356 The above @code{install-HEADERS} rule is not Solaris-proof because @code{for
19357 i in $(HEADERS);} is expanded to @code{for i in f.h g.h h.h;}
19358 where @code{f.h} and @code{g.h} are plain words and are hence
19359 subject to @code{VPATH} adjustments.
19361 If the three files are in @file{../pkg/src}, the rule is run as:
19363 @example
19364 for i in ../pkg/src/f.h ../pkg/src/g.h h.h; do \
19365   install -m 644 \
19366      `test -f $i || echo ../pkg/src/`$i \
19367      /usr/local/include/$i; \
19368 done
19369 @end example
19371 where the two first @command{install} calls fail.  For instance,
19372 consider the @code{f.h} installation:
19374 @example
19375 install -m 644 \
19376   `test -f ../pkg/src/f.h || \
19377     echo ../pkg/src/ \
19378   `../pkg/src/f.h \
19379   /usr/local/include/../pkg/src/f.h;
19380 @end example
19382 @noindent
19383 It reduces to:
19385 @example
19386 install -m 644 \
19387   ../pkg/src/f.h \
19388   /usr/local/include/../pkg/src/f.h;
19389 @end example
19391 Note that the manual @code{VPATH} search did not cause any problems here;
19392 however this command installs @file{f.h} in an incorrect directory.
19394 Trying to quote @code{$(HEADERS)} in some way, as we did for
19395 @code{foo.c} a few makefiles ago, does not help:
19397 @example
19398 install-HEADERS: $(HEADERS)
19399         headers='$(HEADERS)'; \
19400         for i in $$headers; do \
19401           $(INSTALL) -m 644 \
19402             `test -f $$i || echo $(VPATH)/`$$i \
19403             $(DESTDIR)$(includedir)/$$i; \
19404         done
19405 @end example
19407 Now, @code{headers='$(HEADERS)'} macro-expands to:
19409 @example
19410 headers='f.h g.h h.h'
19411 @end example
19413 @noindent
19414 but @code{g.h} is still a plain word.  (As an aside, the idiom
19415 @code{headers='$(HEADERS)'; for i in $$headers;} is a good
19416 idea if @code{$(HEADERS)} can be empty, because some shells diagnose a
19417 syntax error on @code{for i in;}.)
19419 One workaround is to strip this unwanted @file{../pkg/src/} prefix manually:
19421 @example
19422 VPATH = ../pkg/src
19423 HEADERS = f.h g.h h.h
19424 install-HEADERS: $(HEADERS)
19425         headers='$(HEADERS)'; \
19426         for i in $$headers; do \
19427           i=`expr "$$i" : '$(VPATH)/\(.*\)'`;
19428           $(INSTALL) -m 644 \
19429             `test -f $$i || echo $(VPATH)/`$$i \
19430             $(DESTDIR)$(includedir)/$$i; \
19431 @c $$ restore font-lock
19432         done
19433 @end example
19435 Automake does something similar.  However the above hack works only if
19436 the files listed in @code{HEADERS} are in the current directory or a
19437 subdirectory; they should not be in an enclosing directory.  If we had
19438 @code{HEADERS = ../f.h}, the above fragment would fail in a VPATH
19439 build with Tru64 @command{make}.  The reason is that not only does
19440 Tru64 @command{make} rewrite dependencies, but it also simplifies
19441 them.  Hence @code{../f.h} becomes @code{../pkg/f.h} instead of
19442 @code{../pkg/src/../f.h}.  This obviously defeats any attempt to strip
19443 a leading @file{../pkg/src/} component.
19445 The following example makes the behavior of Tru64 @command{make}
19446 more apparent.
19448 @example
19449 $ @kbd{cat Makefile}
19450 VPATH = sub
19451 all: ../foo
19452         echo ../foo
19453 $ @kbd{ls}
19454 Makefile foo
19455 $ @kbd{make}
19456 echo foo
19458 @end example
19460 @noindent
19461 Dependency @file{../foo} was found in @file{sub/../foo}, but Tru64
19462 @command{make} simplified it as @file{foo}.  (Note that the @file{sub/}
19463 directory does not even exist, this just means that the simplification
19464 occurred before the file was checked for.)
19466 For the record here is how SunOS 4 @command{make} behaves on this
19467 example.
19469 @smallexample
19470 $ @kbd{make}
19471 make: Fatal error: Don't know how to make target `../foo'
19472 $ @kbd{mkdir sub}
19473 $ @kbd{make}
19474 echo sub/../foo
19475 sub/../foo
19476 @end smallexample
19479 @node Tru64 Directory Magic
19480 @subsection Tru64 @command{make} Creates Prerequisite Directories Magically
19481 @cindex @code{VPATH} and prerequisite directories
19482 @cindex prerequisite directories and @code{VPATH}
19484 When a prerequisite is a subdirectory of @code{VPATH}, Tru64
19485 @command{make} creates it in the current directory.
19487 @example
19488 $ @kbd{mkdir -p foo/bar build}
19489 $ @kbd{cd build}
19490 $ @kbd{cat >Makefile <<END
19491 VPATH = ..
19492 all: foo/bar
19493 END}
19494 $ @kbd{make}
19495 mkdir foo
19496 mkdir foo/bar
19497 @end example
19499 This can yield unexpected results if a rule uses a manual @code{VPATH}
19500 search as presented before.
19502 @example
19503 VPATH = ..
19504 all : foo/bar
19505         command `test -d foo/bar || echo ../`foo/bar
19506 @end example
19508 The above @command{command} is run on the empty @file{foo/bar}
19509 directory that was created in the current directory.
19511 @node Make Target Lookup
19512 @subsection Make Target Lookup
19513 @cindex @code{VPATH}, resolving target pathnames
19515 GNU @command{make} uses a complex algorithm to decide when it
19516 should use files found via a @code{VPATH} search.  @xref{Search
19517 Algorithm, , How Directory Searches are Performed, make, The GNU Make
19518 Manual}.
19520 If a target needs to be rebuilt, GNU @command{make} discards the
19521 file name found during the @code{VPATH} search for this target, and
19522 builds the file locally using the file name given in the makefile.
19523 If a target does not need to be rebuilt, GNU @command{make} uses the
19524 file name found during the @code{VPATH} search.
19526 Other @command{make} implementations, like NetBSD @command{make}, are
19527 easier to describe: the file name found during the @code{VPATH} search
19528 is used whether the target needs to be rebuilt or not.  Therefore
19529 new files are created locally, but existing files are updated at their
19530 @code{VPATH} location.
19532 OpenBSD and FreeBSD @command{make}, however,
19533 never perform a
19534 @code{VPATH} search for a dependency that has an explicit rule.
19535 This is extremely annoying.
19537 When attempting a @code{VPATH} build for an autoconfiscated package
19538 (e.g., @code{mkdir build && cd build && ../configure}), this means
19540 @command{make} builds everything locally in the @file{build}
19541 directory, while BSD @command{make} builds new files locally and
19542 updates existing files in the source directory.
19544 @example
19545 $ @kbd{cat Makefile}
19546 VPATH = ..
19547 all: foo.x bar.x
19548 foo.x bar.x: newer.x
19549         @@echo Building $@@
19550 $ @kbd{touch ../bar.x}
19551 $ @kbd{touch ../newer.x}
19552 $ @kbd{make}        # GNU make
19553 Building foo.x
19554 Building bar.x
19555 $ @kbd{pmake}       # NetBSD make
19556 Building foo.x
19557 Building ../bar.x
19558 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
19559 Building foo.x
19560 Building bar.x
19561 $ @kbd{tmake}       # Tru64 make
19562 Building foo.x
19563 Building bar.x
19564 $ @kbd{touch ../bar.x}
19565 $ @kbd{make}        # GNU make
19566 Building foo.x
19567 $ @kbd{pmake}       # NetBSD make
19568 Building foo.x
19569 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
19570 Building foo.x
19571 Building bar.x
19572 $ @kbd{tmake}       # Tru64 make
19573 Building foo.x
19574 Building bar.x
19575 @end example
19577 Note how NetBSD @command{make} updates @file{../bar.x} in its
19578 VPATH location, and how FreeBSD, OpenBSD, and Tru64
19579 @command{make} always
19580 update @file{bar.x}, even when @file{../bar.x} is up to date.
19582 Another point worth mentioning is that once GNU @command{make} has
19583 decided to ignore a @code{VPATH} file name (e.g., it ignored
19584 @file{../bar.x} in the above example) it continues to ignore it when
19585 the target occurs as a prerequisite of another rule.
19587 The following example shows that GNU @command{make} does not look up
19588 @file{bar.x} in @code{VPATH} before performing the @code{.x.y} rule,
19589 because it ignored the @code{VPATH} result of @file{bar.x} while running
19590 the @code{bar.x: newer.x} rule.
19592 @example
19593 $ @kbd{cat Makefile}
19594 VPATH = ..
19595 all: bar.y
19596 bar.x: newer.x
19597         @@echo Building $@@
19598 .SUFFIXES: .x .y
19599 .x.y:
19600         cp $< $@@
19601 $ @kbd{touch ../bar.x}
19602 $ @kbd{touch ../newer.x}
19603 $ @kbd{make}        # GNU make
19604 Building bar.x
19605 cp bar.x bar.y
19606 cp: cannot stat `bar.x': No such file or directory
19607 make: *** [bar.y] Error 1
19608 $ @kbd{pmake}       # NetBSD make
19609 Building ../bar.x
19610 cp ../bar.x bar.y
19611 $ @kbd{rm bar.y}
19612 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
19613 echo Building bar.x
19614 cp bar.x bar.y
19615 cp: cannot stat `bar.x': No such file or directory
19616 *** Error code 1
19617 $ @kbd{tmake}       # Tru64 make
19618 Building bar.x
19619 cp: bar.x: No such file or directory
19620 *** Exit 1
19621 @end example
19623 Note that if you drop away the command from the @code{bar.x: newer.x}
19624 rule, GNU @command{make} magically starts to work: it
19625 knows that @code{bar.x} hasn't been updated, therefore it doesn't
19626 discard the result from @code{VPATH} (@file{../bar.x}) in succeeding
19627 uses.  Tru64 also works, but FreeBSD and OpenBSD
19628 still don't.
19630 @example
19631 $ @kbd{cat Makefile}
19632 VPATH = ..
19633 all: bar.y
19634 bar.x: newer.x
19635 .SUFFIXES: .x .y
19636 .x.y:
19637         cp $< $@@
19638 $ @kbd{touch ../bar.x}
19639 $ @kbd{touch ../newer.x}
19640 $ @kbd{make}        # GNU make
19641 cp ../bar.x bar.y
19642 $ @kbd{rm bar.y}
19643 $ @kbd{pmake}       # NetBSD make
19644 cp ../bar.x bar.y
19645 $ @kbd{rm bar.y}
19646 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
19647 cp bar.x bar.y
19648 cp: cannot stat `bar.x': No such file or directory
19649 *** Error code 1
19650 $ @kbd{tmake}       # Tru64 make
19651 cp ../bar.x bar.y
19652 @end example
19654 It seems the sole solution that would please every @command{make}
19655 implementation is to never rely on @code{VPATH} searches for targets.
19656 In other words, @code{VPATH} should be reserved to unbuilt sources.
19659 @node Single Suffix Rules
19660 @section Single Suffix Rules and Separated Dependencies
19661 @cindex Single Suffix Inference Rule
19662 @cindex Rule, Single Suffix Inference
19663 A @dfn{Single Suffix Rule} is basically a usual suffix (inference) rule
19664 (@samp{.from.to:}), but which @emph{destination} suffix is empty
19665 (@samp{.from:}).
19667 @cindex Separated Dependencies
19668 @dfn{Separated dependencies} simply refers to listing the prerequisite
19669 of a target, without defining a rule.  Usually one can list on the one
19670 hand side, the rules, and on the other hand side, the dependencies.
19672 Solaris @command{make} does not support separated dependencies for
19673 targets defined by single suffix rules:
19675 @example
19676 $ @kbd{cat Makefile}
19677 .SUFFIXES: .in
19678 foo: foo.in
19679 .in:
19680         cp $< $@@
19681 $ @kbd{touch foo.in}
19682 $ @kbd{make}
19683 $ @kbd{ls}
19684 Makefile  foo.in
19685 @end example
19687 @noindent
19688 while GNU Make does:
19690 @example
19691 $ @kbd{gmake}
19692 cp foo.in foo
19693 $ @kbd{ls}
19694 Makefile  foo       foo.in
19695 @end example
19697 Note it works without the @samp{foo: foo.in} dependency.
19699 @example
19700 $ @kbd{cat Makefile}
19701 .SUFFIXES: .in
19702 .in:
19703         cp $< $@@
19704 $ @kbd{make foo}
19705 cp foo.in foo
19706 @end example
19708 @noindent
19709 and it works with double suffix inference rules:
19711 @example
19712 $ @kbd{cat Makefile}
19713 foo.out: foo.in
19714 .SUFFIXES: .in .out
19715 .in.out:
19716         cp $< $@@
19717 $ @kbd{make}
19718 cp foo.in foo.out
19719 @end example
19721 As a result, in such a case, you have to write target rules.
19723 @node Timestamps and Make
19724 @section Timestamp Resolution and Make
19725 @cindex timestamp resolution
19726 Traditionally, file timestamps had 1-second resolution, and
19727 @command{make} used those timestamps to determine whether one file was
19728 newer than the other.  However, many modern file systems have
19729 timestamps with 1-nanosecond resolution.  Some @command{make}
19730 implementations look at the entire timestamp; others ignore the
19731 fractional part, which can lead to incorrect results.  Normally this
19732 is not a problem, but in some extreme cases you may need to use tricks
19733 like @samp{sleep 1} to work around timestamp truncation bugs.
19735 Commands like @samp{cp -p} and @samp{touch -r} typically do not copy
19736 file timestamps to their full resolutions (@pxref{touch, , Limitations of Usual
19737 Tools}).  Hence you should be wary of rules like this:
19739 @example
19740 dest: src
19741         cp -p src dest
19742 @end example
19744 as @file{dest} often appears to be older than @file{src} after the
19745 timestamp is truncated, and this can cause @command{make} to do
19746 needless rework the next time it is invoked.  To work around this
19747 problem, you can use a timestamp file, e.g.:
19749 @example
19750 dest-stamp: src
19751         cp -p src dest
19752         date >dest-stamp
19753 @end example
19758 @c ======================================== Portable C and C++ Programming
19760 @node Portable C and C++
19761 @chapter Portable C and C++ Programming
19762 @cindex Portable C and C++ programming
19764 C and C++ programs often use low-level features of the underlying
19765 system, and therefore are often more difficult to make portable to other
19766 platforms.
19768 Several standards have been developed to help make your programs more
19769 portable.  If you write programs with these standards in mind, you can
19770 have greater confidence that your programs work on a wide variety
19771 of systems.
19772 @ifhtml
19773 @uref{http://@/gcc.gnu.org/@/onlinedocs/@/gcc/@/Standards.html, Language
19774 Standards Supported by GCC}
19775 @end ifhtml
19776 @ifnothtml
19777 @xref{Standards, , Language Standards Supported by
19778 GCC, gcc, Using the GNU Compiler Collection
19779 (GCC)},
19780 @end ifnothtml
19781 for a list of C-related standards.  Many programs also assume the
19782 @uref{http://@/www.opengroup.org/@/susv3, Posix standard}.
19784 Some old code is written to be portable to K&R C, which predates any C
19785 standard.  K&R C compilers are no longer of practical interest, though,
19786 and the rest of section assumes at least C89, the first C standard.
19788 Program portability is a huge topic, and this section can only briefly
19789 introduce common pitfalls.  @xref{System Portability, , Portability
19790 between System Types, standards, GNU Coding Standards}, for
19791 more information.
19793 @menu
19794 * Varieties of Unportability::  How to make your programs unportable
19795 * Integer Overflow::            When integers get too large
19796 * Preprocessor Arithmetic::     @code{#if} expression problems
19797 * Null Pointers::               Properties of null pointers
19798 * Buffer Overruns::             Subscript errors and the like
19799 * Volatile Objects::            @code{volatile} and signals
19800 * Floating Point Portability::  Portable floating-point arithmetic
19801 * Exiting Portably::            Exiting and the exit status
19802 @end menu
19804 @node Varieties of Unportability
19805 @section Varieties of Unportability
19806 @cindex portability
19808 Autoconf tests and ordinary programs often need to test what is allowed
19809 on a system, and therefore they may need to deliberately exceed the
19810 boundaries of what the standards allow, if only to see whether an
19811 optional feature is present.  When you write such a program, you should
19812 keep in mind the difference between constraints, unspecified behavior,
19813 and undefined behavior.
19815 In C, a @dfn{constraint} is a rule that the compiler must enforce.  An
19816 example constraint is that C programs must not declare a bit-field with
19817 negative width.  Tests can therefore reliably assume that programs with
19818 negative-width bit-fields are rejected by a compiler that conforms
19819 to the standard.
19821 @dfn{Unspecified behavior} is valid behavior, where the standard allows
19822 multiple possibilities.  For example, the order of evaluation of
19823 function arguments is unspecified.  Some unspecified behavior is
19824 @dfn{implementation-defined}, i.e., documented by the implementation,
19825 but since Autoconf tests cannot read the documentation they cannot
19826 distinguish between implementation-defined and other unspecified
19827 behavior.  It is common for Autoconf tests to probe implementations to
19828 determine otherwise-unspecified behavior.
19830 @dfn{Undefined behavior} is invalid behavior, where the standard allows
19831 the implementation to do anything it pleases.  For example,
19832 dereferencing a null pointer leads to undefined behavior.  If possible,
19833 test programs should avoid undefined behavior, since a program with
19834 undefined behavior might succeed on a test that should fail.
19836 The above rules apply to programs that are intended to conform to the
19837 standard.  However, strictly-conforming programs are quite rare, since
19838 the standards are so limiting.  A major goal of Autoconf is to support
19839 programs that use implementation features not described by the standard,
19840 and it is fairly common for test programs to violate the above rules, if
19841 the programs work well enough in practice.
19843 @node Integer Overflow
19844 @section Integer Overflow
19845 @cindex integer overflow
19846 @cindex overflow, signed integer
19847 @cindex signed integer overflow
19848 @cindex wraparound arithmetic
19850 In practice many portable C programs assume that signed integer overflow wraps
19851 around reliably using two's complement arithmetic.  Yet the C standard
19852 says that program behavior is undefined on overflow, and in a few cases
19853 C programs do not work on some modern implementations because their
19854 overflows do not wrap around as their authors expected.  Conversely, in
19855 signed integer remainder, the C standard requires overflow
19856 behavior that is commonly not implemented.
19858 @menu
19859 * Integer Overflow Basics::      Why integer overflow is a problem
19860 * Signed Overflow Examples::     Examples of code assuming wraparound
19861 * Optimization and Wraparound::  Optimizations that break uses of wraparound
19862 * Signed Overflow Advice::       Practical advice for signed overflow issues
19863 * Signed Integer Division::      @code{INT_MIN / -1} and @code{INT_MIN % -1}
19864 @end menu
19866 @node Integer Overflow Basics
19867 @subsection Basics of Integer Overflow
19868 @cindex integer overflow
19869 @cindex overflow, signed integer
19870 @cindex signed integer overflow
19871 @cindex wraparound arithmetic
19873 In languages like C, unsigned integer overflow reliably wraps around;
19874 e.g., @code{UINT_MAX + 1} yields zero.
19875 This is guaranteed by the C standard and is
19876 portable in practice, unless you specify aggressive,
19877 nonstandard optimization options
19878 suitable only for special applications.
19880 In contrast, the C standard says that signed integer overflow leads to
19881 undefined behavior where a program can do anything, including dumping
19882 core or overrunning a buffer.  The misbehavior can even precede the
19883 overflow.  Such an overflow can occur during addition, subtraction,
19884 multiplication, division, and left shift.
19886 Despite this requirement of the standard, many C programs and Autoconf
19887 tests assume that signed integer overflow silently wraps around modulo a
19888 power of two, using two's complement arithmetic, so long as you cast the
19889 resulting value to a signed integer type or store it into a signed
19890 integer variable.  If you use conservative optimization flags, such
19891 programs are generally portable to the vast majority of modern
19892 platforms, with a few exceptions discussed later.
19894 For historical reasons the C standard also allows implementations with
19895 ones' complement or signed magnitude arithmetic, but it is safe to
19896 assume two's complement nowadays.
19898 Also, overflow can occur when converting an out-of-range value to a
19899 signed integer type.  Here a standard implementation must define what
19900 happens, but this might include raising an exception.  In practice all
19901 known implementations support silent wraparound in this case, so you need
19902 not worry about other possibilities.
19904 @node Signed Overflow Examples
19905 @subsection Examples of Code Assuming Wraparound Overflow
19906 @cindex integer overflow
19907 @cindex overflow, signed integer
19908 @cindex signed integer overflow
19909 @cindex wraparound arithmetic
19911 There has long been a tension between what the C standard requires for
19912 signed integer overflow, and what C programs commonly assume.  The
19913 standard allows aggressive optimizations based on assumptions that
19914 overflow never occurs, but many practical C programs rely on overflow
19915 wrapping around.  These programs do not conform to the standard, but
19916 they commonly work in practice because compiler writers are
19917 understandably reluctant to implement optimizations that would break
19918 many programs, unless perhaps a user specifies aggressive optimization.
19920 The C Standard says that if a program has signed integer overflow its
19921 behavior is undefined, and the undefined behavior can even precede the
19922 overflow.  To take an extreme example:
19924 @c Inspired by Robert Dewar's example in
19925 @c <http://gcc.gnu.org/ml/gcc/2007-01/msg00038.html> (2007-01-01).
19926 @example
19927 if (password == expected_password)
19928   allow_superuser_privileges ();
19929 else if (counter++ == INT_MAX)
19930   abort ();
19931 else
19932   printf ("%d password mismatches\n", counter);
19933 @end example
19935 @noindent
19936 If the @code{int} variable @code{counter} equals @code{INT_MAX},
19937 @code{counter++} must overflow and the behavior is undefined, so the C
19938 standard allows the compiler to optimize away the test against
19939 @code{INT_MAX} and the @code{abort} call.
19940 Worse, if an earlier bug in the program lets the compiler deduce that
19941 @code{counter == INT_MAX} or that @code{counter} previously overflowed,
19942 the C standard allows the compiler to optimize away the password test
19943 and generate code that allows superuser privileges unconditionally.
19945 Despite this requirement by the standard, it has long been common for C
19946 code to assume wraparound arithmetic after signed overflow, and all
19947 known practical C implementations support some C idioms that assume
19948 wraparound signed arithmetic, even if the idioms do not conform
19949 strictly to the standard.  If your code looks like the following
19950 examples it will almost surely work with real-world compilers.
19952 Here is an example derived from the 7th Edition Unix implementation of
19953 @code{atoi} (1979-01-10):
19955 @example
19956 char *p;
19957 int f, n;
19958 @dots{}
19959 while (*p >= '0' && *p <= '9')
19960   n = n * 10 + *p++ - '0';
19961 return (f ? -n : n);
19962 @end example
19964 @noindent
19965 Even if the input string is in range, on most modern machines this has
19966 signed overflow when computing the most negative integer (the @code{-n}
19967 overflows) or a value near an extreme integer (the first @code{+}
19968 overflows).
19970 Here is another example, derived from the 7th Edition implementation of
19971 @code{rand} (1979-01-10).  Here the programmer expects both
19972 multiplication and addition to wrap on overflow:
19974 @example
19975 static long int randx = 1;
19976 @dots{}
19977 randx = randx * 1103515245 + 12345;
19978 return (randx >> 16) & 077777;
19979 @end example
19981 In the following example, derived from the GNU C Library 2.5
19982 implementation of @code{mktime} (2006-09-09), the code assumes
19983 wraparound arithmetic in @code{+} to detect signed overflow:
19985 @example
19986 time_t t, t1, t2;
19987 int sec_requested, sec_adjustment;
19988 @dots{}
19989 t1 = t + sec_requested;
19990 t2 = t1 + sec_adjustment;
19991 if (((t1 < t) != (sec_requested < 0))
19992     | ((t2 < t1) != (sec_adjustment < 0)))
19993   return -1;
19994 @end example
19996 If your code looks like these examples, it is probably safe even though
19997 it does not strictly conform to the C standard.  This might lead one to
19998 believe that one can generally assume wraparound on overflow, but that
19999 is not always true, as can be seen in the next section.
20001 @node Optimization and Wraparound
20002 @subsection Optimizations That Break Wraparound Arithmetic
20003 @cindex loop induction
20005 Compilers sometimes generate code that is incompatible with wraparound
20006 integer arithmetic.  A simple example is an algebraic simplification: a
20007 compiler might translate @code{(i * 2000) / 1000} to @code{i * 2}
20008 because it assumes that @code{i * 2000} does not overflow.  The
20009 translation is not equivalent to the original when overflow occurs:
20010 e.g., in the typical case of 32-bit signed two's complement wraparound
20011 @code{int}, if @code{i} has type @code{int} and value @code{1073742},
20012 the original expression returns @minus{}2147483 but the optimized
20013 version returns the mathematically correct value 2147484.
20015 More subtly, loop induction optimizations often exploit the undefined
20016 behavior of signed overflow.  Consider the following contrived function
20017 @code{sumc}:
20019 @example
20021 sumc (int lo, int hi)
20023   int sum = 0;
20024   int i;
20025   for (i = lo; i <= hi; i++)
20026     sum ^= i * 53;
20027   return sum;
20029 @end example
20031 @noindent
20032 To avoid multiplying by 53 each time through the loop, an optimizing
20033 compiler might internally transform @code{sumc} to the equivalent of the
20034 following:
20036 @example
20038 transformed_sumc (int lo, int hi)
20040   int sum = 0;
20041   int hic = hi * 53;
20042   int ic;
20043   for (ic = lo * 53; ic <= hic; ic += 53)
20044     sum ^= ic;
20045   return sum;
20047 @end example
20049 @noindent
20050 This transformation is allowed by the C standard, but it is invalid for
20051 wraparound arithmetic when @code{INT_MAX / 53 < hi}, because then the
20052 overflow in computing expressions like @code{hi * 53} can cause the
20053 expression @code{i <= hi} to yield a different value from the
20054 transformed expression @code{ic <= hic}.
20056 For this reason, compilers that use loop induction and similar
20057 techniques often do not support reliable wraparound arithmetic when a
20058 loop induction variable like @code{ic} is involved.  Since loop
20059 induction variables are generated by the compiler, and are not visible
20060 in the source code, it is not always trivial to say whether the problem
20061 affects your code.
20063 Hardly any code actually depends on wraparound arithmetic in cases like
20064 these, so in practice these loop induction optimizations are almost
20065 always useful.  However, edge cases in this area can cause problems.
20066 For example:
20068 @example
20069 int j;
20070 for (j = 1; 0 < j; j *= 2)
20071   test (j);
20072 @end example
20074 @noindent
20075 Here, the loop attempts to iterate through all powers of 2 that
20076 @code{int} can represent, but the C standard allows a compiler to
20077 optimize away the comparison and generate an infinite loop,
20078 under the argument that behavior is undefined on overflow.  As of this
20079 writing this optimization is not done by any production version of
20080 GCC with @option{-O2}, but it might be performed by other
20081 compilers, or by more aggressive GCC optimization options,
20082 and the GCC developers have not decided whether it will
20083 continue to work with GCC and @option{-O2}.
20085 @node Signed Overflow Advice
20086 @subsection Practical Advice for Signed Overflow Issues
20087 @cindex integer overflow
20088 @cindex overflow, signed integer
20089 @cindex signed integer overflow
20090 @cindex wraparound arithmetic
20092 Ideally the safest approach is to avoid signed integer overflow
20093 entirely.  For example, instead of multiplying two signed integers, you
20094 can convert them to unsigned integers, multiply the unsigned values,
20095 then test whether the result is in signed range.
20097 Rewriting code in this way will be inconvenient, though, particularly if
20098 the signed values might be negative.  Also, it may hurt
20099 performance.  Using unsigned arithmetic to check for overflow is
20100 particularly painful to do portably and efficiently when dealing with an
20101 integer type like @code{uid_t} whose width and signedness vary from
20102 platform to platform.
20104 Furthermore, many C applications pervasively assume wraparound behavior
20105 and typically it is not easy to find and remove all these assumptions.
20106 Hence it is often useful to maintain nonstandard code that assumes
20107 wraparound on overflow, instead of rewriting the code.  The rest of this
20108 section attempts to give practical advice for this situation.
20110 If your code wants to detect signed integer overflow in @code{sum = a +
20111 b}, it is generally safe to use an expression like @code{(sum < a) != (b
20112 < 0)}.
20114 If your code uses a signed loop index, make sure that the index cannot
20115 overflow, along with all signed expressions derived from the index.
20116 Here is a contrived example of problematic code with two instances of
20117 overflow.
20119 @example
20120 for (i = INT_MAX - 10; i <= INT_MAX; i++)
20121   if (i + 1 < 0)
20122     @{
20123       report_overflow ();
20124       break;
20125     @}
20126 @end example
20128 @noindent
20129 Because of the two overflows, a compiler might optimize away or
20130 transform the two comparisons in a way that is incompatible with the
20131 wraparound assumption.
20133 If your code uses an expression like @code{(i * 2000) / 1000} and you
20134 actually want the multiplication to wrap around on overflow, use
20135 unsigned arithmetic
20136 to do it, e.g., @code{((int) (i * 2000u)) / 1000}.
20138 If your code assumes wraparound behavior and you want to insulate it
20139 against any GCC optimizations that would fail to support that
20140 behavior, you should use GCC's @option{-fwrapv} option, which
20141 causes signed overflow to wrap around reliably (except for division and
20142 remainder, as discussed in the next section).
20144 If you need to port to platforms where signed integer overflow does not
20145 reliably wrap around (e.g., due to hardware overflow checking, or to
20146 highly aggressive optimizations), you should consider debugging with
20147 GCC's @option{-ftrapv} option, which causes signed overflow to
20148 raise an exception.
20150 @node Signed Integer Division
20151 @subsection Signed Integer Division and Integer Overflow
20152 @cindex division, integer
20154 Overflow in signed
20155 integer division is not always harmless: for example, on CPUs of the
20156 i386 family, dividing @code{INT_MIN} by @code{-1} yields a SIGFPE signal
20157 which by default terminates the program.  Worse, taking the remainder
20158 of these two values typically yields the same signal on these CPUs,
20159 even though the C standard requires @code{INT_MIN % -1} to yield zero
20160 because the expression does not overflow.
20162 @node Preprocessor Arithmetic
20163 @section Preprocessor Arithmetic
20164 @cindex preprocessor arithmetic
20166 In C99, preprocessor arithmetic, used for @code{#if} expressions, must
20167 be evaluated as if all signed values are of type @code{intmax_t} and all
20168 unsigned values of type @code{uintmax_t}.  Many compilers are buggy in
20169 this area, though.  For example, as of 2007, Sun C mishandles @code{#if
20170 LLONG_MIN < 0} on a platform with 32-bit @code{long int} and 64-bit
20171 @code{long long int}.  Also, some older preprocessors mishandle
20172 constants ending in @code{LL}.  To work around these problems, you can
20173 compute the value of expressions like @code{LONG_MAX < LLONG_MAX} at
20174 @code{configure}-time rather than at @code{#if}-time.
20176 @node Null Pointers
20177 @section Properties of Null Pointers
20178 @cindex null pointers
20180 Most modern hosts reliably fail when you attempt to dereference a null
20181 pointer.
20183 On almost all modern hosts, null pointers use an all-bits-zero internal
20184 representation, so you can reliably use @code{memset} with 0 to set all
20185 the pointers in an array to null values.
20187 If @code{p} is a null pointer to an object type, the C expression
20188 @code{p + 0} always evaluates to @code{p} on modern hosts, even though
20189 the standard says that it has undefined behavior.
20191 @node Buffer Overruns
20192 @section Buffer Overruns and Subscript Errors
20193 @cindex buffer overruns
20195 Buffer overruns and subscript errors are the most common dangerous
20196 errors in C programs.  They result in undefined behavior because storing
20197 outside an array typically modifies storage that is used by some other
20198 object, and most modern systems lack runtime checks to catch these
20199 errors.  Programs should not rely on buffer overruns being caught.
20201 There is one exception to the usual rule that a portable program cannot
20202 address outside an array.  In C, it is valid to compute the address just
20203 past an object, e.g., @code{&a[N]} where @code{a} has @code{N} elements,
20204 so long as you do not dereference the resulting pointer.  But it is not
20205 valid to compute the address just before an object, e.g., @code{&a[-1]};
20206 nor is it valid to compute two past the end, e.g., @code{&a[N+1]}.  On
20207 most platforms @code{&a[-1] < &a[0] && &a[N] < &a[N+1]}, but this is not
20208 reliable in general, and it is usually easy enough to avoid the
20209 potential portability problem, e.g., by allocating an extra unused array
20210 element at the start or end.
20212 @uref{http://@/valgrind.org/, Valgrind} can catch many overruns.
20214 users might also consider using the @option{-fmudflap} option to catch
20215 overruns.
20217 Buffer overruns are usually caused by off-by-one errors, but there are
20218 more subtle ways to get them.
20220 Using @code{int} values to index into an array or compute array sizes
20221 causes problems on typical 64-bit hosts where an array index might
20222 be @math{2^31} or larger.  Index values of type @code{size_t} avoid this
20223 problem, but cannot be negative.  Index values of type @code{ptrdiff_t}
20224 are signed, and are wide enough in practice.
20226 If you add or multiply two numbers to calculate an array size, e.g.,
20227 @code{malloc (x * sizeof y + z)}, havoc ensues if the addition or
20228 multiplication overflows.
20230 Many implementations of the @code{alloca} function silently misbehave
20231 and can generate buffer overflows if given sizes that are too large.
20232 The size limits are implementation dependent, but are at least 4000
20233 bytes on all platforms that we know about.
20235 The standard functions @code{asctime}, @code{asctime_r}, @code{ctime},
20236 @code{ctime_r}, and @code{gets} are prone to buffer overflows, and
20237 portable code should not use them unless the inputs are known to be
20238 within certain limits.  The time-related functions can overflow their
20239 buffers if given timestamps out of range (e.g., a year less than -999
20240 or greater than 9999).  Time-related buffer overflows cannot happen with
20241 recent-enough versions of the GNU C library, but are possible
20242 with other
20243 implementations.  The @code{gets} function is the worst, since it almost
20244 invariably overflows its buffer when presented with an input line larger
20245 than the buffer.
20247 @node Volatile Objects
20248 @section Volatile Objects
20249 @cindex volatile objects
20251 The keyword @code{volatile} is often misunderstood in portable code.
20252 Its use inhibits some memory-access optimizations, but programmers often
20253 wish that it had a different meaning than it actually does.
20255 @code{volatile} was designed for code that accesses special objects like
20256 memory-mapped device registers whose contents spontaneously change.
20257 Such code is inherently low-level, and it is difficult to specify
20258 portably what @code{volatile} means in these cases.  The C standard
20259 says, ``What constitutes an access to an object that has
20260 volatile-qualified type is implementation-defined,'' so in theory each
20261 implementation is supposed to fill in the gap by documenting what
20262 @code{volatile} means for that implementation.  In practice, though,
20263 this documentation is usually absent or incomplete.
20265 One area of confusion is the distinction between objects defined with
20266 volatile types, and volatile lvalues.  From the C standard's point of
20267 view, an object defined with a volatile type has externally visible
20268 behavior.  You can think of such objects as having little oscilloscope
20269 probes attached to them, so that the user can observe some properties of
20270 accesses to them, just as the user can observe data written to output
20271 files.  However, the standard does not make it clear whether users can
20272 observe accesses by volatile lvalues to ordinary objects.  For example:
20274 @example
20275 /* Declare and access a volatile object.
20276    Accesses to X are "visible" to users.  */
20277 static int volatile x;
20278 x = 1;
20280 /* Access two ordinary objects via a volatile lvalue.
20281    It's not clear whether accesses to *P are "visible".  */
20282 int y;
20283 int *z = malloc (sizeof (int));
20284 int volatile *p;
20285 p = &y;
20286 *p = 1;
20287 p = z;
20288 *p = 1;
20289 @end example
20291 Programmers often wish that @code{volatile} meant ``Perform the memory
20292 access here and now, without merging several memory accesses, without
20293 changing the memory word size, and without reordering.''  But the C
20294 standard does not require this.  For objects defined with a volatile
20295 type, accesses must be done before the next sequence point; but
20296 otherwise merging, reordering, and word-size change is allowed.  Worse,
20297 it is not clear from the standard whether volatile lvalues provide more
20298 guarantees in general than nonvolatile lvalues, if the underlying
20299 objects are ordinary.
20301 Even when accessing objects defined with a volatile type,
20302 the C standard allows only
20303 extremely limited signal handlers: the behavior is undefined if a signal
20304 handler reads any nonlocal object, or writes to any nonlocal object
20305 whose type is not @code{sig_atomic_t volatile}, or calls any standard
20306 library function other than @code{abort}, @code{signal}, and (if C99)
20307 @code{_Exit}.  Hence C compilers need not worry about a signal handler
20308 disturbing ordinary computation, unless the computation accesses a
20309 @code{sig_atomic_t volatile} lvalue that is not a local variable.
20310 (There is an obscure exception for accesses via a pointer to a volatile
20311 character, since it may point into part of a @code{sig_atomic_t
20312 volatile} object.)  Posix
20313 adds to the list of library functions callable from a portable signal
20314 handler, but otherwise is like the C standard in this area.
20316 Some C implementations allow memory-access optimizations within each
20317 translation unit, such that actual behavior agrees with the behavior
20318 required by the standard only when calling a function in some other
20319 translation unit, and a signal handler acts like it was called from a
20320 different translation unit.  The C standard hints that in these
20321 implementations, objects referred to by signal handlers ``would require
20322 explicit specification of @code{volatile} storage, as well as other
20323 implementation-defined restrictions.''  But unfortunately even for this
20324 special case these other restrictions are often not documented well.
20325 @xref{Volatiles, , When is a Volatile Object Accessed?, gcc, Using the
20326 GNU Compiler Collection (GCC)}, for some
20327 restrictions imposed by GCC.  @xref{Defining Handlers, ,
20328 Defining Signal Handlers, libc, The GNU C Library}, for some
20329 restrictions imposed by the GNU C library.  Restrictions
20330 differ on other platforms.
20332 If possible, it is best to use a signal handler that fits within the
20333 limits imposed by the C and Posix standards.
20335 If this is not practical, you can try the following rules of thumb.  A
20336 signal handler should access only volatile lvalues, preferably lvalues
20337 that refer to objects defined with a volatile type, and should not
20338 assume that the accessed objects have an internally consistent state
20339 if they are larger than a machine word.  Furthermore, installers
20340 should employ compilers and compiler options that are commonly used
20341 for building operating system kernels, because kernels often need more
20342 from @code{volatile} than the C Standard requires, and installers who
20343 compile an application in a similar environment can sometimes benefit
20344 from the extra constraints imposed by kernels on compilers.
20345 Admittedly we are handwaving somewhat here, as there are few
20346 guarantees in this area; the rules of thumb may help to fix some bugs
20347 but there is a good chance that they will not fix them all.
20349 For @code{volatile}, C++ has the same problems that C does.
20350 Multithreaded applications have even more problems with @code{volatile},
20351 but they are beyond the scope of this section.
20353 The bottom line is that using @code{volatile} typically hurts
20354 performance but should not hurt correctness.  In some cases its use
20355 does help correctness, but these cases are often so poorly understood
20356 that all too often adding @code{volatile} to a data structure merely
20357 alleviates some symptoms of a bug while not fixing the bug in general.
20359 @node Floating Point Portability
20360 @section Floating Point Portability
20361 @cindex floating point
20363 Almost all modern systems use IEEE-754 floating point, and it is safe to
20364 assume IEEE-754 in most portable code these days.  For more information,
20365 please see David Goldberg's classic paper
20366 @uref{http://@/www.validlab.com/@/goldberg/@/paper.pdf, What Every Computer
20367 Scientist Should Know About Floating-Point Arithmetic}.
20369 @node Exiting Portably
20370 @section Exiting Portably
20371 @cindex exiting portably
20373 A C or C++ program can exit with status @var{N} by returning
20374 @var{N} from the @code{main} function.  Portable programs are supposed
20375 to exit either with status 0 or @code{EXIT_SUCCESS} to succeed, or with
20376 status @code{EXIT_FAILURE} to fail, but in practice it is portable to
20377 fail by exiting with status 1, and test programs that assume Posix can
20378 fail by exiting with status values from 1 through 255.  Programs on
20379 SunOS 2.0 (1985) through 3.5.2 (1988) incorrectly exited with zero
20380 status when @code{main} returned nonzero, but ancient systems like these
20381 are no longer of practical concern.
20383 A program can also exit with status @var{N} by passing @var{N} to the
20384 @code{exit} function, and a program can fail by calling the @code{abort}
20385 function.  If a program is specialized to just some platforms, it can fail
20386 by calling functions specific to those platforms, e.g., @code{_exit}
20387 (Posix) and @code{_Exit} (C99).  However, like other functions, an exit
20388 function should be declared, typically by including a header.  For
20389 example, if a C program calls @code{exit}, it should include @file{stdlib.h}
20390 either directly or via the default includes (@pxref{Default Includes}).
20392 A program can fail due to undefined behavior such as dereferencing a null
20393 pointer, but this is not recommended as undefined behavior allows an
20394 implementation to do whatever it pleases and this includes exiting
20395 successfully.
20398 @c ================================================== Manual Configuration
20400 @node Manual Configuration
20401 @chapter Manual Configuration
20403 A few kinds of features can't be guessed automatically by running test
20404 programs.  For example, the details of the object-file format, or
20405 special options that need to be passed to the compiler or linker.  You
20406 can check for such features using ad-hoc means, such as having
20407 @command{configure} check the output of the @code{uname} program, or
20408 looking for libraries that are unique to particular systems.  However,
20409 Autoconf provides a uniform method for handling unguessable features.
20411 @menu
20412 * Specifying Target Triplets::  Specifying target triplets
20413 * Canonicalizing::              Getting the canonical system type
20414 * Using System Type::           What to do with the system type
20415 @end menu
20417 @node Specifying Target Triplets
20418 @section Specifying target triplets
20419 @cindex System type
20420 @cindex Target triplet
20421 @c This node used to be named Specifying Names.  The @anchor allows old
20422 @c links to still work.
20423 @anchor{Specifying Names}
20425 Autoconf-generated
20426 @command{configure} scripts can make decisions based on a canonical name
20427 for the system type, or @dfn{target triplet}, which has the form:
20428 @samp{@var{cpu}-@var{vendor}-@var{os}}, where @var{os} can be
20429 @samp{@var{system}} or @samp{@var{kernel}-@var{system}}
20431 @command{configure} can usually guess the canonical name for the type of
20432 system it's running on.  To do so it runs a script called
20433 @command{config.guess}, which infers the name using the @code{uname}
20434 command or symbols predefined by the C preprocessor.
20436 Alternately, the user can specify the system type with command line
20437 arguments to @command{configure} (@pxref{System Type}.  Doing so is
20438 necessary when
20439 cross-compiling.  In the most complex case of cross-compiling, three
20440 system types are involved.  The options to specify them are:
20442 @table @option
20443 @item --build=@var{build-type}
20444 the type of system on which the package is being configured and
20445 compiled.  It defaults to the result of running @command{config.guess}.
20447 @item --host=@var{host-type}
20448 the type of system on which the package runs.  By default it is the
20449 same as the build machine.  Specifying it enables the cross-compilation
20450 mode.
20452 @item --target=@var{target-type}
20453 the type of system for which any compiler tools in the package
20454 produce code (rarely needed).  By default, it is the same as host.
20455 @end table
20457 If you mean to override the result of @command{config.guess}, use
20458 @option{--build}, not @option{--host}, since the latter enables
20459 cross-compilation.  For historical reasons,
20460 whenever you specify @option{--host},
20461 be sure to specify @option{--build} too; this will be fixed in the
20462 future.  So, to enter cross-compilation mode, use a command like this
20464 @example
20465 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
20466 @end example
20468 @noindent
20469 Note that if you do not specify @option{--host}, @command{configure}
20470 fails if it can't run the code generated by the specified compiler.  For
20471 example, configuring as follows fails:
20473 @example
20474 ./configure CC=m68k-coff-gcc
20475 @end example
20477 When cross-compiling, @command{configure} will warn about any tools
20478 (compilers, linkers, assemblers) whose name is not prefixed with the
20479 host type.  This is an aid to users performing cross-compilation.
20480 Continuing the example above, if a cross-compiler named @command{cc} is
20481 used with a native @command{pkg-config}, then libraries found by
20482 @command{pkg-config} will likely cause subtle build failures; but using
20483 the names @command{m68k-coff-cc} and @command{m68k-coff-pkg-config}
20484 avoids any confusion.  Avoiding the warning is as simple as creating the
20485 correct symlinks naming the cross tools.
20487 @cindex @command{config.sub}
20488 @command{configure} recognizes short aliases for many system types; for
20489 example, @samp{decstation} can be used instead of
20490 @samp{mips-dec-ultrix4.2}.  @command{configure} runs a script called
20491 @command{config.sub} to canonicalize system type aliases.
20493 This section deliberately omits the description of the obsolete
20494 interface; see @ref{Hosts and Cross-Compilation}.
20497 @node Canonicalizing
20498 @section Getting the Canonical System Type
20499 @cindex System type
20500 @cindex Canonical system type
20502 The following macros make the system type available to @command{configure}
20503 scripts.
20505 @ovindex build_alias
20506 @ovindex host_alias
20507 @ovindex target_alias
20509 The variables @samp{build_alias}, @samp{host_alias}, and
20510 @samp{target_alias} are always exactly the arguments of @option{--build},
20511 @option{--host}, and @option{--target}; in particular, they are left empty
20512 if the user did not use them, even if the corresponding
20513 @code{AC_CANONICAL} macro was run.  Any configure script may use these
20514 variables anywhere.  These are the variables that should be used when in
20515 interaction with the user.
20517 If you need to recognize some special environments based on their system
20518 type, run the following macros to get canonical system names.  These
20519 variables are not set before the macro call.
20521 If you use these macros, you must distribute @command{config.guess} and
20522 @command{config.sub} along with your source code.  @xref{Output}, for
20523 information about the @code{AC_CONFIG_AUX_DIR} macro which you can use
20524 to control in which directory @command{configure} looks for those scripts.
20527 @defmac AC_CANONICAL_BUILD
20528 @acindex{CANONICAL_BUILD}
20529 @ovindex build
20530 @ovindex build_cpu
20531 @ovindex build_vendor
20532 @ovindex build_os
20533 Compute the canonical build-system type variable, @code{build}, and its
20534 three individual parts @code{build_cpu}, @code{build_vendor}, and
20535 @code{build_os}.
20537 If @option{--build} was specified, then @code{build} is the
20538 canonicalization of @code{build_alias} by @command{config.sub},
20539 otherwise it is determined by the shell script @command{config.guess}.
20540 @end defmac
20542 @defmac AC_CANONICAL_HOST
20543 @acindex{CANONICAL_HOST}
20544 @ovindex host
20545 @ovindex host_cpu
20546 @ovindex host_vendor
20547 @ovindex host_os
20548 Compute the canonical host-system type variable, @code{host}, and its
20549 three individual parts @code{host_cpu}, @code{host_vendor}, and
20550 @code{host_os}.
20552 If @option{--host} was specified, then @code{host} is the
20553 canonicalization of @code{host_alias} by @command{config.sub},
20554 otherwise it defaults to @code{build}.
20555 @end defmac
20557 @defmac AC_CANONICAL_TARGET
20558 @acindex{CANONICAL_TARGET}
20559 @ovindex target
20560 @ovindex target_cpu
20561 @ovindex target_vendor
20562 @ovindex target_os
20563 Compute the canonical target-system type variable, @code{target}, and its
20564 three individual parts @code{target_cpu}, @code{target_vendor}, and
20565 @code{target_os}.
20567 If @option{--target} was specified, then @code{target} is the
20568 canonicalization of @code{target_alias} by @command{config.sub},
20569 otherwise it defaults to @code{host}.
20570 @end defmac
20572 Note that there can be artifacts due to the backward compatibility
20573 code.  See @xref{Hosts and Cross-Compilation}, for more.
20575 @node Using System Type
20576 @section Using the System Type
20578 In @file{configure.ac} the system type is generally used by one or more
20579 @code{case} statements to select system-specifics.  Shell wildcards can
20580 be used to match a group of system types.
20582 For example, an extra assembler code object file could be chosen, giving
20583 access to a CPU cycle counter register.  @code{$(CYCLE_OBJ)} in the
20584 following would be used in a makefile to add the object to a
20585 program or library.
20587 @example
20588 AS_CASE([$host],
20589   [alpha*-*-*], [CYCLE_OBJ=rpcc.o],
20590   [i?86-*-*],   [CYCLE_OBJ=rdtsc.o],
20591   [CYCLE_OBJ=""]
20593 AC_SUBST([CYCLE_OBJ])
20594 @end example
20596 @code{AC_CONFIG_LINKS} (@pxref{Configuration Links}) is another good way
20597 to select variant source files, for example optimized code for some
20598 CPUs.  The configured CPU type doesn't always indicate exact CPU types,
20599 so some runtime capability checks may be necessary too.
20601 @example
20602 case $host in
20603   alpha*-*-*)   AC_CONFIG_LINKS([dither.c:alpha/dither.c]) ;;
20604   powerpc*-*-*) AC_CONFIG_LINKS([dither.c:powerpc/dither.c]) ;;
20605   *-*-*)        AC_CONFIG_LINKS([dither.c:generic/dither.c]) ;;
20606 esac
20607 @end example
20609 The host system type can also be used to find cross-compilation tools
20610 with @code{AC_CHECK_TOOL} (@pxref{Generic Programs}).
20612 The above examples all show @samp{$host}, since this is where the code
20613 is going to run.  Only rarely is it necessary to test @samp{$build}
20614 (which is where the build is being done).
20616 Whenever you're tempted to use @samp{$host} it's worth considering
20617 whether some sort of probe would be better.  New system types come along
20618 periodically or previously missing features are added.  Well-written
20619 probes can adapt themselves to such things, but hard-coded lists of
20620 names can't.  Here are some guidelines,
20622 @itemize @bullet
20623 @item
20624 Availability of libraries and library functions should always be checked
20625 by probing.
20626 @item
20627 Variant behavior of system calls is best identified with runtime tests
20628 if possible, but bug workarounds or obscure difficulties might have to
20629 be driven from @samp{$host}.
20630 @item
20631 Assembler code is inevitably highly CPU-specific and is best selected
20632 according to @samp{$host_cpu}.
20633 @item
20634 Assembler variations like underscore prefix on globals or ELF versus
20635 COFF type directives are however best determined by probing, perhaps
20636 even examining the compiler output.
20637 @end itemize
20639 @samp{$target} is for use by a package creating a compiler or similar.
20640 For ordinary packages it's meaningless and should not be used.  It
20641 indicates what the created compiler should generate code for, if it can
20642 cross-compile.  @samp{$target} generally selects various hard-coded CPU
20643 and system conventions, since usually the compiler or tools under
20644 construction themselves determine how the target works.
20647 @c ===================================================== Site Configuration.
20649 @node Site Configuration
20650 @chapter Site Configuration
20652 @command{configure} scripts support several kinds of local configuration
20653 decisions.  There are ways for users to specify where external software
20654 packages are, include or exclude optional features, install programs
20655 under modified names, and set default values for @command{configure}
20656 options.
20658 @menu
20659 * Help Formatting::             Customizing @samp{configure --help}
20660 * External Software::           Working with other optional software
20661 * Package Options::             Selecting optional features
20662 * Pretty Help Strings::         Formatting help string
20663 * Option Checking::             Controlling checking of @command{configure} options
20664 * Site Details::                Configuring site details
20665 * Transforming Names::          Changing program names when installing
20666 * Site Defaults::               Giving @command{configure} local defaults
20667 @end menu
20669 @node Help Formatting
20670 @section Controlling Help Output
20672 Users consult @samp{configure --help} to learn of configuration
20673 decisions specific to your package.  By default, @command{configure}
20674 breaks this output into sections for each type of option; within each
20675 section, help strings appear in the order @file{configure.ac} defines
20676 them:
20678 @example
20679 Optional Features:
20680   @dots{}
20681   --enable-bar            include bar
20683 Optional Packages:
20684   @dots{}
20685   --with-foo              use foo
20686 @end example
20688 @defmac AC_PRESERVE_HELP_ORDER
20689 @acindex{PRESERVE_HELP_ORDER}
20691 Request an alternate @option{--help} format, in which options of all
20692 types appear together, in the order defined.  Call this macro before any
20693 @code{AC_ARG_ENABLE} or @code{AC_ARG_WITH}.
20695 @example
20696 Optional Features and Packages:
20697   @dots{}
20698   --enable-bar            include bar
20699   --with-foo              use foo
20700 @end example
20702 @end defmac
20704 @node External Software
20705 @section Working With External Software
20706 @cindex External software
20708 Some packages require, or can optionally use, other software packages
20709 that are already installed.  The user can give @command{configure}
20710 command line options to specify which such external software to use.
20711 The options have one of these forms:
20713 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
20714 @c awful.
20715 @example
20716 --with-@var{package}@r{[}=@var{arg}@r{]}
20717 --without-@var{package}
20718 @end example
20720 For example, @option{--with-gnu-ld} means work with the GNU linker
20721 instead of some other linker.  @option{--with-x} means work with The X
20722 Window System.
20724 The user can give an argument by following the package name with
20725 @samp{=} and the argument.  Giving an argument of @samp{no} is for
20726 packages that are used by default; it says to @emph{not} use the
20727 package.  An argument that is neither @samp{yes} nor @samp{no} could
20728 include a name or number of a version of the other package, to specify
20729 more precisely which other package this program is supposed to work
20730 with.  If no argument is given, it defaults to @samp{yes}.
20731 @option{--without-@var{package}} is equivalent to
20732 @option{--with-@var{package}=no}.
20734 Normally @command{configure} scripts complain about
20735 @option{--with-@var{package}} options that they do not support.
20736 @xref{Option Checking}, for details, and for how to override the
20737 defaults.
20739 For each external software package that may be used, @file{configure.ac}
20740 should call @code{AC_ARG_WITH} to detect whether the @command{configure}
20741 user asked to use it.  Whether each package is used or not by default,
20742 and which arguments are valid, is up to you.
20744 @anchor{AC_ARG_WITH}
20745 @defmac AC_ARG_WITH (@var{package}, @var{help-string}, @
20746   @ovar{action-if-given}, @ovar{action-if-not-given})
20747 @acindex{ARG_WITH}
20748 If the user gave @command{configure} the option @option{--with-@var{package}}
20749 or @option{--without-@var{package}}, run shell commands
20750 @var{action-if-given}.  If neither option was given, run shell commands
20751 @var{action-if-not-given}.  The name @var{package} indicates another
20752 software package that this program should work with.  It should consist
20753 only of alphanumeric characters, dashes, plus signs, and dots.
20755 The option's argument is available to the shell commands
20756 @var{action-if-given} in the shell variable @code{withval}, which is
20757 actually just the value of the shell variable named
20758 @code{with_@var{package}}, with any non-alphanumeric characters in
20759 @var{package} changed into @samp{_}.  You may use that variable instead,
20760 if you wish.
20762 The argument @var{help-string} is a description of the option that
20763 looks like this:
20764 @example
20765   --with-readline         support fancy command line editing
20766 @end example
20768 @noindent
20769 @var{help-string} may be more than one line long, if more detail is
20770 needed.  Just make sure the columns line up in @samp{configure
20771 --help}.  Avoid tabs in the help string.  The easiest way to provide the
20772 proper leading whitespace is to format your @var{help-string} with the macro
20773 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
20775 The following example shows how to use the @code{AC_ARG_WITH} macro in
20776 a common situation.  You want to let the user decide whether to enable
20777 support for an external library (e.g., the readline library); if the user
20778 specified neither @option{--with-readline} nor @option{--without-readline},
20779 you want to enable support for readline only if the library is available
20780 on the system.
20782 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
20783 @example
20784 AC_ARG_WITH([readline],
20785   [AS_HELP_STRING([--with-readline],
20786     [support fancy command line editing @@<:@@default=check@@:>@@])],
20787   [],
20788   [with_readline=check])
20790 LIBREADLINE=
20791 AS_IF([test "x$with_readline" != xno],
20792   [AC_CHECK_LIB([readline], [main],
20793     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
20794      AC_DEFINE([HAVE_LIBREADLINE], [1],
20795                [Define if you have libreadline])
20796     ],
20797     [if test "x$with_readline" != xcheck; then
20798        AC_MSG_FAILURE(
20799          [--with-readline was given, but test for readline failed])
20800      fi
20801     ], -lncurses)])
20802 @end example
20804 The next example shows how to use @code{AC_ARG_WITH} to give the user the
20805 possibility to enable support for the readline library, in case it is still
20806 experimental and not well tested, and is therefore disabled by default.
20808 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
20809 @example
20810 AC_ARG_WITH([readline],
20811   [AS_HELP_STRING([--with-readline],
20812     [enable experimental support for readline])],
20813   [],
20814   [with_readline=no])
20816 LIBREADLINE=
20817 AS_IF([test "x$with_readline" != xno],
20818   [AC_CHECK_LIB([readline], [main],
20819     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
20820      AC_DEFINE([HAVE_LIBREADLINE], [1],
20821                [Define if you have libreadline])
20822     ],
20823     [AC_MSG_FAILURE(
20824        [--with-readline was given, but test for readline failed])],
20825     [-lncurses])])
20826 @end example
20828 The last example shows how to use @code{AC_ARG_WITH} to give the user the
20829 possibility to disable support for the readline library, given that it is
20830 an important feature and that it should be enabled by default.
20832 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
20833 @example
20834 AC_ARG_WITH([readline],
20835   [AS_HELP_STRING([--without-readline],
20836     [disable support for readline])],
20837   [],
20838   [with_readline=yes])
20840 LIBREADLINE=
20841 AS_IF([test "x$with_readline" != xno],
20842   [AC_CHECK_LIB([readline], [main],
20843     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
20844      AC_DEFINE([HAVE_LIBREADLINE], [1],
20845                [Define if you have libreadline])
20846     ],
20847     [AC_MSG_FAILURE(
20848        [readline test failed (--without-readline to disable)])],
20849     [-lncurses])])
20850 @end example
20852 These three examples can be easily adapted to the case where
20853 @code{AC_ARG_ENABLE} should be preferred to @code{AC_ARG_WITH} (see
20854 @ref{Package Options}).
20855 @end defmac
20857 @node Package Options
20858 @section Choosing Package Options
20859 @cindex Package options
20860 @cindex Options, package
20862 If a software package has optional compile-time features, the user can
20863 give @command{configure} command line options to specify whether to
20864 compile them.  The options have one of these forms:
20866 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
20867 @c awful.
20868 @example
20869 --enable-@var{feature}@r{[}=@var{arg}@r{]}
20870 --disable-@var{feature}
20871 @end example
20873 These options allow users to choose which optional features to build and
20874 install.  @option{--enable-@var{feature}} options should never make a
20875 feature behave differently or cause one feature to replace another.
20876 They should only cause parts of the program to be built rather than left
20877 out.
20879 The user can give an argument by following the feature name with
20880 @samp{=} and the argument.  Giving an argument of @samp{no} requests
20881 that the feature @emph{not} be made available.  A feature with an
20882 argument looks like @option{--enable-debug=stabs}.  If no argument is
20883 given, it defaults to @samp{yes}.  @option{--disable-@var{feature}} is
20884 equivalent to @option{--enable-@var{feature}=no}.
20886 Normally @command{configure} scripts complain about
20887 @option{--enable-@var{package}} options that they do not support.
20888 @xref{Option Checking}, for details, and for how to override the
20889 defaults.
20891 For each optional feature, @file{configure.ac} should call
20892 @code{AC_ARG_ENABLE} to detect whether the @command{configure} user asked
20893 to include it.  Whether each feature is included or not by default, and
20894 which arguments are valid, is up to you.
20896 @anchor{AC_ARG_ENABLE}
20897 @defmac AC_ARG_ENABLE (@var{feature}, @var{help-string}, @
20898   @ovar{action-if-given}, @ovar{action-if-not-given})
20899 @acindex{ARG_ENABLE}
20900 If the user gave @command{configure} the option
20901 @option{--enable-@var{feature}} or @option{--disable-@var{feature}}, run
20902 shell commands @var{action-if-given}.  If neither option was given, run
20903 shell commands @var{action-if-not-given}.  The name @var{feature}
20904 indicates an optional user-level facility.  It should consist only of
20905 alphanumeric characters, dashes, plus signs, and dots.
20907 The option's argument is available to the shell commands
20908 @var{action-if-given} in the shell variable @code{enableval}, which is
20909 actually just the value of the shell variable named
20910 @code{enable_@var{feature}}, with any non-alphanumeric characters in
20911 @var{feature} changed into @samp{_}.  You may use that variable instead,
20912 if you wish.  The @var{help-string} argument is like that of
20913 @code{AC_ARG_WITH} (@pxref{External Software}).
20915 You should format your @var{help-string} with the macro
20916 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
20918 See the examples suggested with the definition of @code{AC_ARG_WITH}
20919 (@pxref{External Software}) to get an idea of possible applications of
20920 @code{AC_ARG_ENABLE}.
20921 @end defmac
20923 @node Pretty Help Strings
20924 @section Making Your Help Strings Look Pretty
20925 @cindex Help strings
20927 Properly formatting the @samp{help strings} which are used in
20928 @code{AC_ARG_WITH} (@pxref{External Software}) and @code{AC_ARG_ENABLE}
20929 (@pxref{Package Options}) can be challenging.  Specifically, you want
20930 your own @samp{help strings} to line up in the appropriate columns of
20931 @samp{configure --help} just like the standard Autoconf @samp{help
20932 strings} do.  This is the purpose of the @code{AS_HELP_STRING} macro.
20934 @anchor{AS_HELP_STRING}
20935 @defmac AS_HELP_STRING (@var{left-hand-side}, @var{right-hand-side} @
20936   @dvar{indent-column, 26}, @dvar{wrap-column, 79})
20937 @asindex{HELP_STRING}
20939 Expands into a help string that looks pretty when the user executes
20940 @samp{configure --help}.  It is typically used in @code{AC_ARG_WITH}
20941 (@pxref{External Software}) or @code{AC_ARG_ENABLE} (@pxref{Package
20942 Options}).  The following example makes this clearer.
20944 @example
20945 AC_ARG_WITH([foo],
20946   [AS_HELP_STRING([--with-foo],
20947      [use foo (default is no)])],
20948   [use_foo=$withval],
20949   [use_foo=no])
20950 @end example
20952 Then the last few lines of @samp{configure --help} appear like
20953 this:
20955 @example
20956 --enable and --with options recognized:
20957   --with-foo              use foo (default is no)
20958 @end example
20960 Macro expansion is performed on the first argument.  However, the second
20961 argument of @code{AS_HELP_STRING} is treated as a whitespace separated
20962 list of text to be reformatted, and is not subject to macro expansion.
20963 Since it is not expanded, it should not be double quoted.
20964 @xref{Autoconf Language}, for a more detailed explanation.
20966 The @code{AS_HELP_STRING} macro is particularly helpful when the
20967 @var{left-hand-side} and/or @var{right-hand-side} are composed of macro
20968 arguments, as shown in the following example.  Be aware that
20969 @var{left-hand-side} may not expand to unbalanced quotes,
20970 although quadrigraphs can be used.
20972 @example
20973 AC_DEFUN([MY_ARG_WITH],
20974   [AC_ARG_WITH(m4_translit([[$1]], [_], [-]),
20975      [AS_HELP_STRING([--with-m4_translit([$1], [_], [-])],
20976                      [use $1 (default is $2)])],
20977      [use_[]$1=$withval],
20978      [use_[]$1=$2])])
20979 MY_ARG_WITH([a_b], [no])
20980 @end example
20981 @noindent
20982 Here, the last few lines of @samp{configure --help} will include:
20984 @example
20985 --enable and --with options recognized:
20986   --with-a-b              use a_b (default is no)
20987 @end example
20989 The parameters @var{indent-column} and @var{wrap-column} were introduced
20990 in Autoconf 2.62.  Generally, they should not be specified; they exist
20991 for fine-tuning of the wrapping.
20992 @example
20993 AS_HELP_STRING([--option], [description of option])
20994 @result{}  --option                description of option
20995 AS_HELP_STRING([--option], [description of option], [15], [30])
20996 @result{}  --option     description of
20997 @result{}               option
20998 @end example
20999 @end defmac
21002 @node Option Checking
21003 @section Controlling Checking of @command{configure} Options
21004 @cindex Options, Package
21006 The @command{configure} script checks its command-line options against a
21007 list of known options, like @option{--help} or @option{--config-cache}.
21008 An unknown option ordinarily indicates a mistake by the user and
21009 @command{configure} halts with an error.  However, by default unknown
21010 @option{--with-@var{package}} and @option{--enable-@var{feature}}
21011 options elicit only a warning, to support configuring entire source
21012 trees.
21014 Source trees often contain multiple packages with a top-level
21015 @command{configure} script that uses the @code{AC_CONFIG_SUBDIRS} macro
21016 (@pxref{Subdirectories}).  Because the packages generally support
21017 different @option{--with-@var{package}} and
21018 @option{--enable-@var{feature}} options, the GNU Coding
21019 Standards say they must accept unrecognized options without halting.
21020 Even a warning message is undesirable here, so @code{AC_CONFIG_SUBDIRS}
21021 automatically disables the warnings.
21023 This default behavior may be modified in two ways.  First, the installer
21024 can invoke @code{configure --disable-option-checking} to disable
21025 these warnings, or invoke @code{configure --enable-option-checking=fatal}
21026 options to turn them into fatal errors, respectively.  Second, the
21027 maintainer can use @code{AC_DISABLE_OPTION_CHECKING}.
21029 @defmac AC_DISABLE_OPTION_CHECKING
21030 @acindex{DISABLE_OPTION_CHECKING}
21032 By default, disable warnings related to any unrecognized
21033 @option{--with-@var{package}} or @option{--enable-@var{feature}}
21034 options.  This is implied by @code{AC_CONFIG_SUBDIRS}.
21036 The installer can override this behavior by passing
21037 @option{--enable-option-checking} (enable warnings) or
21038 @option{--enable-option-checking=fatal} (enable errors) to
21039 @command{configure}.
21040 @end defmac
21043 @node Site Details
21044 @section Configuring Site Details
21045 @cindex Site details
21047 Some software packages require complex site-specific information.  Some
21048 examples are host names to use for certain services, company names, and
21049 email addresses to contact.  Since some configuration scripts generated
21050 by Metaconfig ask for such information interactively, people sometimes
21051 wonder how to get that information in Autoconf-generated configuration
21052 scripts, which aren't interactive.
21054 Such site configuration information should be put in a file that is
21055 edited @emph{only by users}, not by programs.  The location of the file
21056 can either be based on the @code{prefix} variable, or be a standard
21057 location such as the user's home directory.  It could even be specified
21058 by an environment variable.  The programs should examine that file at
21059 runtime, rather than at compile time.  Runtime configuration is more
21060 convenient for users and makes the configuration process simpler than
21061 getting the information while configuring.  @xref{Directory Variables, ,
21062 Variables for Installation Directories, standards, GNU Coding
21063 Standards}, for more information on where to put data files.
21065 @node Transforming Names
21066 @section Transforming Program Names When Installing
21067 @cindex Transforming program names
21068 @cindex Program names, transforming
21070 Autoconf supports changing the names of programs when installing them.
21071 In order to use these transformations, @file{configure.ac} must call the
21072 macro @code{AC_ARG_PROGRAM}.
21074 @defmac AC_ARG_PROGRAM
21075 @acindex{ARG_PROGRAM}
21076 @ovindex program_transform_name
21077 Place in output variable @code{program_transform_name} a sequence of
21078 @code{sed} commands for changing the names of installed programs.
21080 If any of the options described below are given to @command{configure},
21081 program names are transformed accordingly.  Otherwise, if
21082 @code{AC_CANONICAL_TARGET} has been called and a @option{--target} value
21083 is given, the target type followed by a dash is used as a prefix.
21084 Otherwise, no program name transformation is done.
21085 @end defmac
21087 @menu
21088 * Transformation Options::      @command{configure} options to transform names
21089 * Transformation Examples::     Sample uses of transforming names
21090 * Transformation Rules::        Makefile uses of transforming names
21091 @end menu
21093 @node Transformation Options
21094 @subsection Transformation Options
21096 You can specify name transformations by giving @command{configure} these
21097 command line options:
21099 @table @option
21100 @item --program-prefix=@var{prefix}
21101 prepend @var{prefix} to the names;
21103 @item --program-suffix=@var{suffix}
21104 append @var{suffix} to the names;
21106 @item --program-transform-name=@var{expression}
21107 perform @code{sed} substitution @var{expression} on the names.
21108 @end table
21110 @node Transformation Examples
21111 @subsection Transformation Examples
21113 These transformations are useful with programs that can be part of a
21114 cross-compilation development environment.  For example, a
21115 cross-assembler running on a Sun 4 configured with
21116 @option{--target=i960-vxworks} is normally installed as
21117 @file{i960-vxworks-as}, rather than @file{as}, which could be confused
21118 with a native Sun 4 assembler.
21120 You can force a program name to begin with @file{g}, if you don't want
21121 GNU programs installed on your system to shadow other programs with
21122 the same name.  For example, if you configure GNU @code{diff} with
21123 @option{--program-prefix=g}, then when you run @samp{make install} it is
21124 installed as @file{/usr/local/bin/gdiff}.
21126 As a more sophisticated example, you could use
21128 @example
21129 --program-transform-name='s/^/g/; s/^gg/g/; s/^gless/less/'
21130 @end example
21131 @noindent
21133 to prepend @samp{g} to most of the program names in a source tree,
21134 excepting those like @code{gdb} that already have one and those like
21135 @code{less} and @code{lesskey} that aren't GNU programs.  (That is
21136 assuming that you have a source tree containing those programs that is
21137 set up to use this feature.)
21139 One way to install multiple versions of some programs simultaneously is
21140 to append a version number to the name of one or both.  For example, if
21141 you want to keep Autoconf version 1 around for awhile, you can configure
21142 Autoconf version 2 using @option{--program-suffix=2} to install the
21143 programs as @file{/usr/local/bin/autoconf2},
21144 @file{/usr/local/bin/autoheader2}, etc.  Nevertheless, pay attention
21145 that only the binaries are renamed, therefore you'd have problems with
21146 the library files which might overlap.
21148 @node Transformation Rules
21149 @subsection Transformation Rules
21151 Here is how to use the variable @code{program_transform_name} in a
21152 @file{Makefile.in}:
21154 @example
21155 PROGRAMS = cp ls rm
21156 transform = @@program_transform_name@@
21157 install:
21158         for p in $(PROGRAMS); do \
21159           $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | \
21160                                               sed '$(transform)'`; \
21161         done
21163 uninstall:
21164         for p in $(PROGRAMS); do \
21165           rm -f $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`; \
21166 @c $$ restore font-lock
21167         done
21168 @end example
21170 It is guaranteed that @code{program_transform_name} is never empty, and
21171 that there are no useless separators.  Therefore you may safely embed
21172 @code{program_transform_name} within a sed program using @samp{;}:
21174 @example
21175 transform = @@program_transform_name@@
21176 transform_exe = s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/
21177 @end example
21179 Whether to do the transformations on documentation files (Texinfo or
21180 @code{man}) is a tricky question; there seems to be no perfect answer,
21181 due to the several reasons for name transforming.  Documentation is not
21182 usually particular to a specific architecture, and Texinfo files do not
21183 conflict with system documentation.  But they might conflict with
21184 earlier versions of the same files, and @code{man} pages sometimes do
21185 conflict with system documentation.  As a compromise, it is probably
21186 best to do name transformations on @code{man} pages but not on Texinfo
21187 manuals.
21189 @node Site Defaults
21190 @section Setting Site Defaults
21191 @cindex Site defaults
21192 @cindex config.site
21194 Autoconf-generated @command{configure} scripts allow your site to provide
21195 default values for some configuration values.  You do this by creating
21196 site- and system-wide initialization files.
21198 @evindex CONFIG_SITE
21199 If the environment variable @code{CONFIG_SITE} is set, @command{configure}
21200 uses its value as the name of a shell script to read; it is recommended
21201 that this be an absolute file name.  Otherwise, it
21202 reads the shell script @file{@var{prefix}/share/config.site} if it exists,
21203 then @file{@var{prefix}/etc/config.site} if it exists.  Thus,
21204 settings in machine-specific files override those in machine-independent
21205 ones in case of conflict.
21207 Site files can be arbitrary shell scripts, but only certain kinds of
21208 code are really appropriate to be in them.  Because @command{configure}
21209 reads any cache file after it has read any site files, a site file can
21210 define a default cache file to be shared between all Autoconf-generated
21211 @command{configure} scripts run on that system (@pxref{Cache Files}).  If
21212 you set a default cache file in a site file, it is a good idea to also
21213 set the output variable @code{CC} in that site file, because the cache
21214 file is only valid for a particular compiler, but many systems have
21215 several available.
21217 You can examine or override the value set by a command line option to
21218 @command{configure} in a site file; options set shell variables that have
21219 the same names as the options, with any dashes turned into underscores.
21220 The exceptions are that @option{--without-} and @option{--disable-} options
21221 are like giving the corresponding @option{--with-} or @option{--enable-}
21222 option and the value @samp{no}.  Thus, @option{--cache-file=localcache}
21223 sets the variable @code{cache_file} to the value @samp{localcache};
21224 @option{--enable-warnings=no} or @option{--disable-warnings} sets the variable
21225 @code{enable_warnings} to the value @samp{no}; @option{--prefix=/usr} sets the
21226 variable @code{prefix} to the value @samp{/usr}; etc.
21228 Site files are also good places to set default values for other output
21229 variables, such as @code{CFLAGS}, if you need to give them non-default
21230 values: anything you would normally do, repetitively, on the command
21231 line.  If you use non-default values for @var{prefix} or
21232 @var{exec_prefix} (wherever you locate the site file), you can set them
21233 in the site file if you specify it with the @code{CONFIG_SITE}
21234 environment variable.
21236 You can set some cache values in the site file itself.  Doing this is
21237 useful if you are cross-compiling, where it is impossible to check features
21238 that require running a test program.  You could ``prime the cache'' by
21239 setting those values correctly for that system in
21240 @file{@var{prefix}/etc/config.site}.  To find out the names of the cache
21241 variables you need to set, see the documentation of the respective
21242 Autoconf macro.  If the variables or their semantics are undocumented,
21243 you may need to look for shell variables with @samp{_cv_} in their names
21244 in the affected @command{configure} scripts, or in the Autoconf M4
21245 source code for those macros; but in that case, their name or semantics
21246 may change in a future Autoconf version.
21248 The cache file is careful to not override any variables set in the site
21249 files.  Similarly, you should not override command-line options in the
21250 site files.  Your code should check that variables such as @code{prefix}
21251 and @code{cache_file} have their default values (as set near the top of
21252 @command{configure}) before changing them.
21254 Here is a sample file @file{/usr/share/local/@/gnu/share/@/config.site}.  The
21255 command @samp{configure --prefix=/usr/share/local/gnu} would read this
21256 file (if @code{CONFIG_SITE} is not set to a different file).
21258 @example
21259 # /usr/share/local/gnu/share/config.site for configure
21261 # Change some defaults.
21262 test "$prefix" = NONE && prefix=/usr/share/local/gnu
21263 test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu
21264 test "$sharedstatedir" = '$@{prefix@}/com' && sharedstatedir=/var
21265 test "$localstatedir" = '$@{prefix@}/var' && localstatedir=/var
21267 # Give Autoconf 2.x generated configure scripts a shared default
21268 # cache file for feature test results, architecture-specific.
21269 if test "$cache_file" = /dev/null; then
21270   cache_file="$prefix/var/config.cache"
21271   # A cache file is only valid for one C compiler.
21272   CC=gcc
21274 @end example
21276 @cindex Filesystem Hierarchy Standard
21277 @cindex FHS
21279 Another use of @file{config.site} is for priming the directory variables
21280 in a manner consistent with the Filesystem Hierarchy Standard
21281 (FHS).  Once the following file is installed at
21282 @file{/usr/share/config.site}, a user can execute simply
21283 @code{./configure --prefix=/usr} to get all the directories chosen in
21284 the locations recommended by FHS.
21286 @example
21287 # /usr/share/config.site for FHS defaults when installing below /usr,
21288 # and the respective settings were not changed on the command line.
21289 if test "$prefix" = /usr; then
21290   test "$sysconfdir" = '$@{prefix@}/etc' && sysconfdir=/etc
21291   test "$sharedstatedir" = '$@{prefix@}/com' && sharedstatedir=/var
21292   test "$localstatedir" = '$@{prefix@}/var' && localstatedir=/var
21294 @end example
21296 @cindex lib64
21297 @cindex 64-bit libraries
21298 Likewise, on platforms where 64-bit libraries are built by default, then
21299 installed in @file{/usr/local/@/lib64} instead of @file{/usr/local/@/lib},
21300 it is appropriate to install @file{/usr/local/@/share/config.site}:
21302 @example
21303 # /usr/local/share/config.site for platforms that prefer
21304 # the directory /usr/local/lib64 over /usr/local/lib.
21305 test "$libdir" = '$@{exec_prefix@}/lib' && libdir='$@{exec_prefix@}/lib64'
21306 @end example
21309 @c ============================================== Running configure Scripts.
21311 @node Running configure Scripts
21312 @chapter Running @command{configure} Scripts
21313 @cindex @command{configure}
21315 Below are instructions on how to configure a package that uses a
21316 @command{configure} script, suitable for inclusion as an @file{INSTALL}
21317 file in the package.  A plain-text version of @file{INSTALL} which you
21318 may use comes with Autoconf.
21320 @menu
21321 * Basic Installation::          Instructions for typical cases
21322 * Compilers and Options::       Selecting compilers and optimization
21323 * Multiple Architectures::      Compiling for multiple architectures at once
21324 * Installation Names::          Installing in different directories
21325 * Optional Features::           Selecting optional features
21326 * Particular Systems::          Particular systems
21327 * System Type::                 Specifying the system type
21328 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
21329 * Defining Variables::          Specifying the compiler etc.
21330 * configure Invocation::        Changing how @command{configure} runs
21331 @end menu
21333 @set autoconf
21334 @include install.texi
21337 @c ============================================== config.status Invocation
21339 @node config.status Invocation
21340 @chapter config.status Invocation
21341 @cindex @command{config.status}
21343 The @command{configure} script creates a file named @file{config.status},
21344 which actually configures, @dfn{instantiates}, the template files.  It
21345 also records the configuration options that were specified when the
21346 package was last configured in case reconfiguring is needed.
21348 Synopsis:
21349 @example
21350 ./config.status @ovar{option}@dots{} @ovar{tag}@dots{}
21351 @end example
21353 It configures each @var{tag}; if none are specified, all the templates
21354 are instantiated.  A @var{tag} refers to a file or other tag associated
21355 with a configuration action, as specified by an @code{AC_CONFIG_@var{ITEMS}}
21356 macro (@pxref{Configuration Actions}).  The files must be specified
21357 without their dependencies, as in
21359 @example
21360 ./config.status foobar
21361 @end example
21363 @noindent
21366 @example
21367 ./config.status foobar:foo.in:bar.in
21368 @end example
21370 The supported options are:
21372 @table @option
21373 @item --help
21374 @itemx -h
21375 Print a summary of the command line options, the list of the template
21376 files, and exit.
21378 @item --version
21379 @itemx -V
21380 Print the version number of Autoconf and the configuration settings,
21381 and exit.
21383 @item --config
21384 Print the configuration settings in reusable way, quoted for the shell,
21385 and exit.  For example, for a debugging build that otherwise reuses the
21386 configuration from a different build directory @var{build-dir} of a
21387 package in @var{src-dir}, you could use the following:
21389 @example
21390 args=`@var{build-dir}/config.status --config`
21391 eval @var{src-dir}/configure "$args" CFLAGS=-g --srcdir=@var{src-dir}
21392 @end example
21394 @noindent
21395 Note that it may be necessary to override a @option{--srcdir} setting
21396 that was saved in the configuration, if the arguments are used in a
21397 different build directory.
21399 @item --silent
21400 @itemx --quiet
21401 @itemx -q
21402 Do not print progress messages.
21404 @item --debug
21405 @itemx -d
21406 Don't remove the temporary files.
21408 @item --file=@var{file}[:@var{template}]
21409 Require that @var{file} be instantiated as if
21410 @samp{AC_CONFIG_FILES(@var{file}:@var{template})} was used.  Both
21411 @var{file} and @var{template} may be @samp{-} in which case the standard
21412 output and/or standard input, respectively, is used.  If a
21413 @var{template} file name is relative, it is first looked for in the build
21414 tree, and then in the source tree.  @xref{Configuration Actions}, for
21415 more details.
21417 This option and the following ones provide one way for separately
21418 distributed packages to share the values computed by @command{configure}.
21419 Doing so can be useful if some of the packages need a superset of the
21420 features that one of them, perhaps a common library, does.  These
21421 options allow a @file{config.status} file to create files other than the
21422 ones that its @file{configure.ac} specifies, so it can be used for a
21423 different package, or for extracting a subset of values.  For example,
21425 @example
21426 echo '@@CC@@' | ./config.status --file=-
21427 @end example
21429 @noindent
21430 provides the value of @code{@@CC@@} on standard output.
21432 @item --header=@var{file}[:@var{template}]
21433 Same as @option{--file} above, but with @samp{AC_CONFIG_HEADERS}.
21435 @item --recheck
21436 Ask @file{config.status} to update itself and exit (no instantiation).
21437 This option is useful if you change @command{configure}, so that the
21438 results of some tests might be different from the previous run.  The
21439 @option{--recheck} option reruns @command{configure} with the same arguments
21440 you used before, plus the @option{--no-create} option, which prevents
21441 @command{configure} from running @file{config.status} and creating
21442 @file{Makefile} and other files, and the @option{--no-recursion} option,
21443 which prevents @command{configure} from running other @command{configure}
21444 scripts in subdirectories.  (This is so other Make rules can
21445 run @file{config.status} when it changes; @pxref{Automatic Remaking},
21446 for an example).
21447 @end table
21449 @file{config.status} checks several optional environment variables that
21450 can alter its behavior:
21452 @anchor{CONFIG_SHELL}
21453 @defvar CONFIG_SHELL
21454 @evindex CONFIG_SHELL
21455 The shell with which to run @command{configure} for the @option{--recheck}
21456 option.  It must be Bourne-compatible.  The default is a shell that
21457 supports @code{LINENO} if available, and @file{/bin/sh} otherwise.
21458 Invoking @command{configure} by hand bypasses this setting, so you may
21459 need to use a command like @samp{CONFIG_SHELL=/bin/bash /bin/bash ./configure}
21460 to insure that the same shell is used everywhere.  The absolute name of the
21461 shell should be passed.
21462 @end defvar
21464 @defvar CONFIG_STATUS
21465 @evindex CONFIG_STATUS
21466 The file name to use for the shell script that records the
21467 configuration.  The default is @file{./config.status}.  This variable is
21468 useful when one package uses parts of another and the @command{configure}
21469 scripts shouldn't be merged because they are maintained separately.
21470 @end defvar
21472 You can use @file{./config.status} in your makefiles.  For example, in
21473 the dependencies given above (@pxref{Automatic Remaking}),
21474 @file{config.status} is run twice when @file{configure.ac} has changed.
21475 If that bothers you, you can make each run only regenerate the files for
21476 that rule:
21477 @example
21478 @group
21479 config.h: stamp-h
21480 stamp-h: config.h.in config.status
21481         ./config.status config.h
21482         echo > stamp-h
21484 Makefile: Makefile.in config.status
21485         ./config.status Makefile
21486 @end group
21487 @end example
21489 The calling convention of @file{config.status} has changed; see
21490 @ref{Obsolete config.status Use}, for details.
21493 @c =================================================== Obsolete Constructs
21495 @node Obsolete Constructs
21496 @chapter Obsolete Constructs
21497 @cindex Obsolete constructs
21499 Autoconf changes, and throughout the years some constructs have been
21500 obsoleted.  Most of the changes involve the macros, but in some cases
21501 the tools themselves, or even some concepts, are now considered
21502 obsolete.
21504 You may completely skip this chapter if you are new to Autoconf.  Its
21505 intention is mainly to help maintainers updating their packages by
21506 understanding how to move to more modern constructs.
21508 @menu
21509 * Obsolete config.status Use::  Obsolete convention for @command{config.status}
21510 * acconfig Header::             Additional entries in @file{config.h.in}
21511 * autoupdate Invocation::       Automatic update of @file{configure.ac}
21512 * Obsolete Macros::             Backward compatibility macros
21513 * Autoconf 1::                  Tips for upgrading your files
21514 * Autoconf 2.13::               Some fresher tips
21515 @end menu
21517 @node Obsolete config.status Use
21518 @section Obsolete @file{config.status} Invocation
21520 @file{config.status} now supports arguments to specify the files to
21521 instantiate; see @ref{config.status Invocation}, for more details.
21522 Before, environment variables had to be used.
21524 @defvar CONFIG_COMMANDS
21525 @evindex CONFIG_COMMANDS
21526 The tags of the commands to execute.  The default is the arguments given
21527 to @code{AC_OUTPUT} and @code{AC_CONFIG_COMMANDS} in
21528 @file{configure.ac}.
21529 @end defvar
21531 @defvar CONFIG_FILES
21532 @evindex CONFIG_FILES
21533 The files in which to perform @samp{@@@var{variable}@@} substitutions.
21534 The default is the arguments given to @code{AC_OUTPUT} and
21535 @code{AC_CONFIG_FILES} in @file{configure.ac}.
21536 @end defvar
21538 @defvar CONFIG_HEADERS
21539 @evindex CONFIG_HEADERS
21540 The files in which to substitute C @code{#define} statements.  The
21541 default is the arguments given to @code{AC_CONFIG_HEADERS}; if that
21542 macro was not called, @file{config.status} ignores this variable.
21543 @end defvar
21545 @defvar CONFIG_LINKS
21546 @evindex CONFIG_LINKS
21547 The symbolic links to establish.  The default is the arguments given to
21548 @code{AC_CONFIG_LINKS}; if that macro was not called,
21549 @file{config.status} ignores this variable.
21550 @end defvar
21552 In @ref{config.status Invocation}, using this old interface, the example
21553 would be:
21555 @example
21556 @group
21557 config.h: stamp-h
21558 stamp-h: config.h.in config.status
21559         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_FILES= \
21560           CONFIG_HEADERS=config.h ./config.status
21561         echo > stamp-h
21563 Makefile: Makefile.in config.status
21564         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_HEADERS= \
21565           CONFIG_FILES=Makefile ./config.status
21566 @end group
21567 @end example
21569 @noindent
21570 (If @file{configure.ac} does not call @code{AC_CONFIG_HEADERS}, there is
21571 no need to set @code{CONFIG_HEADERS} in the @command{make} rules.  Equally
21572 for @code{CONFIG_COMMANDS}, etc.)
21575 @node acconfig Header
21576 @section @file{acconfig.h}
21578 @cindex @file{acconfig.h}
21579 @cindex @file{config.h.top}
21580 @cindex @file{config.h.bot}
21582 In order to produce @file{config.h.in}, @command{autoheader} needs to
21583 build or to find templates for each symbol.  Modern releases of Autoconf
21584 use @code{AH_VERBATIM} and @code{AH_TEMPLATE} (@pxref{Autoheader
21585 Macros}), but in older releases a file, @file{acconfig.h}, contained the
21586 list of needed templates.  @command{autoheader} copied comments and
21587 @code{#define} and @code{#undef} statements from @file{acconfig.h} in
21588 the current directory, if present.  This file used to be mandatory if
21589 you @code{AC_DEFINE} any additional symbols.
21591 Modern releases of Autoconf also provide @code{AH_TOP} and
21592 @code{AH_BOTTOM} if you need to prepend/append some information to
21593 @file{config.h.in}.  Ancient versions of Autoconf had a similar feature:
21594 if @file{./acconfig.h} contains the string @samp{@@TOP@@},
21595 @command{autoheader} copies the lines before the line containing
21596 @samp{@@TOP@@} into the top of the file that it generates.  Similarly,
21597 if @file{./acconfig.h} contains the string @samp{@@BOTTOM@@},
21598 @command{autoheader} copies the lines after that line to the end of the
21599 file it generates.  Either or both of those strings may be omitted.  An
21600 even older alternate way to produce the same effect in ancient versions
21601 of Autoconf is to create the files @file{@var{file}.top} (typically
21602 @file{config.h.top}) and/or @file{@var{file}.bot} in the current
21603 directory.  If they exist, @command{autoheader} copies them to the
21604 beginning and end, respectively, of its output.
21606 In former versions of Autoconf, the files used in preparing a software
21607 package for distribution were:
21608 @example
21609 @group
21610 configure.ac --.   .------> autoconf* -----> configure
21611                +---+
21612 [aclocal.m4] --+   `---.
21613 [acsite.m4] ---'       |
21614                        +--> [autoheader*] -> [config.h.in]
21615 [acconfig.h] ----.     |
21616                  +-----'
21617 [config.h.top] --+
21618 [config.h.bot] --'
21619 @end group
21620 @end example
21622 Using only the @code{AH_} macros, @file{configure.ac} should be
21623 self-contained, and should not depend upon @file{acconfig.h} etc.
21626 @node autoupdate Invocation
21627 @section Using @command{autoupdate} to Modernize @file{configure.ac}
21628 @cindex @command{autoupdate}
21630 The @command{autoupdate} program updates a @file{configure.ac} file that
21631 calls Autoconf macros by their old names to use the current macro names.
21632 In version 2 of Autoconf, most of the macros were renamed to use a more
21633 uniform and descriptive naming scheme.  @xref{Macro Names}, for a
21634 description of the new scheme.  Although the old names still work
21635 (@pxref{Obsolete Macros}, for a list of the old macros and the corresponding
21636 new names), you can make your @file{configure.ac} files more readable
21637 and make it easier to use the current Autoconf documentation if you
21638 update them to use the new macro names.
21640 @evindex SIMPLE_BACKUP_SUFFIX
21641 If given no arguments, @command{autoupdate} updates @file{configure.ac},
21642 backing up the original version with the suffix @file{~} (or the value
21643 of the environment variable @code{SIMPLE_BACKUP_SUFFIX}, if that is
21644 set).  If you give @command{autoupdate} an argument, it reads that file
21645 instead of @file{configure.ac} and writes the updated file to the
21646 standard output.
21648 @noindent
21649 @command{autoupdate} accepts the following options:
21651 @table @option
21652 @item --help
21653 @itemx -h
21654 Print a summary of the command line options and exit.
21656 @item --version
21657 @itemx -V
21658 Print the version number of Autoconf and exit.
21660 @item --verbose
21661 @itemx -v
21662 Report processing steps.
21664 @item --debug
21665 @itemx -d
21666 Don't remove the temporary files.
21668 @item --force
21669 @itemx -f
21670 Force the update even if the file has not changed.  Disregard the cache.
21672 @item --include=@var{dir}
21673 @itemx -I @var{dir}
21674 Also look for input files in @var{dir}.  Multiple invocations accumulate.
21675 Directories are browsed from last to first.
21677 @item --prepend-include=@var{dir}
21678 @itemx -B @var{dir}
21679 Prepend directory @var{dir} to the search path.  This is used to include
21680 the language-specific files before any third-party macros.
21681 @end table
21683 @node Obsolete Macros
21684 @section Obsolete Macros
21686 Several macros are obsoleted in Autoconf, for various reasons (typically
21687 they failed to quote properly, couldn't be extended for more recent
21688 issues, etc.).  They are still supported, but deprecated: their use
21689 should be avoided.
21691 During the jump from Autoconf version 1 to version 2, most of the
21692 macros were renamed to use a more uniform and descriptive naming scheme,
21693 but their signature did not change.  @xref{Macro Names}, for a
21694 description of the new naming scheme.  Below, if there is just the mapping
21695 from old names to new names for these macros, the reader is invited to
21696 refer to the definition of the new macro for the signature and the
21697 description.
21699 @defmac AC_AIX
21700 @acindex{AIX}
21701 @cvindex _ALL_SOURCE
21702 This macro is a platform-specific subset of
21703 @code{AC_USE_SYSTEM_EXTENSIONS} (@pxref{AC_USE_SYSTEM_EXTENSIONS}).
21704 @end defmac
21706 @defmac AC_ALLOCA
21707 @acindex{ALLOCA}
21708 Replaced by @code{AC_FUNC_ALLOCA} (@pxref{AC_FUNC_ALLOCA}).
21709 @end defmac
21711 @defmac AC_ARG_ARRAY
21712 @acindex{ARG_ARRAY}
21713 Removed because of limited usefulness.
21714 @end defmac
21716 @defmac AC_C_CROSS
21717 @acindex{C_CROSS}
21718 This macro is obsolete; it does nothing.
21719 @end defmac
21721 @defmac AC_C_LONG_DOUBLE
21722 @acindex{C_LONG_DOUBLE}
21723 @cvindex HAVE_LONG_DOUBLE
21724 If the C compiler supports a working @code{long double} type with more
21725 range or precision than the @code{double} type, define
21726 @code{HAVE_LONG_DOUBLE}.
21728 You should use @code{AC_TYPE_LONG_DOUBLE} or
21729 @code{AC_TYPE_LONG_DOUBLE_WIDER} instead.  @xref{Particular Types}.
21730 @end defmac
21732 @defmac AC_CANONICAL_SYSTEM
21733 @acindex{CANONICAL_SYSTEM}
21734 Determine the system type and set output variables to the names of the
21735 canonical system types.  @xref{Canonicalizing}, for details about the
21736 variables this macro sets.
21738 The user is encouraged to use either @code{AC_CANONICAL_BUILD}, or
21739 @code{AC_CANONICAL_HOST}, or @code{AC_CANONICAL_TARGET}, depending on
21740 the needs.  Using @code{AC_CANONICAL_TARGET} is enough to run the two
21741 other macros (@pxref{Canonicalizing}).
21742 @end defmac
21744 @defmac AC_CHAR_UNSIGNED
21745 @acindex{CHAR_UNSIGNED}
21746 Replaced by @code{AC_C_CHAR_UNSIGNED} (@pxref{AC_C_CHAR_UNSIGNED}).
21747 @end defmac
21749 @defmac AC_CHECK_TYPE (@var{type}, @var{default})
21750 @acindex{CHECK_TYPE}
21751 Autoconf, up to 2.13, used to provide this version of
21752 @code{AC_CHECK_TYPE}, deprecated because of its flaws.  First, although
21753 it is a member of the @code{CHECK} clan, it does
21754 more than just checking.  Secondly, missing types are defined
21755 using @code{#define}, not @code{typedef}, and this can lead to
21756 problems in the case of pointer types.
21758 This use of @code{AC_CHECK_TYPE} is obsolete and discouraged; see
21759 @ref{Generic Types}, for the description of the current macro.
21761 If the type @var{type} is not defined, define it to be the C (or C++)
21762 builtin type @var{default}, e.g., @samp{short int} or @samp{unsigned int}.
21764 This macro is equivalent to:
21766 @example
21767 AC_CHECK_TYPE([@var{type}], [],
21768   [AC_DEFINE_UNQUOTED([@var{type}], [@var{default}],
21769      [Define to `@var{default}'
21770       if <sys/types.h> does not define.])])
21771 @end example
21773 In order to keep backward compatibility, the two versions of
21774 @code{AC_CHECK_TYPE} are implemented, selected using these heuristics:
21776 @enumerate
21777 @item
21778 If there are three or four arguments, the modern version is used.
21780 @item
21781 If the second argument appears to be a C or C++ type, then the
21782 obsolete version is used.  This happens if the argument is a C or C++
21783 @emph{builtin} type or a C identifier ending in @samp{_t}, optionally
21784 followed by one of @samp{[(* } and then by a string of zero or more
21785 characters taken from the set @samp{[]()* _a-zA-Z0-9}.
21787 @item
21788 If the second argument is spelled with the alphabet of valid C and C++
21789 types, the user is warned and the modern version is used.
21791 @item
21792 Otherwise, the modern version is used.
21793 @end enumerate
21795 @noindent
21796 You are encouraged either to use a valid builtin type, or to use the
21797 equivalent modern code (see above), or better yet, to use
21798 @code{AC_CHECK_TYPES} together with
21800 @example
21801 #ifndef HAVE_LOFF_T
21802 typedef loff_t off_t;
21803 #endif
21804 @end example
21805 @end defmac
21806 @c end of AC_CHECK_TYPE
21808 @defmac AC_CHECKING (@var{feature-description})
21809 @acindex{CHECKING}
21810 Same as
21812 @example
21813 AC_MSG_NOTICE([checking @var{feature-description}@dots{}]
21814 @end example
21816 @noindent
21817 @xref{AC_MSG_NOTICE}.
21818 @end defmac
21820 @defmac AC_COMPILE_CHECK (@var{echo-text}, @var{includes}, @
21821   @var{function-body}, @var{action-if-true}, @ovar{action-if-false})
21822 @acindex{COMPILE_CHECK}
21823 This is an obsolete version of @code{AC_TRY_COMPILE} itself replaced by
21824 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}), with the
21825 addition that it prints @samp{checking for @var{echo-text}} to the
21826 standard output first, if @var{echo-text} is non-empty.  Use
21827 @code{AC_MSG_CHECKING} and @code{AC_MSG_RESULT} instead to print
21828 messages (@pxref{Printing Messages}).
21829 @end defmac
21831 @defmac AC_CONST
21832 @acindex{CONST}
21833 Replaced by @code{AC_C_CONST} (@pxref{AC_C_CONST}).
21834 @end defmac
21836 @defmac AC_CROSS_CHECK
21837 @acindex{CROSS_CHECK}
21838 Same as @code{AC_C_CROSS}, which is obsolete too, and does nothing
21839 @code{:-)}.
21840 @end defmac
21842 @defmac AC_CYGWIN
21843 @acindex{CYGWIN}
21844 @evindex CYGWIN
21845 Check for the Cygwin environment in which case the shell variable
21846 @code{CYGWIN} is set to @samp{yes}.  Don't use this macro, the dignified
21847 means to check the nature of the host is using @code{AC_CANONICAL_HOST}
21848 (@pxref{Canonicalizing}).  As a matter of fact this macro is defined as:
21850 @example
21851 AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
21852 case $host_os in
21853   *cygwin* ) CYGWIN=yes;;
21854          * ) CYGWIN=no;;
21855 esac
21856 @end example
21858 Beware that the variable @env{CYGWIN} has a special meaning when
21859 running Cygwin, and should not be changed.  That's yet another reason
21860 not to use this macro.
21861 @end defmac
21863 @defmac AC_DECL_SYS_SIGLIST
21864 @acindex{DECL_SYS_SIGLIST}
21865 @cvindex SYS_SIGLIST_DECLARED
21866 Same as:
21868 @example
21869 AC_CHECK_DECLS([sys_siglist], [], [],
21870 [#include <signal.h>
21871 /* NetBSD declares sys_siglist in unistd.h.  */
21872 #ifdef HAVE_UNISTD_H
21873 # include <unistd.h>
21874 #endif
21876 @end example
21878 @noindent
21879 @xref{AC_CHECK_DECLS}.
21880 @end defmac
21882 @defmac AC_DECL_YYTEXT
21883 @acindex{DECL_YYTEXT}
21884 Does nothing, now integrated in @code{AC_PROG_LEX} (@pxref{AC_PROG_LEX}).
21885 @end defmac
21887 @defmac AC_DIR_HEADER
21888 @acindex{DIR_HEADER}
21889 @cvindex DIRENT
21890 @cvindex SYSNDIR
21891 @cvindex SYSDIR
21892 @cvindex NDIR
21893 Like calling @code{AC_FUNC_CLOSEDIR_VOID}
21894 (@pxref{AC_FUNC_CLOSEDIR_VOID}) and @code{AC_HEADER_DIRENT}
21895 (@pxref{AC_HEADER_DIRENT}),
21896 but defines a different set of C preprocessor macros to indicate which
21897 header file is found:
21899 @multitable {@file{sys/ndir.h}} {Old Symbol} {@code{HAVE_SYS_NDIR_H}}
21900 @item Header            @tab Old Symbol     @tab New Symbol
21901 @item @file{dirent.h}   @tab @code{DIRENT}  @tab @code{HAVE_DIRENT_H}
21902 @item @file{sys/ndir.h} @tab @code{SYSNDIR} @tab @code{HAVE_SYS_NDIR_H}
21903 @item @file{sys/dir.h}  @tab @code{SYSDIR}  @tab @code{HAVE_SYS_DIR_H}
21904 @item @file{ndir.h}     @tab @code{NDIR}    @tab @code{HAVE_NDIR_H}
21905 @end multitable
21906 @end defmac
21908 @defmac AC_DYNIX_SEQ
21909 @acindex{DYNIX_SEQ}
21910 If on DYNIX/ptx, add @option{-lseq} to output variable
21911 @code{LIBS}.  This macro used to be defined as
21913 @example
21914 AC_CHECK_LIB([seq], [getmntent], [LIBS="-lseq $LIBS"])
21915 @end example
21917 @noindent
21918 now it is just @code{AC_FUNC_GETMNTENT} (@pxref{AC_FUNC_GETMNTENT}).
21919 @end defmac
21921 @defmac AC_EXEEXT
21922 @acindex{EXEEXT}
21923 @ovindex EXEEXT
21924 Defined the output variable @code{EXEEXT} based on the output of the
21925 compiler, which is now done automatically.  Typically set to empty
21926 string if Posix and @samp{.exe} if a DOS variant.
21927 @end defmac
21929 @defmac AC_EMXOS2
21930 @acindex{EMXOS2}
21931 Similar to @code{AC_CYGWIN} but checks for the EMX environment on OS/2
21932 and sets @code{EMXOS2}.  Don't use this macro, the dignified means to
21933 check the nature of the host is using @code{AC_CANONICAL_HOST}
21934 (@pxref{Canonicalizing}).
21935 @end defmac
21937 @defmac AC_ENABLE (@var{feature}, @var{action-if-given}, @
21938   @ovar{action-if-not-given})
21939 @acindex{ENABLE}
21940 This is an obsolete version of @code{AC_ARG_ENABLE} that does not
21941 support providing a help string (@pxref{AC_ARG_ENABLE}).
21942 @end defmac
21944 @defmac AC_ERROR
21945 @acindex{ERROR}
21946 Replaced by @code{AC_MSG_ERROR} (@pxref{AC_MSG_ERROR}).
21947 @end defmac
21949 @defmac AC_FIND_X
21950 @acindex{FIND_X}
21951 Replaced by @code{AC_PATH_X} (@pxref{AC_PATH_X}).
21952 @end defmac
21954 @defmac AC_FIND_XTRA
21955 @acindex{FIND_XTRA}
21956 Replaced by @code{AC_PATH_XTRA} (@pxref{AC_PATH_XTRA}).
21957 @end defmac
21959 @defmac AC_FOREACH
21960 @acindex{FOREACH}
21961 Replaced by @code{m4_foreach_w} (@pxref{m4_foreach_w}).
21962 @end defmac
21964 @defmac AC_FUNC_CHECK
21965 @acindex{FUNC_CHECK}
21966 Replaced by @code{AC_CHECK_FUNC} (@pxref{AC_CHECK_FUNC}).
21967 @end defmac
21969 @anchor{AC_FUNC_SETVBUF_REVERSED}
21970 @defmac AC_FUNC_SETVBUF_REVERSED
21971 @acindex{FUNC_SETVBUF_REVERSED}
21972 @cvindex SETVBUF_REVERSED
21973 @c @fuindex setvbuf
21974 @prindex @code{setvbuf}
21975 Do nothing.  Formerly, this macro checked whether @code{setvbuf} takes
21976 the buffering type as its second argument and the buffer pointer as the
21977 third, instead of the other way around, and defined
21978 @code{SETVBUF_REVERSED}.  However, the last systems to have the problem
21979 were those based on SVR2, which became obsolete in 1987, and the macro
21980 is no longer needed.
21981 @end defmac
21983 @defmac AC_FUNC_WAIT3
21984 @acindex{FUNC_WAIT3}
21985 @cvindex HAVE_WAIT3
21986 @c @fuindex wait3
21987 @prindex @code{wait3}
21988 If @code{wait3} is found and fills in the contents of its third argument
21989 (a @samp{struct rusage *}), which HP-UX does not do, define
21990 @code{HAVE_WAIT3}.
21992 These days portable programs should use @code{waitpid}, not
21993 @code{wait3}, as @code{wait3} has been removed from Posix.
21994 @end defmac
21996 @defmac AC_GCC_TRADITIONAL
21997 @acindex{GCC_TRADITIONAL}
21998 Replaced by @code{AC_PROG_GCC_TRADITIONAL} (@pxref{AC_PROG_GCC_TRADITIONAL}).
21999 @end defmac
22001 @defmac AC_GETGROUPS_T
22002 @acindex{GETGROUPS_T}
22003 Replaced by @code{AC_TYPE_GETGROUPS} (@pxref{AC_TYPE_GETGROUPS}).
22004 @end defmac
22006 @defmac AC_GETLOADAVG
22007 @acindex{GETLOADAVG}
22008 Replaced by @code{AC_FUNC_GETLOADAVG} (@pxref{AC_FUNC_GETLOADAVG}).
22009 @end defmac
22011 @defmac AC_GNU_SOURCE
22012 @acindex{GNU_SOURCE}
22013 @cvindex _GNU_SOURCE
22014 This macro is a platform-specific subset of
22015 @code{AC_USE_SYSTEM_EXTENSIONS} (@pxref{AC_USE_SYSTEM_EXTENSIONS}).
22016 @end defmac
22018 @defmac AC_HAVE_FUNCS
22019 @acindex{HAVE_FUNCS}
22020 Replaced by @code{AC_CHECK_FUNCS} (@pxref{AC_CHECK_FUNCS}).
22021 @end defmac
22023 @defmac AC_HAVE_HEADERS
22024 @acindex{HAVE_HEADERS}
22025 Replaced by @code{AC_CHECK_HEADERS} (@pxref{AC_CHECK_HEADERS}).
22026 @end defmac
22028 @defmac AC_HAVE_LIBRARY (@var{library}, @ovar{action-if-found}, @
22029   @ovar{action-if-not-found}, @ovar{other-libraries})
22030 @acindex{HAVE_LIBRARY}
22031 This macro is equivalent to calling @code{AC_CHECK_LIB} with a
22032 @var{function} argument of @code{main}.  In addition, @var{library} can
22033 be written as any of @samp{foo}, @option{-lfoo}, or @samp{libfoo.a}.  In
22034 all of those cases, the compiler is passed @option{-lfoo}.  However,
22035 @var{library} cannot be a shell variable; it must be a literal name.
22036 @xref{AC_CHECK_LIB}.
22037 @end defmac
22039 @defmac AC_HAVE_POUNDBANG
22040 @acindex{HAVE_POUNDBANG}
22041 Replaced by @code{AC_SYS_INTERPRETER} (@pxref{AC_SYS_INTERPRETER}).
22042 @end defmac
22044 @defmac AC_HEADER_CHECK
22045 @acindex{HEADER_CHECK}
22046 Replaced by @code{AC_CHECK_HEADER} (@pxref{AC_CHECK_HEADER}).
22047 @end defmac
22049 @defmac AC_HEADER_EGREP
22050 @acindex{HEADER_EGREP}
22051 Replaced by @code{AC_EGREP_HEADER} (@pxref{AC_EGREP_HEADER}).
22052 @end defmac
22054 @defmac AC_HELP_STRING
22055 @acindex{HELP_STRING}
22056 Replaced by @code{AS_HELP_STRING} (@pxref{AS_HELP_STRING}).
22057 @end defmac
22059 @defmac AC_INIT (@var{unique-file-in-source-dir})
22060 @acindex{INIT}
22061 Formerly @code{AC_INIT} used to have a single argument, and was
22062 equivalent to:
22064 @example
22065 AC_INIT
22066 AC_CONFIG_SRCDIR(@var{unique-file-in-source-dir})
22067 @end example
22068 See @ref{AC_INIT} and @ref{AC_CONFIG_SRCDIR}.
22069 @end defmac
22071 @defmac AC_INLINE
22072 @acindex{INLINE}
22073 Replaced by @code{AC_C_INLINE} (@pxref{AC_C_INLINE}).
22074 @end defmac
22076 @defmac AC_INT_16_BITS
22077 @acindex{INT_16_BITS}
22078 @cvindex INT_16_BITS
22079 If the C type @code{int} is 16 bits wide, define @code{INT_16_BITS}.
22080 Use @samp{AC_CHECK_SIZEOF(int)} instead (@pxref{AC_CHECK_SIZEOF}).
22081 @end defmac
22083 @defmac AC_IRIX_SUN
22084 @acindex{IRIX_SUN}
22085 If on IRIX (Silicon Graphics Unix), add @option{-lsun} to output
22086 @code{LIBS}.  If you were using it to get @code{getmntent}, use
22087 @code{AC_FUNC_GETMNTENT} instead.  If you used it for the NIS versions
22088 of the password and group functions, use @samp{AC_CHECK_LIB(sun,
22089 getpwnam)}.  Up to Autoconf 2.13, it used to be
22091 @example
22092 AC_CHECK_LIB([sun], [getmntent], [LIBS="-lsun $LIBS"])
22093 @end example
22095 @noindent
22096 now it is defined as
22098 @example
22099 AC_FUNC_GETMNTENT
22100 AC_CHECK_LIB([sun], [getpwnam])
22101 @end example
22103 @noindent
22104 See @ref{AC_FUNC_GETMNTENT} and @ref{AC_CHECK_LIB}.
22105 @end defmac
22107 @defmac AC_ISC_POSIX
22108 @acindex{ISC_POSIX}
22109 @ovindex LIBS
22110 This macro adds @option{-lcposix} to output variable @code{LIBS} if
22111 necessary for Posix facilities.  Sun dropped support for the obsolete
22112 INTERACTIVE Systems Corporation Unix on 2006-07-23.  New programs
22113 need not use this macro.  It is implemented as
22114 @code{AC_SEARCH_LIBS([strerror], [cposix])} (@pxref{AC_SEARCH_LIBS}).
22115 @end defmac
22117 @defmac AC_LANG_C
22118 @acindex{LANG_C}
22119 Same as @samp{AC_LANG([C])} (@pxref{AC_LANG}).
22120 @end defmac
22122 @defmac AC_LANG_CPLUSPLUS
22123 @acindex{LANG_CPLUSPLUS}
22124 Same as @samp{AC_LANG([C++])} (@pxref{AC_LANG}).
22125 @end defmac
22127 @defmac AC_LANG_FORTRAN77
22128 @acindex{LANG_FORTRAN77}
22129 Same as @samp{AC_LANG([Fortran 77])} (@pxref{AC_LANG}).
22130 @end defmac
22132 @defmac AC_LANG_RESTORE
22133 @acindex{LANG_RESTORE}
22134 Select the @var{language} that is saved on the top of the stack, as set
22135 by @code{AC_LANG_SAVE}, remove it from the stack, and call
22136 @code{AC_LANG(@var{language})}.  @xref{Language Choice}, for the
22137 preferred way to change languages.
22138 @end defmac
22140 @defmac AC_LANG_SAVE
22141 @acindex{LANG_SAVE}
22142 Remember the current language (as set by @code{AC_LANG}) on a stack.
22143 The current language does not change.  @code{AC_LANG_PUSH} is preferred
22144 (@pxref{AC_LANG_PUSH}).
22145 @end defmac
22147 @defmac AC_LINK_FILES (@var{source}@dots{}, @var{dest}@dots{})
22148 @acindex{LINK_FILES}
22149 This is an obsolete version of @code{AC_CONFIG_LINKS}
22150 (@pxref{AC_CONFIG_LINKS}.  An updated version of:
22152 @example
22153 AC_LINK_FILES(config/$machine.h config/$obj_format.h,
22154               host.h            object.h)
22155 @end example
22157 @noindent
22160 @example
22161 AC_CONFIG_LINKS([host.h:config/$machine.h
22162                 object.h:config/$obj_format.h])
22163 @end example
22164 @end defmac
22166 @defmac AC_LN_S
22167 @acindex{LN_S}
22168 Replaced by @code{AC_PROG_LN_S} (@pxref{AC_PROG_LN_S}).
22169 @end defmac
22171 @defmac AC_LONG_64_BITS
22172 @acindex{LONG_64_BITS}
22173 @cvindex LONG_64_BITS
22174 Define @code{LONG_64_BITS} if the C type @code{long int} is 64 bits wide.
22175 Use the generic macro @samp{AC_CHECK_SIZEOF([long int])} instead
22176 (@pxref{AC_CHECK_SIZEOF}).
22177 @end defmac
22179 @defmac AC_LONG_DOUBLE
22180 @acindex{LONG_DOUBLE}
22181 If the C compiler supports a working @code{long double} type with more
22182 range or precision than the @code{double} type, define
22183 @code{HAVE_LONG_DOUBLE}.
22185 You should use @code{AC_TYPE_LONG_DOUBLE} or
22186 @code{AC_TYPE_LONG_DOUBLE_WIDER} instead.  @xref{Particular Types}.
22187 @end defmac
22189 @defmac AC_LONG_FILE_NAMES
22190 @acindex{LONG_FILE_NAMES}
22191 Replaced by
22192 @example
22193 AC_SYS_LONG_FILE_NAMES
22194 @end example
22195 @noindent
22196 @xref{AC_SYS_LONG_FILE_NAMES}.
22197 @end defmac
22199 @defmac AC_MAJOR_HEADER
22200 @acindex{MAJOR_HEADER}
22201 Replaced by @code{AC_HEADER_MAJOR} (@pxref{AC_HEADER_MAJOR}).
22202 @end defmac
22204 @defmac AC_MEMORY_H
22205 @acindex{MEMORY_H}
22206 @cvindex NEED_MEMORY_H
22207 Used to define @code{NEED_MEMORY_H} if the @code{mem} functions were
22208 defined in @file{memory.h}.  Today it is equivalent to
22209 @samp{AC_CHECK_HEADERS([memory.h])} (@pxref{AC_CHECK_HEADERS}).  Adjust
22210 your code to depend upon
22211 @code{HAVE_MEMORY_H}, not @code{NEED_MEMORY_H}; see @ref{Standard
22212 Symbols}.
22213 @end defmac
22215 @defmac AC_MINGW32
22216 @acindex{MINGW32}
22217 Similar to @code{AC_CYGWIN} but checks for the MinGW compiler
22218 environment and sets @code{MINGW32}.  Don't use this macro, the
22219 dignified means to check the nature of the host is using
22220 @code{AC_CANONICAL_HOST} (@pxref{Canonicalizing}).
22221 @end defmac
22223 @defmac AC_MINIX
22224 @acindex{MINIX}
22225 @cvindex _MINIX
22226 @cvindex _POSIX_SOURCE
22227 @cvindex _POSIX_1_SOURCE
22228 This macro is a platform-specific subset of
22229 @code{AC_USE_SYSTEM_EXTENSIONS} (@pxref{AC_USE_SYSTEM_EXTENSIONS}).
22230 @end defmac
22232 @defmac AC_MINUS_C_MINUS_O
22233 @acindex{MINUS_C_MINUS_O}
22234 Replaced by @code{AC_PROG_CC_C_O} (@pxref{AC_PROG_CC_C_O}).
22235 @end defmac
22237 @defmac AC_MMAP
22238 @acindex{MMAP}
22239 Replaced by @code{AC_FUNC_MMAP} (@pxref{AC_FUNC_MMAP}).
22240 @end defmac
22242 @defmac AC_MODE_T
22243 @acindex{MODE_T}
22244 Replaced by @code{AC_TYPE_MODE_T} (@pxref{AC_TYPE_MODE_T}).
22245 @end defmac
22247 @defmac AC_OBJEXT
22248 @acindex{OBJEXT}
22249 @ovindex OBJEXT
22250 Defined the output variable @code{OBJEXT} based on the output of the
22251 compiler, after .c files have been excluded.  Typically set to @samp{o}
22252 if Posix, @samp{obj} if a DOS variant.
22253 Now the compiler checking macros handle
22254 this automatically.
22255 @end defmac
22257 @defmac AC_OBSOLETE (@var{this-macro-name}, @ovar{suggestion})
22258 @acindex{OBSOLETE}
22259 Make M4 print a message to the standard error output warning that
22260 @var{this-macro-name} is obsolete, and giving the file and line number
22261 where it was called.  @var{this-macro-name} should be the name of the
22262 macro that is calling @code{AC_OBSOLETE}.  If @var{suggestion} is given,
22263 it is printed at the end of the warning message; for example, it can be
22264 a suggestion for what to use instead of @var{this-macro-name}.
22266 For instance
22268 @example
22269 AC_OBSOLETE([$0], [; use AC_CHECK_HEADERS(unistd.h) instead])dnl
22270 @end example
22272 @noindent
22273 You are encouraged to use @code{AU_DEFUN} instead, since it gives better
22274 services to the user (@pxref{AU_DEFUN}).
22275 @end defmac
22277 @defmac AC_OFF_T
22278 @acindex{OFF_T}
22279 Replaced by @code{AC_TYPE_OFF_T} (@pxref{AC_TYPE_OFF_T}).
22280 @end defmac
22282 @defmac AC_OUTPUT (@ovar{file}@dots{}, @ovar{extra-cmds}, @ovar{init-cmds})
22283 @acindex{OUTPUT}
22284 The use of @code{AC_OUTPUT} with arguments is deprecated.  This obsoleted
22285 interface is equivalent to:
22287 @example
22288 @group
22289 AC_CONFIG_FILES(@var{file}@dots{})
22290 AC_CONFIG_COMMANDS([default],
22291                    @var{extra-cmds}, @var{init-cmds})
22292 AC_OUTPUT
22293 @end group
22294 @end example
22296 @noindent
22297 See @ref{AC_CONFIG_FILES}, @ref{AC_CONFIG_COMMANDS}, and @ref{AC_OUTPUT}.
22298 @end defmac
22300 @defmac AC_OUTPUT_COMMANDS (@var{extra-cmds}, @ovar{init-cmds})
22301 @acindex{OUTPUT_COMMANDS}
22302 Specify additional shell commands to run at the end of
22303 @file{config.status}, and shell commands to initialize any variables
22304 from @command{configure}.  This macro may be called multiple times.  It is
22305 obsolete, replaced by @code{AC_CONFIG_COMMANDS} (@pxref{AC_CONFIG_COMMANDS}).
22307 Here is an unrealistic example:
22309 @example
22310 fubar=27
22311 AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.],
22312                    [fubar=$fubar])
22313 AC_OUTPUT_COMMANDS([echo this is another, extra, bit],
22314                    [echo init bit])
22315 @end example
22317 Aside from the fact that @code{AC_CONFIG_COMMANDS} requires an
22318 additional key, an important difference is that
22319 @code{AC_OUTPUT_COMMANDS} is quoting its arguments twice, unlike
22320 @code{AC_CONFIG_COMMANDS}.  This means that @code{AC_CONFIG_COMMANDS}
22321 can safely be given macro calls as arguments:
22323 @example
22324 AC_CONFIG_COMMANDS(foo, [my_FOO()])
22325 @end example
22327 @noindent
22328 Conversely, where one level of quoting was enough for literal strings
22329 with @code{AC_OUTPUT_COMMANDS}, you need two with
22330 @code{AC_CONFIG_COMMANDS}.  The following lines are equivalent:
22332 @example
22333 @group
22334 AC_OUTPUT_COMMANDS([echo "Square brackets: []"])
22335 AC_CONFIG_COMMANDS([default], [[echo "Square brackets: []"]])
22336 @end group
22337 @end example
22338 @end defmac
22340 @defmac AC_PID_T
22341 @acindex{PID_T}
22342 Replaced by @code{AC_TYPE_PID_T} (@pxref{AC_TYPE_PID_T}).
22343 @end defmac
22345 @defmac AC_PREFIX
22346 @acindex{PREFIX}
22347 Replaced by @code{AC_PREFIX_PROGRAM} (@pxref{AC_PREFIX_PROGRAM}).
22348 @end defmac
22350 @defmac AC_PROGRAMS_CHECK
22351 @acindex{PROGRAMS_CHECK}
22352 Replaced by @code{AC_CHECK_PROGS} (@pxref{AC_CHECK_PROGS}).
22353 @end defmac
22355 @defmac AC_PROGRAMS_PATH
22356 @acindex{PROGRAMS_PATH}
22357 Replaced by @code{AC_PATH_PROGS} (@pxref{AC_PATH_PROGS}).
22358 @end defmac
22360 @defmac AC_PROGRAM_CHECK
22361 @acindex{PROGRAM_CHECK}
22362 Replaced by @code{AC_CHECK_PROG} (@pxref{AC_CHECK_PROG}).
22363 @end defmac
22365 @defmac AC_PROGRAM_EGREP
22366 @acindex{PROGRAM_EGREP}
22367 Replaced by @code{AC_EGREP_CPP} (@pxref{AC_EGREP_CPP}).
22368 @end defmac
22370 @defmac AC_PROGRAM_PATH
22371 @acindex{PROGRAM_PATH}
22372 Replaced by @code{AC_PATH_PROG} (@pxref{AC_PATH_PROG}).
22373 @end defmac
22375 @defmac AC_REMOTE_TAPE
22376 @acindex{REMOTE_TAPE}
22377 Removed because of limited usefulness.
22378 @end defmac
22380 @defmac AC_RESTARTABLE_SYSCALLS
22381 @acindex{RESTARTABLE_SYSCALLS}
22382 This macro was renamed @code{AC_SYS_RESTARTABLE_SYSCALLS}.  However,
22383 these days portable programs should use @code{sigaction} with
22384 @code{SA_RESTART} if they want restartable system calls.  They should
22385 not rely on @code{HAVE_RESTARTABLE_SYSCALLS}, since nowadays whether a
22386 system call is restartable is a dynamic issue, not a configuration-time
22387 issue.
22388 @end defmac
22390 @defmac AC_RETSIGTYPE
22391 @acindex{RETSIGTYPE}
22392 Replaced by @code{AC_TYPE_SIGNAL} (@pxref{AC_TYPE_SIGNAL}), which itself
22393 is obsolete when assuming C89 or better.
22394 @end defmac
22396 @defmac AC_RSH
22397 @acindex{RSH}
22398 Removed because of limited usefulness.
22399 @end defmac
22401 @defmac AC_SCO_INTL
22402 @acindex{SCO_INTL}
22403 @ovindex LIBS
22404 If on SCO Unix, add @option{-lintl} to output variable @code{LIBS}.  This
22405 macro used to do this:
22407 @example
22408 AC_CHECK_LIB([intl], [strftime], [LIBS="-lintl $LIBS"])
22409 @end example
22411 @noindent
22412 Now it just calls @code{AC_FUNC_STRFTIME} instead (@pxref{AC_FUNC_STRFTIME}).
22413 @end defmac
22415 @defmac AC_SETVBUF_REVERSED
22416 @acindex{SETVBUF_REVERSED}
22417 Replaced by
22418 @example
22419 AC_FUNC_SETVBUF_REVERSED
22420 @end example
22421 @noindent
22422 @xref{AC_FUNC_SETVBUF_REVERSED}.
22423 @end defmac
22425 @defmac AC_SET_MAKE
22426 @acindex{SET_MAKE}
22427 Replaced by @code{AC_PROG_MAKE_SET} (@pxref{AC_PROG_MAKE_SET}).
22428 @end defmac
22430 @defmac AC_SIZEOF_TYPE
22431 @acindex{SIZEOF_TYPE}
22432 Replaced by @code{AC_CHECK_SIZEOF} (@pxref{AC_CHECK_SIZEOF}).
22433 @end defmac
22435 @defmac AC_SIZE_T
22436 @acindex{SIZE_T}
22437 Replaced by @code{AC_TYPE_SIZE_T} (@pxref{AC_TYPE_SIZE_T}).
22438 @end defmac
22440 @defmac AC_STAT_MACROS_BROKEN
22441 @acindex{STAT_MACROS_BROKEN}
22442 Replaced by @code{AC_HEADER_STAT} (@pxref{AC_HEADER_STAT}).
22443 @end defmac
22445 @defmac AC_STDC_HEADERS
22446 @acindex{STDC_HEADERS}
22447 Replaced by @code{AC_HEADER_STDC} (@pxref{AC_HEADER_STDC}).
22448 @end defmac
22450 @defmac AC_STRCOLL
22451 @acindex{STRCOLL}
22452 Replaced by @code{AC_FUNC_STRCOLL} (@pxref{AC_FUNC_STRCOLL}).
22453 @end defmac
22455 @defmac AC_STRUCT_ST_BLKSIZE
22456 @acindex{STRUCT_ST_BLKSIZE}
22457 @cvindex HAVE_STRUCT_STAT_ST_BLKSIZE
22458 @cvindex HAVE_ST_BLKSIZE
22459 If @code{struct stat} contains an @code{st_blksize} member, define
22460 @code{HAVE_STRUCT_STAT_ST_BLKSIZE}.  The former name,
22461 @code{HAVE_ST_BLKSIZE} is to be avoided, as its support will cease in
22462 the future.  This macro is obsoleted, and should be replaced by
22464 @example
22465 AC_CHECK_MEMBERS([struct stat.st_blksize])
22466 @end example
22467 @noindent
22468 @xref{AC_CHECK_MEMBERS}.
22469 @end defmac
22471 @defmac AC_STRUCT_ST_RDEV
22472 @acindex{STRUCT_ST_RDEV}
22473 @cvindex HAVE_ST_RDEV
22474 @cvindex HAVE_STRUCT_STAT_ST_RDEV
22475 If @code{struct stat} contains an @code{st_rdev} member, define
22476 @code{HAVE_STRUCT_STAT_ST_RDEV}.  The former name for this macro,
22477 @code{HAVE_ST_RDEV}, is to be avoided as it will cease to be supported
22478 in the future.  Actually, even the new macro is obsolete and should be
22479 replaced by:
22480 @example
22481 AC_CHECK_MEMBERS([struct stat.st_rdev])
22482 @end example
22483 @noindent
22484 @xref{AC_CHECK_MEMBERS}.
22485 @end defmac
22487 @defmac AC_ST_BLKSIZE
22488 @acindex{ST_BLKSIZE}
22489 Replaced by @code{AC_CHECK_MEMBERS} (@pxref{AC_CHECK_MEMBERS}).
22490 @end defmac
22492 @defmac AC_ST_BLOCKS
22493 @acindex{ST_BLOCKS}
22494 Replaced by @code{AC_STRUCT_ST_BLOCKS} (@pxref{AC_STRUCT_ST_BLOCKS}).
22495 @end defmac
22497 @defmac AC_ST_RDEV
22498 @acindex{ST_RDEV}
22499 Replaced by @code{AC_CHECK_MEMBERS} (@pxref{AC_CHECK_MEMBERS}).
22500 @end defmac
22502 @defmac AC_SYS_RESTARTABLE_SYSCALLS
22503 @acindex{SYS_RESTARTABLE_SYSCALLS}
22504 @cvindex HAVE_RESTARTABLE_SYSCALLS
22505 If the system automatically restarts a system call that is interrupted
22506 by a signal, define @code{HAVE_RESTARTABLE_SYSCALLS}.  This macro does
22507 not check whether system calls are restarted in general---it checks whether a
22508 signal handler installed with @code{signal} (but not @code{sigaction})
22509 causes system calls to be restarted.  It does not check whether system calls
22510 can be restarted when interrupted by signals that have no handler.
22512 These days portable programs should use @code{sigaction} with
22513 @code{SA_RESTART} if they want restartable system calls.  They should
22514 not rely on @code{HAVE_RESTARTABLE_SYSCALLS}, since nowadays whether a
22515 system call is restartable is a dynamic issue, not a configuration-time
22516 issue.
22517 @end defmac
22519 @defmac AC_SYS_SIGLIST_DECLARED
22520 @acindex{SYS_SIGLIST_DECLARED}
22521 This macro was renamed @code{AC_DECL_SYS_SIGLIST}.  However, even that
22522 name is obsolete, as the same functionality is now acheived via
22523 @code{AC_CHECK_DECLS} (@pxref{AC_CHECK_DECLS}).
22524 @end defmac
22526 @defmac AC_TEST_CPP
22527 @acindex{TEST_CPP}
22528 This macro was renamed @code{AC_TRY_CPP}, which in turn was replaced by
22529 @code{AC_PREPROC_IFELSE} (@pxref{AC_PREPROC_IFELSE}).
22530 @end defmac
22532 @defmac AC_TEST_PROGRAM
22533 @acindex{TEST_PROGRAM}
22534 This macro was renamed @code{AC_TRY_RUN}, which in turn was replaced by
22535 @code{AC_RUN_IFELSE} (@pxref{AC_RUN_IFELSE}).
22536 @end defmac
22538 @defmac AC_TIMEZONE
22539 @acindex{TIMEZONE}
22540 Replaced by @code{AC_STRUCT_TIMEZONE} (@pxref{AC_STRUCT_TIMEZONE}).
22541 @end defmac
22543 @defmac AC_TIME_WITH_SYS_TIME
22544 @acindex{TIME_WITH_SYS_TIME}
22545 Replaced by @code{AC_HEADER_TIME} (@pxref{AC_HEADER_TIME}).
22546 @end defmac
22548 @defmac AC_TRY_COMPILE (@var{includes}, @var{function-body}, @
22549   @ovar{action-if-true}, @ovar{action-if-false})
22550 @acindex{TRY_COMPILE}
22551 Same as:
22553 @example
22554 AC_COMPILE_IFELSE(
22555   [AC_LANG_PROGRAM([[@var{includes}]],
22556      [[@var{function-body}]])],
22557   [@var{action-if-true}],
22558   [@var{action-if-false}])
22559 @end example
22561 @noindent
22562 @xref{Running the Compiler}.
22564 This macro double quotes both @var{includes} and @var{function-body}.
22566 For C and C++, @var{includes} is any @code{#include} statements needed
22567 by the code in @var{function-body} (@var{includes} is ignored if
22568 the currently selected language is Fortran or Fortran 77).  The compiler
22569 and compilation flags are determined by the current language
22570 (@pxref{Language Choice}).
22571 @end defmac
22573 @defmac AC_TRY_CPP (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
22574 @acindex{TRY_CPP}
22575 Same as:
22577 @example
22578 AC_PREPROC_IFELSE(
22579   [AC_LANG_SOURCE([[@var{input}]])],
22580   [@var{action-if-true}],
22581   [@var{action-if-false}])
22582 @end example
22584 @noindent
22585 @xref{Running the Preprocessor}.
22587 This macro double quotes the @var{input}.
22588 @end defmac
22590 @defmac AC_TRY_LINK (@var{includes}, @var{function-body}, @
22591   @ovar{action-if-true}, @ovar{action-if-false})
22592 @acindex{TRY_LINK}
22593 Same as:
22595 @example
22596 AC_LINK_IFELSE(
22597   [AC_LANG_PROGRAM([[@var{includes}]],
22598      [[@var{function-body}]])],
22599   [@var{action-if-true}],
22600   [@var{action-if-false}])
22601 @end example
22603 @noindent
22604 @xref{Running the Compiler}.
22606 This macro double quotes both @var{includes} and @var{function-body}.
22608 Depending on the current language (@pxref{Language Choice}), create a
22609 test program to see whether a function whose body consists of
22610 @var{function-body} can be compiled and linked.  If the file compiles
22611 and links successfully, run shell commands @var{action-if-found},
22612 otherwise run @var{action-if-not-found}.
22614 This macro double quotes both @var{includes} and @var{function-body}.
22616 For C and C++, @var{includes} is any @code{#include} statements needed
22617 by the code in @var{function-body} (@var{includes} is ignored if
22618 the currently selected language is Fortran or Fortran 77).  The compiler
22619 and compilation flags are determined by the current language
22620 (@pxref{Language Choice}), and in addition @code{LDFLAGS} and
22621 @code{LIBS} are used for linking.
22622 @end defmac
22624 @defmac AC_TRY_LINK_FUNC (@var{function}, @ovar{action-if-found}, @
22625   @ovar{action-if-not-found})
22626 @acindex{TRY_LINK_FUNC}
22627 This macro is equivalent to
22628 @example
22629 AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])],
22630   [@var{action-if-found}], [@var{action-if-not-found}])
22631 @end example
22632 @noindent
22633 @xref{AC_LINK_IFELSE}.
22634 @end defmac
22636 @defmac AC_TRY_RUN (@var{program}, @ovar{action-if-true}, @
22637   @ovar{action-if-false}, @ovar{action-if-cross-compiling})
22638 @acindex{TRY_RUN}
22639 Same as:
22641 @example
22642 AC_RUN_IFELSE(
22643   [AC_LANG_SOURCE([[@var{program}]])],
22644   [@var{action-if-true}],
22645   [@var{action-if-false}],
22646   [@var{action-if-cross-compiling}])
22647 @end example
22649 @noindent
22650 @xref{Runtime}.
22651 @end defmac
22653 @anchor{AC_TYPE_SIGNAL}
22654 @defmac AC_TYPE_SIGNAL
22655 @acindex{TYPE_SIGNAL}
22656 @cvindex RETSIGTYPE
22657 @hdrindex{signal.h}
22658 If @file{signal.h} declares @code{signal} as returning a pointer to a
22659 function returning @code{void}, define @code{RETSIGTYPE} to be
22660 @code{void}; otherwise, define it to be @code{int}.  These days, it is
22661 portable to assume C89, and that signal handlers return @code{void},
22662 without needing to use this macro or @code{RETSIGTYPE}.
22664 When targetting older K&R C, it is possible to define signal handlers as
22665 returning type @code{RETSIGTYPE}, and omit a return statement:
22667 @example
22668 @group
22669 RETSIGTYPE
22670 hup_handler ()
22672 @dots{}
22674 @end group
22675 @end example
22676 @end defmac
22678 @defmac AC_UID_T
22679 @acindex{UID_T}
22680 Replaced by @code{AC_TYPE_UID_T} (@pxref{AC_TYPE_UID_T}).
22681 @end defmac
22683 @defmac AC_UNISTD_H
22684 @acindex{UNISTD_H}
22685 Same as @samp{AC_CHECK_HEADERS([unistd.h])} (@pxref{AC_CHECK_HEADERS}).
22686 @end defmac
22688 @defmac AC_USG
22689 @acindex{USG}
22690 @cvindex USG
22691 Define @code{USG} if the BSD string functions are defined in
22692 @file{strings.h}.  You should no longer depend upon @code{USG}, but on
22693 @code{HAVE_STRING_H}; see @ref{Standard Symbols}.
22694 @end defmac
22696 @defmac AC_UTIME_NULL
22697 @acindex{UTIME_NULL}
22698 Replaced by @code{AC_FUNC_UTIME_NULL} (@pxref{AC_FUNC_UTIME_NULL}).
22699 @end defmac
22701 @defmac AC_VALIDATE_CACHED_SYSTEM_TUPLE (@ovar{cmd})
22702 @acindex{VALIDATE_CACHED_SYSTEM_TUPLE}
22703 If the cache file is inconsistent with the current host, target and
22704 build system types, it used to execute @var{cmd} or print a default
22705 error message.  This is now handled by default.
22706 @end defmac
22708 @defmac AC_VERBOSE (@var{result-description})
22709 @acindex{VERBOSE}
22710 Replaced by @code{AC_MSG_RESULT} (@pxref{AC_MSG_RESULT}).
22711 @end defmac
22713 @defmac AC_VFORK
22714 @acindex{VFORK}
22715 Replaced by @code{AC_FUNC_FORK} (@pxref{AC_FUNC_FORK}).
22716 @end defmac
22718 @defmac AC_VPRINTF
22719 @acindex{VPRINTF}
22720 Replaced by @code{AC_FUNC_VPRINTF} (@pxref{AC_FUNC_VPRINTF}).
22721 @end defmac
22723 @defmac AC_WAIT3
22724 @acindex{WAIT3}
22725 This macro was renamed @code{AC_FUNC_WAIT3}.  However, these days
22726 portable programs should use @code{waitpid}, not @code{wait3}, as
22727 @code{wait3} has been removed from Posix.
22728 @end defmac
22730 @defmac AC_WARN
22731 @acindex{WARN}
22732 Replaced by @code{AC_MSG_WARN} (@pxref{AC_MSG_WARN}).
22733 @end defmac
22735 @defmac AC_WITH (@var{package}, @var{action-if-given}, @
22736   @ovar{action-if-not-given})
22737 @acindex{WITH}
22738 This is an obsolete version of @code{AC_ARG_WITH} that does not
22739 support providing a help string (@pxref{AC_ARG_WITH}).
22740 @end defmac
22742 @defmac AC_WORDS_BIGENDIAN
22743 @acindex{WORDS_BIGENDIAN}
22744 Replaced by @code{AC_C_BIGENDIAN} (@pxref{AC_C_BIGENDIAN}).
22745 @end defmac
22747 @defmac AC_XENIX_DIR
22748 @acindex{XENIX_DIR}
22749 @ovindex LIBS
22750 This macro used to add @option{-lx} to output variable @code{LIBS} if on
22751 Xenix.  Also, if @file{dirent.h} is being checked for, added
22752 @option{-ldir} to @code{LIBS}.  Now it is merely an alias of
22753 @code{AC_HEADER_DIRENT} instead, plus some code to detect whether
22754 running XENIX on which you should not depend:
22756 @example
22757 AC_MSG_CHECKING([for Xenix])
22758 AC_EGREP_CPP([yes],
22759 [#if defined M_XENIX && !defined M_UNIX
22760   yes
22761 #endif],
22762              [AC_MSG_RESULT([yes]); XENIX=yes],
22763              [AC_MSG_RESULT([no]); XENIX=])
22764 @end example
22765 @noindent
22766 Don't use this macro, the dignified means to check the nature of the
22767 host is using @code{AC_CANONICAL_HOST} (@pxref{Canonicalizing}).
22768 @end defmac
22770 @defmac AC_YYTEXT_POINTER
22771 @acindex{YYTEXT_POINTER}
22772 This macro was renamed @code{AC_DECL_YYTEXT}, which in turn was
22773 integrated into @code{AC_PROG_LEX} (@pxref{AC_PROG_LEX}).
22774 @end defmac
22776 @node Autoconf 1
22777 @section Upgrading From Version 1
22778 @cindex Upgrading autoconf
22779 @cindex Autoconf upgrading
22781 Autoconf version 2 is mostly backward compatible with version 1.
22782 However, it introduces better ways to do some things, and doesn't
22783 support some of the ugly things in version 1.  So, depending on how
22784 sophisticated your @file{configure.ac} files are, you might have to do
22785 some manual work in order to upgrade to version 2.  This chapter points
22786 out some problems to watch for when upgrading.  Also, perhaps your
22787 @command{configure} scripts could benefit from some of the new features in
22788 version 2; the changes are summarized in the file @file{NEWS} in the
22789 Autoconf distribution.
22791 @menu
22792 * Changed File Names::          Files you might rename
22793 * Changed Makefiles::           New things to put in @file{Makefile.in}
22794 * Changed Macros::              Macro calls you might replace
22795 * Changed Results::             Changes in how to check test results
22796 * Changed Macro Writing::       Better ways to write your own macros
22797 @end menu
22799 @node Changed File Names
22800 @subsection Changed File Names
22802 If you have an @file{aclocal.m4} installed with Autoconf (as opposed to
22803 in a particular package's source directory), you must rename it to
22804 @file{acsite.m4}.  @xref{autoconf Invocation}.
22806 If you distribute @file{install.sh} with your package, rename it to
22807 @file{install-sh} so @command{make} builtin rules don't inadvertently
22808 create a file called @file{install} from it.  @code{AC_PROG_INSTALL}
22809 looks for the script under both names, but it is best to use the new name.
22811 If you were using @file{config.h.top}, @file{config.h.bot}, or
22812 @file{acconfig.h}, you still can, but you have less clutter if you
22813 use the @code{AH_} macros.  @xref{Autoheader Macros}.
22815 @node Changed Makefiles
22816 @subsection Changed Makefiles
22818 Add @samp{@@CFLAGS@@}, @samp{@@CPPFLAGS@@}, and @samp{@@LDFLAGS@@} in
22819 your @file{Makefile.in} files, so they can take advantage of the values
22820 of those variables in the environment when @command{configure} is run.
22821 Doing this isn't necessary, but it's a convenience for users.
22823 Also add @samp{@@configure_input@@} in a comment to each input file for
22824 @code{AC_OUTPUT}, so that the output files contain a comment saying
22825 they were produced by @command{configure}.  Automatically selecting the
22826 right comment syntax for all the kinds of files that people call
22827 @code{AC_OUTPUT} on became too much work.
22829 Add @file{config.log} and @file{config.cache} to the list of files you
22830 remove in @code{distclean} targets.
22832 If you have the following in @file{Makefile.in}:
22834 @example
22835 prefix = /usr/local
22836 exec_prefix = $(prefix)
22837 @end example
22839 @noindent
22840 you must change it to:
22842 @example
22843 prefix = @@prefix@@
22844 exec_prefix = @@exec_prefix@@
22845 @end example
22847 @noindent
22848 The old behavior of replacing those variables without @samp{@@}
22849 characters around them has been removed.
22851 @node Changed Macros
22852 @subsection Changed Macros
22854 Many of the macros were renamed in Autoconf version 2.  You can still
22855 use the old names, but the new ones are clearer, and it's easier to find
22856 the documentation for them.  @xref{Obsolete Macros}, for a table showing the
22857 new names for the old macros.  Use the @command{autoupdate} program to
22858 convert your @file{configure.ac} to using the new macro names.
22859 @xref{autoupdate Invocation}.
22861 Some macros have been superseded by similar ones that do the job better,
22862 but are not call-compatible.  If you get warnings about calling obsolete
22863 macros while running @command{autoconf}, you may safely ignore them, but
22864 your @command{configure} script generally works better if you follow
22865 the advice that is printed about what to replace the obsolete macros with.  In
22866 particular, the mechanism for reporting the results of tests has
22867 changed.  If you were using @command{echo} or @code{AC_VERBOSE} (perhaps
22868 via @code{AC_COMPILE_CHECK}), your @command{configure} script's output
22869 looks better if you switch to @code{AC_MSG_CHECKING} and
22870 @code{AC_MSG_RESULT}.  @xref{Printing Messages}.  Those macros work best
22871 in conjunction with cache variables.  @xref{Caching Results}.
22875 @node Changed Results
22876 @subsection Changed Results
22878 If you were checking the results of previous tests by examining the
22879 shell variable @code{DEFS}, you need to switch to checking the values of
22880 the cache variables for those tests.  @code{DEFS} no longer exists while
22881 @command{configure} is running; it is only created when generating output
22882 files.  This difference from version 1 is because properly quoting the
22883 contents of that variable turned out to be too cumbersome and
22884 inefficient to do every time @code{AC_DEFINE} is called.  @xref{Cache
22885 Variable Names}.
22887 For example, here is a @file{configure.ac} fragment written for Autoconf
22888 version 1:
22890 @example
22891 AC_HAVE_FUNCS(syslog)
22892 case "$DEFS" in
22893 *-DHAVE_SYSLOG*) ;;
22894 *) # syslog is not in the default libraries.  See if it's in some other.
22895   saved_LIBS="$LIBS"
22896   for lib in bsd socket inet; do
22897     AC_CHECKING(for syslog in -l$lib)
22898     LIBS="-l$lib $saved_LIBS"
22899     AC_HAVE_FUNCS(syslog)
22900     case "$DEFS" in
22901     *-DHAVE_SYSLOG*) break ;;
22902     *) ;;
22903     esac
22904     LIBS="$saved_LIBS"
22905   done ;;
22906 esac
22907 @end example
22909 Here is a way to write it for version 2:
22911 @example
22912 AC_CHECK_FUNCS([syslog])
22913 if test "x$ac_cv_func_syslog" = xno; then
22914   # syslog is not in the default libraries.  See if it's in some other.
22915   for lib in bsd socket inet; do
22916     AC_CHECK_LIB([$lib], [syslog], [AC_DEFINE([HAVE_SYSLOG])
22917       LIBS="-l$lib $LIBS"; break])
22918   done
22920 @end example
22922 If you were working around bugs in @code{AC_DEFINE_UNQUOTED} by adding
22923 backslashes before quotes, you need to remove them.  It now works
22924 predictably, and does not treat quotes (except back quotes) specially.
22925 @xref{Setting Output Variables}.
22927 All of the Boolean shell variables set by Autoconf macros now use
22928 @samp{yes} for the true value.  Most of them use @samp{no} for false,
22929 though for backward compatibility some use the empty string instead.  If
22930 you were relying on a shell variable being set to something like 1 or
22931 @samp{t} for true, you need to change your tests.
22933 @node Changed Macro Writing
22934 @subsection Changed Macro Writing
22936 When defining your own macros, you should now use @code{AC_DEFUN}
22937 instead of @code{define}.  @code{AC_DEFUN} automatically calls
22938 @code{AC_PROVIDE} and ensures that macros called via @code{AC_REQUIRE}
22939 do not interrupt other macros, to prevent nested @samp{checking@dots{}}
22940 messages on the screen.  There's no actual harm in continuing to use the
22941 older way, but it's less convenient and attractive.  @xref{Macro
22942 Definitions}.
22944 You probably looked at the macros that came with Autoconf as a guide for
22945 how to do things.  It would be a good idea to take a look at the new
22946 versions of them, as the style is somewhat improved and they take
22947 advantage of some new features.
22949 If you were doing tricky things with undocumented Autoconf internals
22950 (macros, variables, diversions), check whether you need to change
22951 anything to account for changes that have been made.  Perhaps you can
22952 even use an officially supported technique in version 2 instead of
22953 kludging.  Or perhaps not.
22955 To speed up your locally written feature tests, add caching to them.
22956 See whether any of your tests are of general enough usefulness to
22957 encapsulate them into macros that you can share.
22960 @node Autoconf 2.13
22961 @section Upgrading From Version 2.13
22962 @cindex Upgrading autoconf
22963 @cindex Autoconf upgrading
22965 The introduction of the previous section (@pxref{Autoconf 1}) perfectly
22966 suits this section@enddots{}
22968 @quotation
22969 Autoconf version 2.50 is mostly backward compatible with version 2.13.
22970 However, it introduces better ways to do some things, and doesn't
22971 support some of the ugly things in version 2.13.  So, depending on how
22972 sophisticated your @file{configure.ac} files are, you might have to do
22973 some manual work in order to upgrade to version 2.50.  This chapter
22974 points out some problems to watch for when upgrading.  Also, perhaps
22975 your @command{configure} scripts could benefit from some of the new
22976 features in version 2.50; the changes are summarized in the file
22977 @file{NEWS} in the Autoconf distribution.
22978 @end quotation
22980 @menu
22981 * Changed Quotation::           Broken code which used to work
22982 * New Macros::                  Interaction with foreign macros
22983 * Hosts and Cross-Compilation::  Bugward compatibility kludges
22984 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
22985 * AC_ACT_IFELSE vs AC_TRY_ACT::  A more generic scheme for testing sources
22986 @end menu
22988 @node Changed Quotation
22989 @subsection Changed Quotation
22991 The most important changes are invisible to you: the implementation of
22992 most macros have completely changed.  This allowed more factorization of
22993 the code, better error messages, a higher uniformity of the user's
22994 interface etc.  Unfortunately, as a side effect, some construct which
22995 used to (miraculously) work might break starting with Autoconf 2.50.
22996 The most common culprit is bad quotation.
22998 For instance, in the following example, the message is not properly
22999 quoted:
23001 @example
23002 AC_INIT
23003 AC_CHECK_HEADERS(foo.h, ,
23004   AC_MSG_ERROR(cannot find foo.h, bailing out))
23005 AC_OUTPUT
23006 @end example
23008 @noindent
23009 Autoconf 2.13 simply ignores it:
23011 @example
23012 $ @kbd{autoconf-2.13; ./configure --silent}
23013 creating cache ./config.cache
23014 configure: error: cannot find foo.h
23016 @end example
23018 @noindent
23019 while Autoconf 2.50 produces a broken @file{configure}:
23021 @example
23022 $ @kbd{autoconf-2.50; ./configure --silent}
23023 configure: error: cannot find foo.h
23024 ./configure: exit: bad non-numeric arg `bailing'
23025 ./configure: exit: bad non-numeric arg `bailing'
23027 @end example
23029 The message needs to be quoted, and the @code{AC_MSG_ERROR} invocation
23030 too!
23032 @example
23033 AC_INIT([Example], [1.0], [bug-example@@example.org])
23034 AC_CHECK_HEADERS([foo.h], [],
23035   [AC_MSG_ERROR([cannot find foo.h, bailing out])])
23036 AC_OUTPUT
23037 @end example
23039 Many many (and many more) Autoconf macros were lacking proper quotation,
23040 including no less than@dots{} @code{AC_DEFUN} itself!
23042 @example
23043 $ @kbd{cat configure.in}
23044 AC_DEFUN([AC_PROG_INSTALL],
23045 [# My own much better version
23047 AC_INIT
23048 AC_PROG_INSTALL
23049 AC_OUTPUT
23050 $ @kbd{autoconf-2.13}
23051 autoconf: Undefined macros:
23052 ***BUG in Autoconf--please report*** AC_FD_MSG
23053 ***BUG in Autoconf--please report*** AC_EPI
23054 configure.in:1:AC_DEFUN([AC_PROG_INSTALL],
23055 configure.in:5:AC_PROG_INSTALL
23056 $ @kbd{autoconf-2.50}
23058 @end example
23061 @node New Macros
23062 @subsection New Macros
23064 @cindex undefined macro
23065 @cindex @code{_m4_divert_diversion}
23067 While Autoconf was relatively dormant in the late 1990s, Automake
23068 provided Autoconf-like macros for a while.  Starting with Autoconf 2.50
23069 in 2001, Autoconf provided
23070 versions of these macros, integrated in the @code{AC_} namespace,
23071 instead of @code{AM_}.  But in order to ease the upgrading via
23072 @command{autoupdate}, bindings to such @code{AM_} macros are provided.
23074 Unfortunately older versions of Automake (e.g., Automake 1.4)
23075 did not quote the names of these macros.
23076 Therefore, when @command{m4} finds something like
23077 @samp{AC_DEFUN(AM_TYPE_PTRDIFF_T, @dots{})} in @file{aclocal.m4},
23078 @code{AM_TYPE_PTRDIFF_T} is
23079 expanded, replaced with its Autoconf definition.
23081 Fortunately Autoconf catches pre-@code{AC_INIT} expansions, and
23082 complains, in its own words:
23084 @example
23085 $ @kbd{cat configure.ac}
23086 AC_INIT([Example], [1.0], [bug-example@@example.org])
23087 AM_TYPE_PTRDIFF_T
23088 $ @kbd{aclocal-1.4}
23089 $ @kbd{autoconf}
23090 aclocal.m4:17: error: m4_defn: undefined macro: _m4_divert_diversion
23091 aclocal.m4:17: the top level
23092 autom4te: m4 failed with exit status: 1
23094 @end example
23096 Modern versions of Automake no longer define most of these
23097 macros, and properly quote the names of the remaining macros.
23098 If you must use an old Automake, do not depend upon macros from Automake
23099 as it is simply not its job
23100 to provide macros (but the one it requires itself):
23102 @example
23103 $ @kbd{cat configure.ac}
23104 AC_INIT([Example], [1.0], [bug-example@@example.org])
23105 AM_TYPE_PTRDIFF_T
23106 $ @kbd{rm aclocal.m4}
23107 $ @kbd{autoupdate}
23108 autoupdate: `configure.ac' is updated
23109 $ @kbd{cat configure.ac}
23110 AC_INIT([Example], [1.0], [bug-example@@example.org])
23111 AC_CHECK_TYPES([ptrdiff_t])
23112 $ @kbd{aclocal-1.4}
23113 $ @kbd{autoconf}
23115 @end example
23118 @node Hosts and Cross-Compilation
23119 @subsection Hosts and Cross-Compilation
23120 @cindex Cross compilation
23122 Based on the experience of compiler writers, and after long public
23123 debates, many aspects of the cross-compilation chain have changed:
23125 @itemize @minus
23126 @item
23127 the relationship between the build, host, and target architecture types,
23129 @item
23130 the command line interface for specifying them to @command{configure},
23132 @item
23133 the variables defined in @command{configure},
23135 @item
23136 the enabling of cross-compilation mode.
23137 @end itemize
23139 @sp 1
23141 The relationship between build, host, and target have been cleaned up:
23142 the chain of default is now simply: target defaults to host, host to
23143 build, and build to the result of @command{config.guess}.  Nevertheless,
23144 in order to ease the transition from 2.13 to 2.50, the following
23145 transition scheme is implemented.  @emph{Do not rely on it}, as it will
23146 be completely disabled in a couple of releases (we cannot keep it, as it
23147 proves to cause more problems than it cures).
23149 They all default to the result of running @command{config.guess}, unless
23150 you specify either @option{--build} or @option{--host}.  In this case,
23151 the default becomes the system type you specified.  If you specify both,
23152 and they're different, @command{configure} enters cross compilation
23153 mode, so it doesn't run any tests that require execution.
23155 Hint: if you mean to override the result of @command{config.guess},
23156 prefer @option{--build} over @option{--host}.  In the future,
23157 @option{--host} will not override the name of the build system type.
23158 Whenever you specify @option{--host}, be sure to specify @option{--build}
23159 too.
23161 @sp 1
23163 For backward compatibility, @command{configure} accepts a system
23164 type as an option by itself.  Such an option overrides the
23165 defaults for build, host, and target system types.  The following
23166 configure statement configures a cross toolchain that runs on
23167 NetBSD/alpha but generates code for GNU Hurd/sparc,
23168 which is also the build platform.
23170 @example
23171 ./configure --host=alpha-netbsd sparc-gnu
23172 @end example
23174 @sp 1
23176 In Autoconf 2.13 and before, the variables @code{build}, @code{host},
23177 and @code{target} had a different semantics before and after the
23178 invocation of @code{AC_CANONICAL_BUILD} etc.  Now, the argument of
23179 @option{--build} is strictly copied into @code{build_alias}, and is left
23180 empty otherwise.  After the @code{AC_CANONICAL_BUILD}, @code{build} is
23181 set to the canonicalized build type.  To ease the transition, before,
23182 its contents is the same as that of @code{build_alias}.  Do @emph{not}
23183 rely on this broken feature.
23185 For consistency with the backward compatibility scheme exposed above,
23186 when @option{--host} is specified but @option{--build} isn't, the build
23187 system is assumed to be the same as @option{--host}, and
23188 @samp{build_alias} is set to that value.  Eventually, this
23189 historically incorrect behavior will go away.
23191 @sp 1
23193 The former scheme to enable cross-compilation proved to cause more harm
23194 than good, in particular, it used to be triggered too easily, leaving
23195 regular end users puzzled in front of cryptic error messages.
23196 @command{configure} could even enter cross-compilation mode only
23197 because the compiler was not functional.  This is mainly because
23198 @command{configure} used to try to detect cross-compilation, instead of
23199 waiting for an explicit flag from the user.
23201 Now, @command{configure} enters cross-compilation mode if and only if
23202 @option{--host} is passed.
23204 That's the short documentation.  To ease the transition between 2.13 and
23205 its successors, a more complicated scheme is implemented.  @emph{Do not
23206 rely on the following}, as it will be removed in the near future.
23208 If you specify @option{--host}, but not @option{--build}, when
23209 @command{configure} performs the first compiler test it tries to run
23210 an executable produced by the compiler.  If the execution fails, it
23211 enters cross-compilation mode.  This is fragile.  Moreover, by the time
23212 the compiler test is performed, it may be too late to modify the
23213 build-system type: other tests may have already been performed.
23214 Therefore, whenever you specify @option{--host}, be sure to specify
23215 @option{--build} too.
23217 @example
23218 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
23219 @end example
23221 @noindent
23222 enters cross-compilation mode.  The former interface, which
23223 consisted in setting the compiler to a cross-compiler without informing
23224 @command{configure} is obsolete.  For instance, @command{configure}
23225 fails if it can't run the code generated by the specified compiler if you
23226 configure as follows:
23228 @example
23229 ./configure CC=m68k-coff-gcc
23230 @end example
23233 @node AC_LIBOBJ vs LIBOBJS
23234 @subsection @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}
23236 Up to Autoconf 2.13, the replacement of functions was triggered via the
23237 variable @code{LIBOBJS}.  Since Autoconf 2.50, the macro
23238 @code{AC_LIBOBJ} should be used instead (@pxref{Generic Functions}).
23239 Starting at Autoconf 2.53, the use of @code{LIBOBJS} is an error.
23241 This change is mandated by the unification of the GNU Build System
23242 components.  In particular, the various fragile techniques used to parse
23243 a @file{configure.ac} are all replaced with the use of traces.  As a
23244 consequence, any action must be traceable, which obsoletes critical
23245 variable assignments.  Fortunately, @code{LIBOBJS} was the only problem,
23246 and it can even be handled gracefully (read, ``without your having to
23247 change something'').
23249 There were two typical uses of @code{LIBOBJS}: asking for a replacement
23250 function, and adjusting @code{LIBOBJS} for Automake and/or Libtool.
23252 @sp 1
23254 As for function replacement, the fix is immediate: use
23255 @code{AC_LIBOBJ}.  For instance:
23257 @example
23258 LIBOBJS="$LIBOBJS fnmatch.o"
23259 LIBOBJS="$LIBOBJS malloc.$ac_objext"
23260 @end example
23262 @noindent
23263 should be replaced with:
23265 @example
23266 AC_LIBOBJ([fnmatch])
23267 AC_LIBOBJ([malloc])
23268 @end example
23270 @sp 1
23272 @ovindex LIBOBJDIR
23273 When used with Automake 1.10 or newer, a suitable value for
23274 @code{LIBOBJDIR} is set so that the @code{LIBOBJS} and @code{LTLIBOBJS}
23275 can be referenced from any @file{Makefile.am}.  Even without Automake,
23276 arranging for @code{LIBOBJDIR} to be set correctly enables
23277 referencing @code{LIBOBJS} and @code{LTLIBOBJS} in another directory.
23278 The @code{LIBOBJDIR} feature is experimental.
23281 @node AC_ACT_IFELSE vs AC_TRY_ACT
23282 @subsection @code{AC_@var{ACT}_IFELSE} vs.@: @code{AC_TRY_@var{ACT}}
23283 @c the anchor keeps the old node name, to try to avoid breaking links
23284 @anchor{AC_FOO_IFELSE vs AC_TRY_FOO}
23286 @acindex{@var{ACT}_IFELSE}
23287 @acindex{TRY_@var{ACT}}
23288 Since Autoconf 2.50, internal codes uses @code{AC_PREPROC_IFELSE},
23289 @code{AC_COMPILE_IFELSE}, @code{AC_LINK_IFELSE}, and
23290 @code{AC_RUN_IFELSE} on one hand and @code{AC_LANG_SOURCES},
23291 and @code{AC_LANG_PROGRAM} on the other hand instead of the deprecated
23292 @code{AC_TRY_CPP}, @code{AC_TRY_COMPILE}, @code{AC_TRY_LINK}, and
23293 @code{AC_TRY_RUN}.  The motivations where:
23294 @itemize @minus
23295 @item
23296 a more consistent interface: @code{AC_TRY_COMPILE} etc.@: were double
23297 quoting their arguments;
23299 @item
23300 the combinatoric explosion is solved by decomposing on the one hand the
23301 generation of sources, and on the other hand executing the program;
23303 @item
23304 this scheme helps supporting more languages than plain C and C++.
23305 @end itemize
23307 In addition to the change of syntax, the philosophy has changed too:
23308 while emphasis was put on speed at the expense of accuracy, today's
23309 Autoconf promotes accuracy of the testing framework at, ahem@dots{}, the
23310 expense of speed.
23313 As a perfect example of what is @emph{not} to be done, here is how to
23314 find out whether a header file contains a particular declaration, such
23315 as a typedef, a structure, a structure member, or a function.  Use
23316 @code{AC_EGREP_HEADER} instead of running @code{grep} directly on the
23317 header file; on some systems the symbol might be defined in another
23318 header file that the file you are checking includes.
23320 As a (bad) example, here is how you should not check for C preprocessor
23321 symbols, either defined by header files or predefined by the C
23322 preprocessor: using @code{AC_EGREP_CPP}:
23324 @example
23325 @group
23326 AC_EGREP_CPP(yes,
23327 [#ifdef _AIX
23328   yes
23329 #endif
23330 ], is_aix=yes, is_aix=no)
23331 @end group
23332 @end example
23334 The above example, properly written would (i) use
23335 @code{AC_LANG_PROGRAM}, and (ii) run the compiler:
23337 @example
23338 @group
23339 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
23340 [[#ifndef _AIX
23341  error: This isn't AIX!
23342 #endif
23343 ]])],
23344                    [is_aix=yes],
23345                    [is_aix=no])
23346 @end group
23347 @end example
23350 @c ============================= Generating Test Suites with Autotest
23352 @node Using Autotest
23353 @chapter Generating Test Suites with Autotest
23355 @cindex Autotest
23357 @display
23358 @strong{N.B.: This section describes a feature which is still
23359 stabilizing.  Although we believe that Autotest is useful as-is, this
23360 documentation describes an interface which might change in the future:
23361 do not depend upon Autotest without subscribing to the Autoconf mailing
23362 lists.}
23363 @end display
23365 It is paradoxical that portable projects depend on nonportable tools
23366 to run their test suite.  Autoconf by itself is the paragon of this
23367 problem: although it aims at perfectly portability, up to 2.13 its
23368 test suite was using DejaGNU, a rich and complex testing
23369 framework, but which is far from being standard on Posix systems.
23370 Worse yet, it was likely to be missing on the most fragile platforms,
23371 the very platforms that are most likely to torture Autoconf and
23372 exhibit deficiencies.
23374 To circumvent this problem, many package maintainers have developed their
23375 own testing framework, based on simple shell scripts whose sole outputs
23376 are exit status values describing whether the test succeeded.  Most of
23377 these tests share common patterns, and this can result in lots of
23378 duplicated code and tedious maintenance.
23380 Following exactly the same reasoning that yielded to the inception of
23381 Autoconf, Autotest provides a test suite generation framework, based on
23382 M4 macros building a portable shell script.  The suite itself is
23383 equipped with automatic logging and tracing facilities which greatly
23384 diminish the interaction with bug reporters, and simple timing reports.
23386 Autoconf itself has been using Autotest for years, and we do attest that
23387 it has considerably improved the strength of the test suite and the
23388 quality of bug reports.  Other projects are known to use some generation
23389 of Autotest, such as Bison, Free Recode, Free Wdiff, GNU Tar, each of
23390 them with different needs, and this usage has validated Autotest as a general
23391 testing framework.
23393 Nonetheless, compared to DejaGNU, Autotest is inadequate for
23394 interactive tool testing, which is probably its main limitation.
23396 @menu
23397 * Using an Autotest Test Suite::  Autotest and the user
23398 * Writing Testsuites::          Autotest macros
23399 * testsuite Invocation::        Running @command{testsuite} scripts
23400 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
23401 @end menu
23403 @node Using an Autotest Test Suite
23404 @section Using an Autotest Test Suite
23406 @menu
23407 * testsuite Scripts::           The concepts of Autotest
23408 * Autotest Logs::               Their contents
23409 @end menu
23411 @node testsuite Scripts
23412 @subsection @command{testsuite} Scripts
23414 @cindex @command{testsuite}
23416 Generating testing or validation suites using Autotest is rather easy.
23417 The whole validation suite is held in a file to be processed through
23418 @command{autom4te}, itself using GNU M4 under the hood, to
23419 produce a stand-alone Bourne shell script which then gets distributed.
23420 Neither @command{autom4te} nor GNU M4 are needed at
23421 the installer's end.
23423 @cindex test group
23424 Each test of the validation suite should be part of some test group.  A
23425 @dfn{test group} is a sequence of interwoven tests that ought to be
23426 executed together, usually because one test in the group creates data
23427 files than a later test in the same group needs to read.  Complex test
23428 groups make later debugging more tedious.  It is much better to
23429 keep only a few tests per test group.  Ideally there is only one test
23430 per test group.
23432 For all but the simplest packages, some file such as @file{testsuite.at}
23433 does not fully hold all test sources, as these are often easier to
23434 maintain in separate files.  Each of these separate files holds a single
23435 test group, or a sequence of test groups all addressing some common
23436 functionality in the package.  In such cases, @file{testsuite.at}
23437 merely initializes the validation suite, and sometimes does elementary
23438 health checking, before listing include statements for all other test
23439 files.  The special file @file{package.m4}, containing the
23440 identification of the package, is automatically included if found.
23442 A convenient alternative consists in moving all the global issues
23443 (local Autotest macros, elementary health checking, and @code{AT_INIT}
23444 invocation) into the file @code{local.at}, and making
23445 @file{testsuite.at} be a simple list of @code{m4_include} of sub test
23446 suites.  In such case, generating the whole test suite or pieces of it
23447 is only a matter of choosing the @command{autom4te} command line
23448 arguments.
23450 The validation scripts that Autotest produces are by convention called
23451 @command{testsuite}.  When run, @command{testsuite} executes each test
23452 group in turn, producing only one summary line per test to say if that
23453 particular test succeeded or failed.  At end of all tests, summarizing
23454 counters get printed.  One debugging directory is left for each test
23455 group which failed, if any: such directories are named
23456 @file{testsuite.dir/@var{nn}}, where @var{nn} is the sequence number of
23457 the test group, and they include:
23459 @itemize @bullet
23460 @item a debugging script named @file{run} which reruns the test in
23461 @dfn{debug mode} (@pxref{testsuite Invocation}).  The automatic generation
23462 of debugging scripts has the purpose of easing the chase for bugs.
23464 @item all the files created with @code{AT_DATA}
23466 @item all the Erlang source code files created with @code{AT_CHECK_EUNIT}
23468 @item a log of the run, named @file{testsuite.log}
23469 @end itemize
23471 In the ideal situation, none of the tests fail, and consequently no
23472 debugging directory is left behind for validation.
23474 It often happens in practice that individual tests in the validation
23475 suite need to get information coming out of the configuration process.
23476 Some of this information, common for all validation suites, is provided
23477 through the file @file{atconfig}, automatically created by
23478 @code{AC_CONFIG_TESTDIR}.  For configuration informations which your
23479 testing environment specifically needs, you might prepare an optional
23480 file named @file{atlocal.in}, instantiated by @code{AC_CONFIG_FILES}.
23481 The configuration process produces @file{atconfig} and @file{atlocal}
23482 out of these two input files, and these two produced files are
23483 automatically read by the @file{testsuite} script.
23485 Here is a diagram showing the relationship between files.
23487 @noindent
23488 Files used in preparing a software package for distribution:
23490 @example
23491                 [package.m4] -->.
23492                                  \
23493 subfile-1.at ->.  [local.at] ---->+
23494     ...         \                  \
23495 subfile-i.at ---->-- testsuite.at -->-- autom4te* -->testsuite
23496     ...         /
23497 subfile-n.at ->'
23498 @end example
23500 @noindent
23501 Files used in configuring a software package:
23503 @example
23504                                      .--> atconfig
23505                                     /
23506 [atlocal.in] -->  config.status* --<
23507                                     \
23508                                      `--> [atlocal]
23509 @end example
23511 @noindent
23512 Files created during test suite execution:
23514 @example
23515 atconfig -->.                    .--> testsuite.log
23516              \                  /
23517               >-- testsuite* --<
23518              /                  \
23519 [atlocal] ->'                    `--> [testsuite.dir]
23520 @end example
23523 @node Autotest Logs
23524 @subsection Autotest Logs
23526 When run, the test suite creates a log file named after itself, e.g., a
23527 test suite named @command{testsuite} creates @file{testsuite.log}.  It
23528 contains a lot of information, usually more than maintainers actually
23529 need, but therefore most of the time it contains all that is needed:
23531 @table @asis
23532 @item command line arguments
23533 A bad but unfortunately widespread habit consists of
23534 setting environment variables before the command, such as in
23535 @samp{CC=my-home-grown-cc ./testsuite}.  The test suite does not
23536 know this change, hence (i) it cannot report it to you, and (ii)
23537 it cannot preserve the value of @code{CC} for subsequent runs.
23538 Autoconf faced exactly the same problem, and solved it by asking
23539 users to pass the variable definitions as command line arguments.
23540 Autotest requires this rule, too, but has no means to enforce it; the log
23541 then contains a trace of the variables that were changed by the user.
23543 @item @file{ChangeLog} excerpts
23544 The topmost lines of all the @file{ChangeLog} files found in the source
23545 hierarchy.  This is especially useful when bugs are reported against
23546 development versions of the package, since the version string does not
23547 provide sufficient information to know the exact state of the sources
23548 the user compiled.  Of course, this relies on the use of a
23549 @file{ChangeLog}.
23551 @item build machine
23552 Running a test suite in a cross-compile environment is not an easy task,
23553 since it would mean having the test suite run on a machine @var{build},
23554 while running programs on a machine @var{host}.  It is much simpler to
23555 run both the test suite and the programs on @var{host}, but then, from
23556 the point of view of the test suite, there remains a single environment,
23557 @var{host} = @var{build}.  The log contains relevant information on the
23558 state of the @var{build} machine, including some important environment
23559 variables.
23560 @c FIXME: How about having an M4sh macro to say `hey, log the value
23561 @c of `@dots{}'?  This would help both Autoconf and Autotest.
23563 @item tested programs
23564 The absolute file name and answers to @option{--version} of the tested
23565 programs (see @ref{Writing Testsuites}, @code{AT_TESTED}).
23567 @item configuration log
23568 The contents of @file{config.log}, as created by @command{configure},
23569 are appended.  It contains the configuration flags and a detailed report
23570 on the configuration itself.
23571 @end table
23574 @node Writing Testsuites
23575 @section Writing @file{testsuite.at}
23577 The @file{testsuite.at} is a Bourne shell script making use of special
23578 Autotest M4 macros.  It often contains a call to @code{AT_INIT} near
23579 its beginning followed by one call to @code{m4_include} per source file
23580 for tests.  Each such included file, or the remainder of
23581 @file{testsuite.at} if include files are not used, contain a sequence of
23582 test groups.  Each test group begins with a call to @code{AT_SETUP},
23583 then an arbitrary number of shell commands or calls to @code{AT_CHECK},
23584 and then completes with a call to @code{AT_CLEANUP}.  Multiple test
23585 groups can be categorized by a call to @code{AT_BANNER}.
23587 All of the public Autotest macros have all-uppercase names in the
23588 namespace @samp{^AT_} to prevent them from accidentally conflicting with
23589 other text; Autoconf also reserves the namespace @samp{^_AT_} for
23590 internal macros.  All shell variables used in the testsuite for internal
23591 purposes have mostly-lowercase names starting with @samp{at_}.  Autotest
23592 also uses here-document delimiters in the namespace @samp{^_AT[A-Z]}, and
23593 makes use of the file system namespace @samp{^at-}.
23595 Since Autoconf is built on top of M4sugar (@pxref{Programming in
23596 M4sugar}) and M4sh (@pxref{Programming in M4sh}), you must also be aware
23597 of those namespaces (@samp{^_?\(m4\|AS\)_}).  In general, you
23598 @emph{should not use} the namespace of a package that does not own the
23599 macro or shell code you are writing.
23601 @defmac AT_INIT (@ovar{name})
23602 @atindex{INIT}
23603 @c FIXME: Not clear, plus duplication of the information.
23604 Initialize Autotest.  Giving a @var{name} to the test suite is
23605 encouraged if your package includes several test suites.  Before this
23606 macro is called, @code{AT_PACKAGE_STRING} and
23607 @code{AT_PACKAGE_BUGREPORT} must be defined, which are used to display
23608 information about the testsuite to the user.  Typically, these macros
23609 are provided by a file @file{package.m4} built by @command{make}
23610 (@pxref{Making testsuite Scripts}), in order to inherit the package
23611 name, version, and bug reporting address from @file{configure.ac}.
23612 @end defmac
23614 @defmac AT_COPYRIGHT (@var{copyright-notice})
23615 @atindex{COPYRIGHT}
23616 @cindex Copyright Notice
23617 State that, in addition to the Free Software Foundation's copyright on
23618 the Autotest macros, parts of your test suite are covered by
23619 @var{copyright-notice}.
23621 The @var{copyright-notice} shows up in both the head of
23622 @command{testsuite} and in @samp{testsuite --version}.
23623 @end defmac
23625 @defmac AT_ARG_OPTION (@var{options}, @var{help-text}, @
23626   @ovar{action-if-given}, @ovar{action-if-not-given})
23627 @atindex{ARG_OPTION}
23628 Accept options from the space-separated list @var{options}, a list that
23629 has leading dashes removed from the options.  Long options will be
23630 prefixed with @samp{--}, single-character options with @samp{-}.  The
23631 first word in this list is the primary @var{option}, any others are
23632 assumed to be short-hand aliases.  The variable associated with it
23633 is @code{at_arg_@var{option}}, with any dashes in @var{option} replaced
23634 with underscores.
23636 If the user passes @option{--@var{option}} to the @command{testsuite},
23637 the variable will be set to @samp{:}.  If the user does not pass the
23638 option, or passes @option{--no-@var{option}}, then the variable will be
23639 set to @samp{false}.
23641 @var{action-if-given} is run each time the option is encountered; here,
23642 the variable @code{at_optarg} will be set to @samp{:} or @samp{false} as
23643 appropriate.  @code{at_optarg} is actually just a copy of
23644 @code{at_arg_@var{option}}.
23646 @var{action-if-not-given} will be run once after option parsing is
23647 complete and if no option from @var{options} was used.
23649 @var{help-text} is added to the end of the list of options shown in
23650 @command{testsuite --help} (@pxref{AS_HELP_STRING}).
23652 It it recommended that you use a package-specific prefix to @var{options}
23653 names in order to avoid clashes with future Autotest built-in options.
23654 @end defmac
23656 @defmac AT_ARG_OPTION_ARG (@var{options}, @var{help-text}, @
23657   @ovar{action-if-given}, @ovar{action-if-not-given})
23658 @atindex{ARG_OPTION_ARG}
23659 Accept options with arguments from the space-separated list
23660 @var{options}, a list that has leading dashes removed from the options.
23661 Long options will be prefixed with @samp{--}, single-character options
23662 with @samp{-}.  The first word in this list is the primary @var{option},
23663 any others are assumed to be short-hand aliases.  The variable associated
23664 with it is @code{at_arg_@var{option}}, with any dashes in @var{option}
23665 replaced with underscores.
23667 If the user passes @option{--@var{option}=@var{arg}} or
23668 @option{--@var{option} @var{arg}} to the @command{testsuite}, the
23669 variable will be set to @samp{@var{arg}}.
23671 @var{action-if-given} is run each time the option is encountered; here,
23672 the variable @code{at_optarg} will be set to @samp{@var{arg}}.
23673 @code{at_optarg} is actually just a copy of @code{at_arg_@var{option}}.
23675 @var{action-if-not-given} will be run once after option parsing is
23676 complete and if no option from @var{options} was used.
23678 @var{help-text} is added to the end of the list of options shown in
23679 @command{testsuite --help} (@pxref{AS_HELP_STRING}).
23681 It it recommended that you use a package-specific prefix to @var{options}
23682 names in order to avoid clashes with future Autotest built-in options.
23683 @end defmac
23685 @defmac AT_COLOR_TESTS
23686 @atindex{COLOR_TESTS}
23687 Enable colored test results by default when the output is connected to
23688 a terminal.
23689 @end defmac
23691 @defmac AT_TESTED (@var{executables})
23692 @atindex{TESTED}
23693 Log the file name and answer to @option{--version} of each program in
23694 space-separated list @var{executables}.  Several invocations register
23695 new executables, in other words, don't fear registering one program
23696 several times.
23698 Autotest test suites rely on @env{PATH} to find the tested program.
23699 This avoids the need to generate absolute names of the various tools, and
23700 makes it possible to test installed programs.  Therefore, knowing which
23701 programs are being exercised is crucial to understanding problems in
23702 the test suite itself, or its occasional misuses.  It is a good idea to
23703 also subscribe foreign programs you depend upon, to avoid incompatible
23704 diagnostics.
23705 @end defmac
23707 @sp 1
23709 @defmac AT_BANNER (@var{test-category-name})
23710 @atindex{BANNER}
23711 This macro identifies the start of a category of related test groups.
23712 When the resulting @file{testsuite} is invoked with more than one test
23713 group to run, its output will include a banner containing
23714 @var{test-category-name} prior to any tests run from that category.  The
23715 banner should be no more than about 40 or 50 characters.  A blank banner
23716 will not print, effectively ending a category and letting subsequent
23717 test groups behave as though they are uncategorized when run in
23718 isolation.
23719 @end defmac
23721 @defmac AT_SETUP (@var{test-group-name})
23722 @atindex{SETUP}
23723 This macro starts a group of related tests, all to be executed in the
23724 same subshell.  It accepts a single argument, which holds a few words
23725 (no more than about 30 or 40 characters) quickly describing the purpose
23726 of the test group being started.  @var{test-group-name} must not expand
23727 to unbalanced quotes, although quadrigraphs can be used.
23728 @end defmac
23730 @defmac AT_KEYWORDS (@var{keywords})
23731 @atindex{KEYWORDS}
23732 Associate the space-separated list of @var{keywords} to the enclosing
23733 test group.  This makes it possible to run ``slices'' of the test suite.
23734 For instance, if some of your test groups exercise some @samp{foo}
23735 feature, then using @samp{AT_KEYWORDS(foo)} lets you run
23736 @samp{./testsuite -k foo} to run exclusively these test groups.  The
23737 @var{test-group-name} of the test group is automatically recorded to
23738 @code{AT_KEYWORDS}.
23740 Several invocations within a test group accumulate new keywords.  In
23741 other words, don't fear registering the same keyword several times in a
23742 test group.
23743 @end defmac
23745 @defmac AT_CAPTURE_FILE (@var{file})
23746 @atindex{CAPTURE_FILE}
23747 If the current test group fails, log the contents of @var{file}.
23748 Several identical calls within one test group have no additional effect.
23749 @end defmac
23751 @defmac AT_FAIL_IF (@var{shell-condition})
23752 @atindex{FAIL_IF}
23753 Make the test group fail and skip the rest of its execution, if
23754 @var{shell-condition} is true.  @var{shell-condition} is a shell expression
23755 such as a @code{test} command.  Tests before @command{AT_FAIL_IF}
23756 will be executed and may still cause the test group to be skipped.
23757 You can instantiate this macro many times from within the same test group.
23759 You should use this macro only for very simple failure conditions.  If the
23760 @var{shell-condition} could emit any kind of output you should instead
23761 use @command{AT_CHECK} like
23762 @example
23763 AT_CHECK([if @var{shell-condition}; then exit 99; fi])
23764 @end example
23765 @noindent
23766 so that such output is properly recorded in the @file{testsuite.log}
23767 file.
23768 @end defmac
23770 @defmac AT_SKIP_IF (@var{shell-condition})
23771 @atindex{SKIP_IF}
23772 Determine whether the test should be skipped because it requires
23773 features that are unsupported on the machine under test.
23774 @var{shell-condition} is a shell expression such as a @code{test}
23775 command.  Tests before @command{AT_SKIP_IF} will be executed
23776 and may still cause the test group to fail.  You can instantiate this
23777 macro many times from within the same test group.
23779 You should use this macro only for very simple skip conditions.  If the
23780 @var{shell-condition} could emit any kind of output you should instead
23781 use @command{AT_CHECK} like
23782 @example
23783 AT_CHECK([if @var{shell-condition}; then exit 77; fi])
23784 @end example
23785 @noindent
23786 so that such output is properly recorded in the @file{testsuite.log}
23787 file.
23788 @end defmac
23790 @defmac AT_XFAIL_IF (@var{shell-condition})
23791 @atindex{XFAIL_IF}
23792 Determine whether the test is expected to fail because it is a known
23793 bug (for unsupported features, you should skip the test).
23794 @var{shell-condition} is a shell expression such as a @code{test}
23795 command; you can instantiate this macro many times from within the
23796 same test group, and one of the conditions is enough to turn
23797 the test into an expected failure.
23798 @end defmac
23800 @defmac AT_CLEANUP
23801 @atindex{CLEANUP}
23802 End the current test group.
23803 @end defmac
23805 @sp 1
23807 @defmac AT_DATA (@var{file}, @var{contents})
23808 @atindex{DATA}
23809 Initialize an input data @var{file} with given @var{contents}.  Of
23810 course, the @var{contents} have to be properly quoted between square
23811 brackets to protect against included commas or spurious M4
23812 expansion.  The contents must end with an end of line.  @var{file} must
23813 be a single shell word that expands into a single file name.
23814 @end defmac
23816 @defmac AT_CHECK (@var{commands}, @dvar{status, 0}, @ovar{stdout}, @
23817   @ovar{stderr}, @ovar{run-if-fail}, @ovar{run-if-pass})
23818 @defmacx AT_CHECK_UNQUOTED (@var{commands}, @dvar{status, 0}, @ovar{stdout}, @
23819   @ovar{stderr}, @ovar{run-if-fail}, @ovar{run-if-pass})
23820 @atindex{CHECK}
23821 @atindex{CHECK_UNQUOTED}
23822 Execute a test by performing given shell @var{commands}.  @var{commands}
23823 is output as-is, so shell expansions are honored.  These commands
23824 should normally exit with @var{status}, while producing expected
23825 @var{stdout} and @var{stderr} contents.  If @var{commands} exit with
23826 unexpected status 77, then the rest of the test group is skipped.  If
23827 @var{commands} exit with unexpected status 99, then the test group is
23828 immediately failed.  Otherwise, if this test
23829 fails, run shell commands @var{run-if-fail} or, if this test passes, run shell
23830 commands @var{run-if-pass}.
23832 This macro must be invoked in between @code{AT_SETUP} and @code{AT_CLEANUP}.
23834 If @var{status} is the literal @samp{ignore}, then the corresponding
23835 exit status is not checked, except for the special cases of 77 (skip)
23836 and 99 (hard failure).  The existence of hard failures allows one to
23837 mark a test as an expected failure with @code{AT_XFAIL_IF} because a
23838 feature has not yet been implemented, but to still distinguish between
23839 gracefully handling the missing feature and dumping core.  A hard
23840 failure also inhibits post-test actions in @var{run-if-fail}.
23842 If the value of the @var{stdout} or @var{stderr} parameter is one of the
23843 literals in the following table, then the test treats the output
23844 according to the rules of that literal.  Otherwise, the value of the
23845 parameter is treated as text that must exactly match the output given by
23846 @var{commands} on standard output and standard error (including an empty
23847 parameter for no output); any differences are captured in the testsuite
23848 log and the test is failed (unless an unexpected exit status of 77
23849 skipped the test instead).  The difference between @code{AT_CHECK} and
23850 @code{AT_CHECK_UNQUOTED} is that only the latter performs shell variable
23851 expansion (@samp{$}), command substitution (@samp{`}), and backslash
23852 escaping (@samp{\}) on comparison text given in the @var{stdout} and
23853 @var{stderr} arguments; if the text includes a trailing newline, this
23854 would be the same as if it were specified via an unquoted
23855 here-document.  (However, there is no difference in the interpretation
23856 of @var{commands}).
23858 @table @samp
23859 @item ignore
23860 The content of the output is ignored, but still captured in the test
23861 group log (if the testsuite is run with option @option{-v}, the test
23862 group log is displayed as the test is run; if the test group later
23863 fails, the test group log is also copied into the overall testsuite
23864 log).  This action is valid for both @var{stdout} and @var{stderr}.
23866 @item ignore-nolog
23867 The content of the output is ignored, and nothing is captured in the log
23868 files.  If @var{commands} are likely to produce binary output (including
23869 long lines) or large amounts of output, then logging the output can make
23870 it harder to locate details related to subsequent tests within the
23871 group, and could potentially corrupt terminal display of a user running
23872 @command{testsuite -v}.
23874 @item stdout
23875 For the @var{stdout} parameter, capture the content of standard output
23876 to both the file @file{stdout} and the test group log.  Subsequent
23877 commands in the test group can then post-process the file.  This action
23878 is often used when it is desired to use @command{grep} to look for a
23879 substring in the output, or when the output must be post-processed to
23880 normalize error messages into a common form.
23882 @item stderr
23883 Like @samp{stdout}, except that it only works for the @var{stderr}
23884 parameter, and the standard error capture file will be named
23885 @file{stderr}.
23887 @item stdout-nolog
23888 @itemx stderr-nolog
23889 Like @samp{stdout} or @samp{stderr}, except that the captured output is
23890 not duplicated into the test group log.  This action is particularly
23891 useful for an intermediate check that produces large amounts of data,
23892 which will be followed by another check that filters down to the
23893 relevant data, as it makes it easier to locate details in the log.
23895 @item expout
23896 For the @var{stdout} parameter, compare standard output contents with
23897 the previously created file @file{expout}, and list any differences in
23898 the testsuite log.
23900 @item experr
23901 Like @samp{expout}, except that it only works for the @var{stderr}
23902 parameter, and the standard error contents are compared with
23903 @file{experr}.
23904 @end table
23905 @end defmac
23907 @defmac AT_CHECK_EUNIT (@var{module}, @var{test-spec}, @ovar{erlflags}, @
23908   @ovar{run-if-fail}, @ovar{run-if-pass})
23909 @atindex{CHECK_EUNIT}
23910 Initialize and execute an Erlang module named @var{module} that performs
23911 tests following the @var{test-spec} EUnit test specification.
23912 @var{test-spec} must be a valid EUnit test specification, as defined in
23913 the @uref{http://@/erlang.org/@/doc/@/apps/@/eunit/@/index.html, EUnit
23914 Reference Manual}.  @var{erlflags} are optional command-line options
23915 passed to the Erlang interpreter to execute the test Erlang module.
23916 Typically, @var{erlflags} defines at least the paths to directories
23917 containing the compiled Erlang modules under test, as @samp{-pa path1
23918 path2 ...}.
23920 For example, the unit tests associated with Erlang module @samp{testme},
23921 which compiled code is in subdirectory @file{src}, can be performed
23922 with:
23924 @example
23925 AT_CHECK_EUNIT([testme_testsuite], [@{module, testme@}],
23926                [-pa "$@{abs_top_builddir@}/src"])
23927 @end example
23929 This macro must be invoked in between @code{AT_SETUP} and @code{AT_CLEANUP}.
23931 Variables @code{ERL}, @code{ERLC}, and (optionally) @code{ERLCFLAGS}
23932 must be defined as the path of the Erlang interpreter, the path of the
23933 Erlang compiler, and the command-line flags to pass to the compiler,
23934 respectively.  Those variables should be configured in
23935 @file{configure.ac} using the @command{AC_ERLANG_PATH_ERL} and
23936 @command{AC_ERLANG_PATH_ERLC} macros, and the configured values of those
23937 variables are automatically defined in the testsuite.  If @code{ERL} or
23938 @code{ERLC} is not defined, the test group is skipped.
23940 If the EUnit library cannot be found, i.e. if module @code{eunit} cannot
23941 be loaded, the test group is skipped.  Otherwise, if @var{test-spec} is
23942 an invalid EUnit test specification, the test group fails.  Otherwise,
23943 if the EUnit test passes, shell commands @var{run-if-pass} are executed
23944 or, if the EUnit test fails, shell commands @var{run-if-fail} are
23945 executed and the test group fails.
23947 Only the generated test Erlang module is automatically compiled and
23948 executed.  If @var{test-spec} involves testing other Erlang modules,
23949 e.g. module @samp{testme} in the example above, those modules must be
23950 already compiled.
23952 If the testsuite is run in verbose mode, with option @option{--verbose},
23953 EUnit is also run in verbose mode to output more details about
23954 individual unit tests.
23955 @end defmac
23958 @node testsuite Invocation
23959 @section Running @command{testsuite} Scripts
23960 @cindex @command{testsuite}
23962 Autotest test suites support the following options:
23964 @table @option
23965 @item --help
23966 @itemx -h
23967 Display the list of options and exit successfully.
23969 @item --version
23970 @itemx -V
23971 Display the version of the test suite and exit successfully.
23973 @item --directory=@var{dir}
23974 @itemx -C @var{dir}
23975 Change the current directory to @var{dir} before creating any files.
23976 Useful for running the testsuite in a subdirectory from a top-level
23977 Makefile.
23979 @item --jobs@r{[}=@var{n}@r{]}
23980 @itemx -j@ovar{n}
23981 Run @var{n} tests in parallel, if possible.  If @var{n} is not given,
23982 run all given tests in parallel.  Note that there should be no space
23983 before the argument to @option{-j}, as @option{-j @var{number}} denotes
23984 the separate arguments @option{-j} and @option{@var{number}}, see below.
23986 In parallel mode, the standard input device of the testsuite script is
23987 not available to commands inside a test group.  Furthermore, banner
23988 lines are not printed, and the summary line for each test group is
23989 output after the test group completes.  Summary lines may appear
23990 unordered.  If verbose and trace output are enabled (see below), they
23991 may appear intermixed from concurrently running tests.
23993 Parallel mode requires the @command{mkfifo} command to work, and will be
23994 silently disabled otherwise.
23996 @item --clean
23997 @itemx -c
23998 Remove all the files the test suite might have created and exit.  Meant
23999 for @code{clean} Make targets.
24001 @item --list
24002 @itemx -l
24003 List all the tests (or only the selection), including their possible
24004 keywords.
24005 @end table
24007 @sp 1
24009 By default all tests are performed (or described with @option{--list})
24010 silently in the default environment, but the environment, set of tests,
24011 and verbosity level can be tuned:
24013 @table @samp
24014 @item @var{variable}=@var{value}
24015 Set the environment @var{variable} to @var{value}.  Use this rather
24016 than @samp{FOO=foo ./testsuite} as debugging scripts would then run in a
24017 different environment.
24019 @cindex @code{AUTOTEST_PATH}
24020 The variable @code{AUTOTEST_PATH} specifies the testing path to prepend
24021 to @env{PATH}.  Relative directory names (not starting with
24022 @samp{/}) are considered to be relative to the top level of the
24023 package being built.  All directories are made absolute, first
24024 starting from the top level @emph{build} tree, then from the
24025 @emph{source} tree.  For instance @samp{./testsuite
24026 AUTOTEST_PATH=tests:bin} for a @file{/src/foo-1.0} source package built
24027 in @file{/tmp/foo} results in @samp{/tmp/foo/tests:/tmp/foo/bin} and
24028 then @samp{/src/foo-1.0/tests:/src/foo-1.0/bin} being prepended to
24029 @env{PATH}.
24031 @item @var{number}
24032 @itemx @var{number}-@var{number}
24033 @itemx @var{number}-
24034 @itemx -@var{number}
24035 Add the corresponding test groups, with obvious semantics, to the
24036 selection.
24038 @item --keywords=@var{keywords}
24039 @itemx -k @var{keywords}
24040 Add to the selection the test groups with title or keywords (arguments
24041 to @code{AT_SETUP} or @code{AT_KEYWORDS}) that match @emph{all} keywords
24042 of the comma separated list @var{keywords}, case-insensitively.  Use
24043 @samp{!} immediately before the keyword to invert the selection for this
24044 keyword.  By default, the keywords match whole words; enclose them in
24045 @samp{.*} to also match parts of words.
24047 For example, running
24049 @example
24050 @kbd{./testsuite -k 'autoupdate,.*FUNC.*'}
24051 @end example
24053 @noindent
24054 selects all tests tagged @samp{autoupdate} @emph{and} with tags
24055 containing @samp{FUNC} (as in @samp{AC_CHECK_FUNC}, @samp{AC_FUNC_ALLOCA},
24056 etc.), while
24058 @example
24059 @kbd{./testsuite -k '!autoupdate' -k '.*FUNC.*'}
24060 @end example
24062 @noindent
24063 selects all tests not tagged @samp{autoupdate} @emph{or} with tags
24064 containing @samp{FUNC}.
24066 @item --errexit
24067 @itemx -e
24068 If any test fails, immediately abort testing.  This implies
24069 @option{--debug}: post test group clean up, and top-level logging
24070 are inhibited.  This option is meant for the full test
24071 suite, it is not really useful for generated debugging scripts.
24072 If the testsuite is run in parallel mode using @option{--jobs},
24073 then concurrently running tests will finish before exiting.
24075 @item --verbose
24076 @itemx -v
24077 Force more verbosity in the detailed output of what is being done.  This
24078 is the default for debugging scripts.
24080 @item --color
24081 @itemx --color@r{[}=never@r{|}auto@r{|}always@r{]}
24082 Enable colored test results.  Without an argument, or with @samp{always},
24083 test results will be colored.  With @samp{never}, color mode is turned
24084 off.  Otherwise, if either the macro @code{AT_COLOR_TESTS} is used by
24085 the testsuite author, or the argument @samp{auto} is given, then test
24086 results are colored if standard output is connected to a terminal.
24088 @item --debug
24089 @itemx -d
24090 Do not remove the files after a test group was performed---but they are
24091 still removed @emph{before}, therefore using this option is sane when
24092 running several test groups.  Create debugging scripts.  Do not
24093 overwrite the top-level
24094 log (in order to preserve a supposedly existing full log file).  This is
24095 the default for debugging scripts, but it can also be useful to debug
24096 the testsuite itself.
24098 @item --recheck
24099 Add to the selection all test groups that failed or passed unexpectedly
24100 during the last non-debugging test run.
24102 @item --trace
24103 @itemx -x
24104 Trigger shell tracing of the test groups.
24105 @end table
24107 Besides these options accepted by every Autotest testsuite, the
24108 testsuite author might have added package-specific options
24109 via the @code{AT_ARG_OPTION} and @code{AT_ARG_OPTION_ARG} macros
24110 (@pxref{Writing Testsuites}); refer to @command{testsuite --help} and
24111 the package documentation for details.
24114 @node Making testsuite Scripts
24115 @section Making @command{testsuite} Scripts
24117 For putting Autotest into movement, you need some configuration and
24118 makefile machinery.  We recommend, at least if your package uses deep or
24119 shallow hierarchies, that you use @file{tests/} as the name of the
24120 directory holding all your tests and their makefile.  Here is a
24121 check list of things to do.
24123 @itemize @minus
24125 @item
24126 @cindex @file{package.m4}
24127 @atindex{PACKAGE_STRING}
24128 @atindex{PACKAGE_BUGREPORT}
24129 @atindex{PACKAGE_NAME}
24130 @atindex{PACKAGE_TARNAME}
24131 @atindex{PACKAGE_VERSION}
24132 @atindex{PACKAGE_URL}
24133 Make sure to create the file @file{package.m4}, which defines the
24134 identity of the package.  It must define @code{AT_PACKAGE_STRING}, the
24135 full signature of the package, and @code{AT_PACKAGE_BUGREPORT}, the
24136 address to which bug reports should be sent.  For sake of completeness,
24137 we suggest that you also define @code{AT_PACKAGE_NAME},
24138 @code{AT_PACKAGE_TARNAME}, @code{AT_PACKAGE_VERSION}, and
24139 @code{AT_PACKAGE_URL}.
24140 @xref{Initializing configure}, for a description of these variables.
24141 Be sure to distribute @file{package.m4} and to put it into the source
24142 hierarchy: the test suite ought to be shipped!  See below for an example
24143 @file{Makefile} excerpt.
24145 @item
24146 Invoke @code{AC_CONFIG_TESTDIR}.
24148 @defmac AC_CONFIG_TESTDIR (@var{directory}, @dvar{test-path, directory})
24149 @acindex{CONFIG_TESTDIR}
24150 An Autotest test suite is to be configured in @var{directory}.  This
24151 macro requires the instantiation of @file{@var{directory}/atconfig} from
24152 @file{@var{directory}/atconfig.in}, and sets the default
24153 @code{AUTOTEST_PATH} to @var{test-path} (@pxref{testsuite Invocation}).
24154 @end defmac
24156 @item
24157 Still within @file{configure.ac}, as appropriate, ensure that some
24158 @code{AC_CONFIG_FILES} command includes substitution for
24159 @file{tests/atlocal}.
24161 @item
24162 The appropriate @file{Makefile} should be modified so the validation in
24163 your package is triggered by @samp{make check}.  An example is provided
24164 below.
24165 @end itemize
24167 With Automake, here is a minimal example for inclusion in
24168 @file{tests/Makefile.am}, in order to link @samp{make check} with a
24169 validation suite.
24171 @example
24172 # The `:;' works around a Bash 3.2 bug when the output is not writeable.
24173 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
24174         :;@{ \
24175           echo '# Signature of the current package.' && \
24176           echo 'm4_define([AT_PACKAGE_NAME],' && \
24177           echo '  [$(PACKAGE_NAME)])' && \
24178           echo 'm4_define([AT_PACKAGE_TARNAME],' && \
24179           echo '  [$(PACKAGE_TARNAME)])' && \
24180           echo 'm4_define([AT_PACKAGE_VERSION],' && \
24181           echo '  [$(PACKAGE_VERSION)])' && \
24182           echo 'm4_define([AT_PACKAGE_STRING],' && \
24183           echo '  [$(PACKAGE_STRING)])' && \
24184           echo 'm4_define([AT_PACKAGE_BUGREPORT],' && \
24185           echo '  [$(PACKAGE_BUGREPORT)])'; \
24186           echo 'm4_define([AT_PACKAGE_URL],' && \
24187           echo '  [$(PACKAGE_URL)])'; \
24188         @} >'$(srcdir)/package.m4'
24190 EXTRA_DIST = testsuite.at $(srcdir)/package.m4 $(TESTSUITE) atlocal.in
24191 TESTSUITE = $(srcdir)/testsuite
24193 check-local: atconfig atlocal $(TESTSUITE)
24194         $(SHELL) '$(TESTSUITE)' $(TESTSUITEFLAGS)
24196 installcheck-local: atconfig atlocal $(TESTSUITE)
24197         $(SHELL) '$(TESTSUITE)' AUTOTEST_PATH='$(bindir)' \
24198           $(TESTSUITEFLAGS)
24200 clean-local:
24201         test ! -f '$(TESTSUITE)' || \
24202          $(SHELL) '$(TESTSUITE)' --clean
24204 AUTOM4TE = $(SHELL) $(srcdir)/build-aux/missing --run autom4te
24205 AUTOTEST = $(AUTOM4TE) --language=autotest
24206 $(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/package.m4
24207         $(AUTOTEST) -I '$(srcdir)' -o $@@.tmp $@@.at
24208         mv $@@.tmp $@@
24209 @end example
24211 Note that the built testsuite is distributed; this is necessary because
24212 users might not have Autoconf installed, and thus would not be able to
24213 rebuild it.  Likewise, the use of @file{missing} provides the user with
24214 a nicer error message if they modify a source file to the testsuite, and
24215 accidentally trigger the rebuild rules.
24217 You might want to list explicitly the dependencies, i.e., the list of
24218 the files @file{testsuite.at} includes.
24220 If you don't use Automake, you should include the above example in
24221 @file{tests/@/Makefile.in}, along with additional lines inspired from
24222 the following:
24224 @example
24225 subdir = tests
24226 PACKAGE_NAME = @@PACKAGE_NAME@@
24227 PACKAGE_TARNAME = @@PACKAGE_TARNAME@@
24228 PACKAGE_VERSION = @@PACKAGE_VERSION@@
24229 PACKAGE_STRING = @@PACKAGE_STRING@@
24230 PACKAGE_BUGREPORT = @@PACKAGE_BUGREPORT@@
24231 PACKAGE_URL = @@PACKAGE_URL@@
24233 atconfig: $(top_builddir)/config.status
24234         cd $(top_builddir) && \
24235            $(SHELL) ./config.status $(subdir)/$@@
24237 atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
24238         cd $(top_builddir) && \
24239            $(SHELL) ./config.status $(subdir)/$@@
24240 @end example
24242 @noindent
24243 and manage to have @code{$(EXTRA_DIST)} distributed.  You will also want
24244 to distribute the file @file{build-aux/@/missing} from the Automake
24245 project; a copy of this file resides in the Autoconf source tree.
24247 With all this in place, and if you have not initialized @samp{TESTSUITEFLAGS}
24248 within your makefile, you can fine-tune test suite execution with this
24249 variable, for example:
24251 @example
24252 make check TESTSUITEFLAGS='-v -d -x 75 -k AC_PROG_CC CFLAGS=-g'
24253 @end example
24257 @c =============================== Frequent Autoconf Questions, with answers
24259 @node FAQ
24260 @chapter Frequent Autoconf Questions, with answers
24262 Several questions about Autoconf come up occasionally.  Here some of them
24263 are addressed.
24265 @menu
24266 * Distributing::                Distributing @command{configure} scripts
24267 * Why GNU M4::                  Why not use the standard M4?
24268 * Bootstrapping::               Autoconf and GNU M4 require each other?
24269 * Why Not Imake::               Why GNU uses @command{configure} instead of Imake
24270 * Defining Directories::        Passing @code{datadir} to program
24271 * Autom4te Cache::              What is it?  Can I remove it?
24272 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
24273 * Expanded Before Required::    Expanded Before Required
24274 * Debugging::                   Debugging @command{configure} scripts
24275 @end menu
24277 @node Distributing
24278 @section Distributing @command{configure} Scripts
24279 @cindex License
24281 @display
24282 What are the restrictions on distributing @command{configure}
24283 scripts that Autoconf generates?  How does that affect my
24284 programs that use them?
24285 @end display
24287 There are no restrictions on how the configuration scripts that Autoconf
24288 produces may be distributed or used.  In Autoconf version 1, they were
24289 covered by the GNU General Public License.  We still encourage
24290 software authors to distribute their work under terms like those of the
24291 GPL, but doing so is not required to use Autoconf.
24293 Of the other files that might be used with @command{configure},
24294 @file{config.h.in} is under whatever copyright you use for your
24295 @file{configure.ac}.  @file{config.sub} and @file{config.guess} have an
24296 exception to the GPL when they are used with an Autoconf-generated
24297 @command{configure} script, which permits you to distribute them under the
24298 same terms as the rest of your package.  @file{install-sh} is from the X
24299 Consortium and is not copyrighted.
24301 @node Why GNU M4
24302 @section Why Require GNU M4?
24304 @display
24305 Why does Autoconf require GNU M4?
24306 @end display
24308 Many M4 implementations have hard-coded limitations on the size and
24309 number of macros that Autoconf exceeds.  They also lack several
24310 builtin macros that it would be difficult to get along without in a
24311 sophisticated application like Autoconf, including:
24313 @example
24314 m4_builtin
24315 m4_indir
24316 m4_bpatsubst
24317 __file__
24318 __line__
24319 @end example
24321 Autoconf requires version 1.4.6 or later of GNU M4.
24323 Since only software maintainers need to use Autoconf, and since GNU
24324 M4 is simple to configure and install, it seems reasonable to require
24325 GNU M4 to be installed also.  Many maintainers of GNU and
24326 other free software already have most of the GNU utilities
24327 installed, since they prefer them.
24329 @node Bootstrapping
24330 @section How Can I Bootstrap?
24331 @cindex Bootstrap
24333 @display
24334 If Autoconf requires GNU M4 and GNU M4 has an Autoconf
24335 @command{configure} script, how do I bootstrap?  It seems like a chicken
24336 and egg problem!
24337 @end display
24339 This is a misunderstanding.  Although GNU M4 does come with a
24340 @command{configure} script produced by Autoconf, Autoconf is not required
24341 in order to run the script and install GNU M4.  Autoconf is only
24342 required if you want to change the M4 @command{configure} script, which few
24343 people have to do (mainly its maintainer).
24345 @node Why Not Imake
24346 @section Why Not Imake?
24347 @cindex Imake
24349 @display
24350 Why not use Imake instead of @command{configure} scripts?
24351 @end display
24353 Several people have written addressing this question, so I include
24354 adaptations of their explanations here.
24356 The following answer is based on one written by Richard Pixley:
24358 @quotation
24359 Autoconf generated scripts frequently work on machines that it has
24360 never been set up to handle before.  That is, it does a good job of
24361 inferring a configuration for a new system.  Imake cannot do this.
24363 Imake uses a common database of host specific data.  For X11, this makes
24364 sense because the distribution is made as a collection of tools, by one
24365 central authority who has control over the database.
24367 GNU tools are not released this way.  Each GNU tool has a
24368 maintainer; these maintainers are scattered across the world.  Using a
24369 common database would be a maintenance nightmare.  Autoconf may appear
24370 to be this kind of database, but in fact it is not.  Instead of listing
24371 host dependencies, it lists program requirements.
24373 If you view the GNU suite as a collection of native tools, then the
24374 problems are similar.  But the GNU development tools can be
24375 configured as cross tools in almost any host+target permutation.  All of
24376 these configurations can be installed concurrently.  They can even be
24377 configured to share host independent files across hosts.  Imake doesn't
24378 address these issues.
24380 Imake templates are a form of standardization.  The GNU coding
24381 standards address the same issues without necessarily imposing the same
24382 restrictions.
24383 @end quotation
24386 Here is some further explanation, written by Per Bothner:
24388 @quotation
24389 One of the advantages of Imake is that it easy to generate large
24390 makefiles using the @samp{#include} and macro mechanisms of @command{cpp}.
24391 However, @code{cpp} is not programmable: it has limited conditional
24392 facilities, and no looping.  And @code{cpp} cannot inspect its
24393 environment.
24395 All of these problems are solved by using @code{sh} instead of
24396 @code{cpp}.  The shell is fully programmable, has macro substitution,
24397 can execute (or source) other shell scripts, and can inspect its
24398 environment.
24399 @end quotation
24402 Paul Eggert elaborates more:
24404 @quotation
24405 With Autoconf, installers need not assume that Imake itself is already
24406 installed and working well.  This may not seem like much of an advantage
24407 to people who are accustomed to Imake.  But on many hosts Imake is not
24408 installed or the default installation is not working well, and requiring
24409 Imake to install a package hinders the acceptance of that package on
24410 those hosts.  For example, the Imake template and configuration files
24411 might not be installed properly on a host, or the Imake build procedure
24412 might wrongly assume that all source files are in one big directory
24413 tree, or the Imake configuration might assume one compiler whereas the
24414 package or the installer needs to use another, or there might be a
24415 version mismatch between the Imake expected by the package and the Imake
24416 supported by the host.  These problems are much rarer with Autoconf,
24417 where each package comes with its own independent configuration
24418 processor.
24420 Also, Imake often suffers from unexpected interactions between
24421 @command{make} and the installer's C preprocessor.  The fundamental problem
24422 here is that the C preprocessor was designed to preprocess C programs,
24423 not makefiles.  This is much less of a problem with Autoconf,
24424 which uses the general-purpose preprocessor M4, and where the
24425 package's author (rather than the installer) does the preprocessing in a
24426 standard way.
24427 @end quotation
24430 Finally, Mark Eichin notes:
24432 @quotation
24433 Imake isn't all that extensible, either.  In order to add new features to
24434 Imake, you need to provide your own project template, and duplicate most
24435 of the features of the existing one.  This means that for a sophisticated
24436 project, using the vendor-provided Imake templates fails to provide any
24437 leverage---since they don't cover anything that your own project needs
24438 (unless it is an X11 program).
24440 On the other side, though:
24442 The one advantage that Imake has over @command{configure}:
24443 @file{Imakefile} files tend to be much shorter (likewise, less redundant)
24444 than @file{Makefile.in} files.  There is a fix to this, however---at least
24445 for the Kerberos V5 tree, we've modified things to call in common
24446 @file{post.in} and @file{pre.in} makefile fragments for the
24447 entire tree.  This means that a lot of common things don't have to be
24448 duplicated, even though they normally are in @command{configure} setups.
24449 @end quotation
24452 @node Defining Directories
24453 @section How Do I @code{#define} Installation Directories?
24455 @display
24456 My program needs library files, installed in @code{datadir} and
24457 similar.  If I use
24459 @example
24460 AC_DEFINE_UNQUOTED([DATADIR], [$datadir],
24461   [Define to the read-only architecture-independent
24462    data directory.])
24463 @end example
24465 @noindent
24466 I get
24468 @example
24469 #define DATADIR "$@{prefix@}/share"
24470 @end example
24471 @end display
24473 As already explained, this behavior is on purpose, mandated by the
24474 GNU Coding Standards, see @ref{Installation Directory
24475 Variables}.  There are several means to achieve a similar goal:
24477 @itemize @minus
24478 @item
24479 Do not use @code{AC_DEFINE} but use your makefile to pass the
24480 actual value of @code{datadir} via compilation flags.
24481 @xref{Installation Directory Variables}, for the details.
24483 @item
24484 This solution can be simplified when compiling a program: you may either
24485 extend the @code{CPPFLAGS}:
24487 @example
24488 CPPFLAGS = -DDATADIR='"$(datadir)"' @@CPPFLAGS@@
24489 @end example
24491 @noindent
24492 If you are using Automake, you should use @code{AM_CPPFLAGS} instead:
24494 @example
24495 AM_CPPFLAGS = -DDATADIR='"$(datadir)"'
24496 @end example
24498 @noindent
24499 Alternatively, create a dedicated header file:
24501 @example
24502 DISTCLEANFILES = myprog-paths.h
24503 myprog-paths.h: Makefile
24504         echo '#define DATADIR "$(datadir)"' >$@@
24505 @end example
24507 @item
24508 Use @code{AC_DEFINE} but have @command{configure} compute the literal
24509 value of @code{datadir} and others.  Many people have wrapped macros to
24510 automate this task; for an example, see the macro @code{AC_DEFINE_DIR} from
24511 the @uref{http://@/www.gnu.org/@/software/@/autoconf-archive/, Autoconf Macro
24512 Archive}.
24514 This solution does not conform to the GNU Coding Standards.
24516 @item
24517 Note that all the previous solutions hard wire the absolute name of
24518 these directories in the executables, which is not a good property.  You
24519 may try to compute the names relative to @code{prefix}, and try to
24520 find @code{prefix} at runtime, this way your package is relocatable.
24521 @end itemize
24524 @node Autom4te Cache
24525 @section What is @file{autom4te.cache}?
24527 @display
24528 What is this directory @file{autom4te.cache}?  Can I safely remove it?
24529 @end display
24531 In the GNU Build System, @file{configure.ac} plays a central
24532 role and is read by many tools: @command{autoconf} to create
24533 @file{configure}, @command{autoheader} to create @file{config.h.in},
24534 @command{automake} to create @file{Makefile.in}, @command{autoscan} to
24535 check the completeness of @file{configure.ac}, @command{autoreconf} to
24536 check the GNU Build System components that are used.  To
24537 ``read @file{configure.ac}'' actually means to compile it with M4,
24538 which can be a long process for complex @file{configure.ac}.
24540 This is why all these tools, instead of running directly M4, invoke
24541 @command{autom4te} (@pxref{autom4te Invocation}) which, while answering to
24542 a specific demand, stores additional information in
24543 @file{autom4te.cache} for future runs.  For instance, if you run
24544 @command{autoconf}, behind the scenes, @command{autom4te} also
24545 stores information for the other tools, so that when you invoke
24546 @command{autoheader} or @command{automake} etc., reprocessing
24547 @file{configure.ac} is not needed.  The speed up is frequently 30%,
24548 and is increasing with the size of @file{configure.ac}.
24550 But it is and remains being simply a cache: you can safely remove it.
24552 @sp 1
24554 @display
24555 Can I permanently get rid of it?
24556 @end display
24558 The creation of this cache can be disabled from
24559 @file{~/.autom4te.cfg}, see @ref{Customizing autom4te}, for more
24560 details.  You should be aware that disabling the cache slows down the
24561 Autoconf test suite by 40%.  The more GNU Build System
24562 components are used, the more the cache is useful; for instance
24563 running @samp{autoreconf -f} on the Core Utilities is twice slower without
24564 the cache @emph{although @option{--force} implies that the cache is
24565 not fully exploited}, and eight times slower than without
24566 @option{--force}.
24569 @node Present But Cannot Be Compiled
24570 @section Header Present But Cannot Be Compiled
24572 The most important guideline to bear in mind when checking for
24573 features is to mimic as much as possible the intended use.
24574 Unfortunately, old versions of @code{AC_CHECK_HEADER} and
24575 @code{AC_CHECK_HEADERS} failed to follow this idea, and called
24576 the preprocessor, instead of the compiler, to check for headers.  As a
24577 result, incompatibilities between headers went unnoticed during
24578 configuration, and maintainers finally had to deal with this issue
24579 elsewhere.
24581 The transition began with Autoconf 2.56.  As of Autoconf 2.64 both
24582 checks are performed, and @command{configure} complains loudly if the
24583 compiler and the preprocessor do not agree.  However, only the compiler
24584 result is considered.
24586 Consider the following example:
24588 @smallexample
24589 $ @kbd{cat number.h}
24590 typedef int number;
24591 $ @kbd{cat pi.h}
24592 const number pi = 3;
24593 $ @kbd{cat configure.ac}
24594 AC_INIT([Example], [1.0], [bug-example@@example.org])
24595 AC_CHECK_HEADERS([pi.h])
24596 $ @kbd{autoconf -Wall}
24597 $ @kbd{./configure}
24598 checking for gcc... gcc
24599 checking for C compiler default output file name... a.out
24600 checking whether the C compiler works... yes
24601 checking whether we are cross compiling... no
24602 checking for suffix of executables...
24603 checking for suffix of object files... o
24604 checking whether we are using the GNU C compiler... yes
24605 checking whether gcc accepts -g... yes
24606 checking for gcc option to accept ISO C89... none needed
24607 checking how to run the C preprocessor... gcc -E
24608 checking for grep that handles long lines and -e... grep
24609 checking for egrep... grep -E
24610 checking for ANSI C header files... yes
24611 checking for sys/types.h... yes
24612 checking for sys/stat.h... yes
24613 checking for stdlib.h... yes
24614 checking for string.h... yes
24615 checking for memory.h... yes
24616 checking for strings.h... yes
24617 checking for inttypes.h... yes
24618 checking for stdint.h... yes
24619 checking for unistd.h... yes
24620 checking pi.h usability... no
24621 checking pi.h presence... yes
24622 configure: WARNING: pi.h: present but cannot be compiled
24623 configure: WARNING: pi.h:     check for missing prerequisite headers?
24624 configure: WARNING: pi.h: see the Autoconf documentation
24625 configure: WARNING: pi.h:     section "Present But Cannot Be Compiled"
24626 configure: WARNING: pi.h: proceeding with the compiler's result
24627 configure: WARNING:     ## -------------------------------------- ##
24628 configure: WARNING:     ## Report this to bug-example@@example.org ##
24629 configure: WARNING:     ## -------------------------------------- ##
24630 checking for pi.h... yes
24631 @end smallexample
24633 @noindent
24634 The proper way the handle this case is using the fourth argument
24635 (@pxref{Generic Headers}):
24637 @example
24638 $ @kbd{cat configure.ac}
24639 AC_INIT([Example], [1.0], [bug-example@@example.org])
24640 AC_CHECK_HEADERS([number.h pi.h], [], [],
24641 [[#ifdef HAVE_NUMBER_H
24642 # include <number.h>
24643 #endif
24645 $ @kbd{autoconf -Wall}
24646 $ @kbd{./configure}
24647 checking for gcc... gcc
24648 checking for C compiler default output... a.out
24649 checking whether the C compiler works... yes
24650 checking whether we are cross compiling... no
24651 checking for suffix of executables...
24652 checking for suffix of object files... o
24653 checking whether we are using the GNU C compiler... yes
24654 checking whether gcc accepts -g... yes
24655 checking for gcc option to accept ANSI C... none needed
24656 checking for number.h... yes
24657 checking for pi.h... yes
24658 @end example
24660 See @ref{Particular Headers}, for a list of headers with their
24661 prerequisites.
24663 @node Expanded Before Required
24664 @section Expanded Before Required
24666 @cindex expanded before required
24667 Older versions of Autoconf silently built files with incorrect ordering
24668 between dependent macros if an outer macro first expanded, then later
24669 indirectly required, an inner macro.  Starting with Autoconf 2.64, this
24670 situation no longer generates out-of-order code, but results in
24671 duplicate output and a syntax warning:
24673 @example
24674 $ @kbd{cat configure.ac}
24675 @result{}AC_DEFUN([TESTA], [[echo in A
24676 @result{}if test -n "$SEEN_A" ; then echo duplicate ; fi
24677 @result{}SEEN_A=:]])
24678 @result{}AC_DEFUN([TESTB], [AC_REQUIRE([TESTA])[echo in B
24679 @result{}if test -z "$SEEN_A" ; then echo bug ; fi]])
24680 @result{}AC_DEFUN([TESTC], [AC_REQUIRE([TESTB])[echo in C]])
24681 @result{}AC_DEFUN([OUTER], [[echo in OUTER]
24682 @result{}TESTA
24683 @result{}TESTC])
24684 @result{}AC_INIT
24685 @result{}OUTER
24686 @result{}AC_OUTPUT
24687 $ @kbd{autoconf}
24688 @result{}configure.ac:11: warning: AC_REQUIRE:
24689 @result{} `TESTA' was expanded before it was required
24690 @result{}configure.ac:4: TESTB is expanded from...
24691 @result{}configure.ac:6: TESTC is expanded from...
24692 @result{}configure.ac:7: OUTER is expanded from...
24693 @result{}configure.ac:11: the top level
24694 @end example
24696 @noindent
24697 To avoid this warning, decide what purpose the macro in question serves.
24698 If it only needs to be expanded once (for example, if it provides
24699 initialization text used by later macros), then the simplest fix is to
24700 change the macro to be declared with @code{AC_DEFUN_ONCE}
24701 (@pxref{One-Shot Macros}), although this only works in Autoconf 2.64 and
24702 newer.  A more portable fix is to change all
24703 instances of direct calls to instead go through @code{AC_REQUIRE}
24704 (@pxref{Prerequisite Macros}).  If, instead, the macro is parameterized
24705 by arguments or by the current definition of other macros in the m4
24706 environment, then the macro should always be directly expanded instead
24707 of required.
24709 For another case study, consider this example trimmed down from an
24710 actual package.  Originally, the package contained shell code and
24711 multiple macro invocations at the top level of @file{configure.ac}:
24713 @example
24714 AC_DEFUN([FOO], [AC_COMPILE_IFELSE([@dots{}])])
24715 foobar=
24716 AC_PROG_CC
24718 @end example
24720 @noindent
24721 but that was getting complex, so the author wanted to offload some of
24722 the text into a new macro in another file included via
24723 @file{aclocal.m4}.  The na@"ive approach merely wraps the text in a new
24724 macro:
24726 @example
24727 AC_DEFUN([FOO], [AC_COMPILE_IFELSE([@dots{}])])
24728 AC_DEFUN([BAR], [
24729 foobar=
24730 AC_PROG_CC
24734 @end example
24736 @noindent
24737 With older versions of Autoconf, the setting of @samp{foobar=} occurs
24738 before the single compiler check, as the author intended.  But with
24739 Autoconf 2.64, this issues the ``expanded before it was required''
24740 warning for @code{AC_PROG_CC}, and outputs two copies of the compiler
24741 check, one before @samp{foobar=}, and one after.  To understand why this
24742 is happening, remember that the use of @code{AC_COMPILE_IFELSE} includes
24743 a call to @code{AC_REQUIRE([AC_PROG_CC])} under the hood.  According to
24744 the documented semantics of @code{AC_REQUIRE}, this means that
24745 @code{AC_PROG_CC} @emph{must} occur before the body of the outermost
24746 @code{AC_DEFUN}, which in this case is @code{BAR}, thus preceeding the
24747 use of @samp{foobar=}.  The older versions of Autoconf were broken with
24748 regards to the rules of @code{AC_REQUIRE}, which explains why the code
24749 changed from one over to two copies of @code{AC_PROG_CC} when upgrading
24750 autoconf.  In other words, the author was unknowingly relying on a bug
24751 exploit to get the desired results, and that exploit broke once the bug
24752 was fixed.
24754 So, what recourse does the author have, to restore their intended
24755 semantics of setting @samp{foobar=} prior to a single compiler check,
24756 regardless of whether Autoconf 2.63 or 2.64 is used?  One idea is to
24757 remember that only @code{AC_DEFUN} is impacted by @code{AC_REQUIRE};
24758 there is always the possibility of using the lower-level
24759 @code{m4_define}:
24761 @example
24762 AC_DEFUN([FOO], [AC_COMPILE_IFELSE([@dots{}])])
24763 m4_define([BAR], [
24764 foobar=
24765 AC_PROG_CC
24769 @end example
24771 @noindent
24772 This works great if everything is in the same file.  However, it does
24773 not help in the case where the author wants to have @command{aclocal}
24774 find the definition of @code{BAR} from its own file, since
24775 @command{aclocal} requires the use of @code{AC_DEFUN}.  In this case, a
24776 better fix is to recognize that if @code{BAR} also uses
24777 @code{AC_REQUIRE}, then there will no longer be direct expansion prior
24778 to a subsequent require.  Then, by creating yet another helper macro,
24779 the author can once again guarantee a single invocation of
24780 @code{AC_PROG_CC}, which will still occur after @code{foobar=}.  The
24781 author can also use @code{AC_BEFORE} to make sure no other macro
24782 appearing before @code{BAR} has triggered an unwanted expansion of
24783 @code{AC_PROG_CC}.
24785 @example
24786 AC_DEFUN([FOO], [AC_COMPILE_IFELSE([@dots{}])])
24787 AC_DEFUN([BEFORE_CC], [
24788 foobar=
24790 AC_DEFUN([BAR], [
24791 AC_BEFORE([$0], [AC_PROG_CC])dnl
24792 AC_REQUIRE([BEFORE_CC])dnl
24793 AC_REQUIRE([AC_PROG_CC])dnl
24797 @end example
24800 @node Debugging
24801 @section Debugging @command{configure} scripts
24803 While in general, @command{configure} scripts generated by Autoconf
24804 strive to be fairly portable to various systems, compilers, shells, and
24805 other tools, it may still be necessary to debug a failing test, broken
24806 script or makefile, or fix or override an incomplete, faulty, or erroneous
24807 test, especially during macro development.  Failures can occur at all levels,
24808 in M4 syntax or semantics, shell script issues, or due to bugs in the
24809 test or the tools invoked by @command{configure}.  Together with the
24810 rather arcane error message that @command{m4} and @command{make} may
24811 produce when their input contains syntax errors, this can make debugging
24812 rather painful.
24814 Nevertheless, here is a list of hints and strategies that may help:
24816 @itemize
24817 @item
24818 When @command{autoconf} fails, common causes for error include:
24820 @itemize
24821 @item
24822 mismatched or unbalanced parentheses or braces (@pxref{Balancing
24823 Parentheses}),
24825 @item under- or overquoted macro arguments (@pxref{Autoconf
24826 Language}, @pxref{Quoting and Parameters}, @pxref{Quotation and Nested
24827 Macros}),
24829 @item spaces between macro name and opening parenthesis (@pxref{Autoconf
24830 Language}).
24831 @end itemize
24833 Typically, it helps to go back to the last working version of the input
24834 and compare the differences for each of these errors.  Another
24835 possibility is to sprinkle pairs of @code{m4_traceon} and
24836 @code{m4_traceoff} judiciously in the code, either without a parameter
24837 or listing some macro names and watch @command{m4} expand its input
24838 verbosely (@pxref{Debugging via autom4te}).
24840 @item
24841 Sometimes @command{autoconf} succeeds but the generated
24842 @command{configure} script has invalid shell syntax.  You can detect this
24843 case by running @samp{bash -n configure} or @samp{sh -n configure}.
24844 If this command fails, the same tips apply, as if @command{autoconf} had
24845 failed.
24847 @item
24848 Debugging @command{configure} script execution may be done by sprinkling
24849 pairs of @code{set -x} and @code{set +x} into the shell script before
24850 and after the region that contains a bug.  Running the whole script with
24851 @samp{@var{shell} ./configure -vx 2>&1 | tee @var{log-file}} with a decent
24852 @var{shell} may work, but produces lots of output.  Here, it can help to
24853 search for markers like @samp{checking for} a particular test in the
24854 @var{log-file}.
24856 @item
24857 When @command{configure} tests produce invalid results for your system,
24858 it may be necessary to override them:
24860 @itemize
24861 @item
24862 For programs, tools or libraries variables, preprocessor, compiler, or
24863 linker flags, it is often sufficient to override them at @command{make}
24864 run time with some care (@pxref{Macros and Submakes}).  Since this
24865 normally won't cause @command{configure} to be run again with these
24866 changed settings, it may fail if the changed variable would have caused
24867 different test results from @command{configure}, so this may work only
24868 for simple differences.
24870 @item
24871 Most tests which produce their result in a substituted variable allow to
24872 override the test by setting the variable on the @command{configure}
24873 command line (@pxref{Compilers and Options}, @pxref{Defining Variables},
24874 @pxref{Particular Systems}).
24876 @item
24877 Many tests store their result in a cache variable (@pxref{Caching
24878 Results}).  This lets you override them either on the
24879 @command{configure} command line as above, or through a primed cache or
24880 site file (@pxref{Cache Files}, @pxref{Site Defaults}).  The name of a
24881 cache variable is documented with a test macro or may be inferred from
24882 @ref{Cache Variable Names}; the precise semantics of undocumented
24883 variables are often internal details, subject to change.
24884 @end itemize
24886 @item
24887 Alternatively, @command{configure} may produce invalid results because
24888 of uncaught programming errors, in your package or in an upstream
24889 library package.  For example, when @code{AC_CHECK_LIB} fails to find a
24890 library with a specified function, always check @file{config.log}.  This
24891 will reveal the exact error that produced the failing result: the
24892 library linked by @code{AC_CHECK_LIB} probably has a fatal bug.
24893 @end itemize
24895 Conversely, as macro author, you can make it easier for users of your
24896 macro:
24898 @itemize
24899 @item
24900 by minimizing dependencies between tests and between test results as far
24901 as possible,
24903 @item
24904 by using @command{make} variables to factorize and allow
24905 override of settings at @command{make} run time,
24907 @item
24908 by honoring the GNU Coding Standards and not overriding flags
24909 reserved for the user except temporarily during @command{configure}
24910 tests,
24912 @item
24913 by not requiring users of your macro to use the cache variables.
24914 Instead, expose the result of the test via @var{run-if-true} and
24915 @var{run-if-false} parameters.  If the result is not a boolean,
24916 then provide it through documented shell variables.
24917 @end itemize
24920 @c ===================================================== History of Autoconf.
24922 @node History
24923 @chapter History of Autoconf
24924 @cindex History of autoconf
24926 You may be wondering, Why was Autoconf originally written?  How did it
24927 get into its present form?  (Why does it look like gorilla spit?)  If
24928 you're not wondering, then this chapter contains no information useful
24929 to you, and you might as well skip it.  If you @emph{are} wondering,
24930 then let there be light@enddots{}
24932 @menu
24933 * Genesis::                     Prehistory and naming of @command{configure}
24934 * Exodus::                      The plagues of M4 and Perl
24935 * Leviticus::                   The priestly code of portability arrives
24936 * Numbers::                     Growth and contributors
24937 * Deuteronomy::                 Approaching the promises of easy configuration
24938 @end menu
24940 @node Genesis
24941 @section Genesis
24943 In June 1991 I was maintaining many of the GNU utilities for the
24944 Free Software Foundation.  As they were ported to more platforms and
24945 more programs were added, the number of @option{-D} options that users
24946 had to select in the makefile (around 20) became burdensome.
24947 Especially for me---I had to test each new release on a bunch of
24948 different systems.  So I wrote a little shell script to guess some of
24949 the correct settings for the fileutils package, and released it as part
24950 of fileutils 2.0.  That @command{configure} script worked well enough that
24951 the next month I adapted it (by hand) to create similar @command{configure}
24952 scripts for several other GNU utilities packages.  Brian Berliner
24953 also adapted one of my scripts for his CVS revision control system.
24955 Later that summer, I learned that Richard Stallman and Richard Pixley
24956 were developing similar scripts to use in the GNU compiler tools;
24957 so I adapted my @command{configure} scripts to support their evolving
24958 interface: using the file name @file{Makefile.in} as the templates;
24959 adding @samp{+srcdir}, the first option (of many); and creating
24960 @file{config.status} files.
24962 @node Exodus
24963 @section Exodus
24965 As I got feedback from users, I incorporated many improvements, using
24966 Emacs to search and replace, cut and paste, similar changes in each of
24967 the scripts.  As I adapted more GNU utilities packages to use
24968 @command{configure} scripts, updating them all by hand became impractical.
24969 Rich Murphey, the maintainer of the GNU graphics utilities, sent me
24970 mail saying that the @command{configure} scripts were great, and asking if
24971 I had a tool for generating them that I could send him.  No, I thought,
24972 but I should!  So I started to work out how to generate them.  And the
24973 journey from the slavery of hand-written @command{configure} scripts to the
24974 abundance and ease of Autoconf began.
24976 Cygnus @command{configure}, which was being developed at around that time,
24977 is table driven; it is meant to deal mainly with a discrete number of
24978 system types with a small number of mainly unguessable features (such as
24979 details of the object file format).  The automatic configuration system
24980 that Brian Fox had developed for Bash takes a similar approach.  For
24981 general use, it seems to me a hopeless cause to try to maintain an
24982 up-to-date database of which features each variant of each operating
24983 system has.  It's easier and more reliable to check for most features on
24984 the fly---especially on hybrid systems that people have hacked on
24985 locally or that have patches from vendors installed.
24987 I considered using an architecture similar to that of Cygnus
24988 @command{configure}, where there is a single @command{configure} script that
24989 reads pieces of @file{configure.in} when run.  But I didn't want to have
24990 to distribute all of the feature tests with every package, so I settled
24991 on having a different @command{configure} made from each
24992 @file{configure.in} by a preprocessor.  That approach also offered more
24993 control and flexibility.
24995 I looked briefly into using the Metaconfig package, by Larry Wall,
24996 Harlan Stenn, and Raphael Manfredi, but I decided not to for several
24997 reasons.  The @command{Configure} scripts it produces are interactive,
24998 which I find quite inconvenient; I didn't like the ways it checked for
24999 some features (such as library functions); I didn't know that it was
25000 still being maintained, and the @command{Configure} scripts I had
25001 seen didn't work on many modern systems (such as System V R4 and NeXT);
25002 it wasn't flexible in what it could do in response to a feature's
25003 presence or absence; I found it confusing to learn; and it was too big
25004 and complex for my needs (I didn't realize then how much Autoconf would
25005 eventually have to grow).
25007 I considered using Perl to generate my style of @command{configure}
25008 scripts, but decided that M4 was better suited to the job of simple
25009 textual substitutions: it gets in the way less, because output is
25010 implicit.  Plus, everyone already has it.  (Initially I didn't rely on
25011 the GNU extensions to M4.)  Also, some of my friends at the
25012 University of Maryland had recently been putting M4 front ends on
25013 several programs, including @code{tvtwm}, and I was interested in trying
25014 out a new language.
25016 @node Leviticus
25017 @section Leviticus
25019 Since my @command{configure} scripts determine the system's capabilities
25020 automatically, with no interactive user intervention, I decided to call
25021 the program that generates them Autoconfig.  But with a version number
25022 tacked on, that name would be too long for old Unix file systems,
25023 so I shortened it to Autoconf.
25025 In the fall of 1991 I called together a group of fellow questers after
25026 the Holy Grail of portability (er, that is, alpha testers) to give me
25027 feedback as I encapsulated pieces of my handwritten scripts in M4 macros
25028 and continued to add features and improve the techniques used in the
25029 checks.  Prominent among the testers were Fran@,{c}ois Pinard, who came up
25030 with the idea of making an Autoconf shell script to run M4
25031 and check for unresolved macro calls; Richard Pixley, who suggested
25032 running the compiler instead of searching the file system to find
25033 include files and symbols, for more accurate results; Karl Berry, who
25034 got Autoconf to configure @TeX{} and added the macro index to the
25035 documentation; and Ian Lance Taylor, who added support for creating a C
25036 header file as an alternative to putting @option{-D} options in a
25037 makefile, so he could use Autoconf for his UUCP package.
25038 The alpha testers cheerfully adjusted their files again and again as the
25039 names and calling conventions of the Autoconf macros changed from
25040 release to release.  They all contributed many specific checks, great
25041 ideas, and bug fixes.
25043 @node Numbers
25044 @section Numbers
25046 In July 1992, after months of alpha testing, I released Autoconf 1.0,
25047 and converted many GNU packages to use it.  I was surprised by how
25048 positive the reaction to it was.  More people started using it than I
25049 could keep track of, including people working on software that wasn't
25050 part of the GNU Project (such as TCL, FSP, and Kerberos V5).
25051 Autoconf continued to improve rapidly, as many people using the
25052 @command{configure} scripts reported problems they encountered.
25054 Autoconf turned out to be a good torture test for M4 implementations.
25055 Unix M4 started to dump core because of the length of the
25056 macros that Autoconf defined, and several bugs showed up in GNU
25057 M4 as well.  Eventually, we realized that we needed to use some
25058 features that only GNU M4 has.  4.3BSD M4, in
25059 particular, has an impoverished set of builtin macros; the System V
25060 version is better, but still doesn't provide everything we need.
25062 More development occurred as people put Autoconf under more stresses
25063 (and to uses I hadn't anticipated).  Karl Berry added checks for X11.
25064 david zuhn contributed C++ support.  Fran@,{c}ois Pinard made it diagnose
25065 invalid arguments.  Jim Blandy bravely coerced it into configuring
25066 GNU Emacs, laying the groundwork for several later improvements.
25067 Roland McGrath got it to configure the GNU C Library, wrote the
25068 @command{autoheader} script to automate the creation of C header file
25069 templates, and added a @option{--verbose} option to @command{configure}.
25070 Noah Friedman added the @option{--autoconf-dir} option and
25071 @code{AC_MACRODIR} environment variable.  (He also coined the term
25072 @dfn{autoconfiscate} to mean ``adapt a software package to use
25073 Autoconf''.)  Roland and Noah improved the quoting protection in
25074 @code{AC_DEFINE} and fixed many bugs, especially when I got sick of
25075 dealing with portability problems from February through June, 1993.
25077 @node Deuteronomy
25078 @section Deuteronomy
25080 A long wish list for major features had accumulated, and the effect of
25081 several years of patching by various people had left some residual
25082 cruft.  In April 1994, while working for Cygnus Support, I began a major
25083 revision of Autoconf.  I added most of the features of the Cygnus
25084 @command{configure} that Autoconf had lacked, largely by adapting the
25085 relevant parts of Cygnus @command{configure} with the help of david zuhn
25086 and Ken Raeburn.  These features include support for using
25087 @file{config.sub}, @file{config.guess}, @option{--host}, and
25088 @option{--target}; making links to files; and running @command{configure}
25089 scripts in subdirectories.  Adding these features enabled Ken to convert
25090 GNU @code{as}, and Rob Savoye to convert DejaGNU, to using
25091 Autoconf.
25093 I added more features in response to other peoples' requests.  Many
25094 people had asked for @command{configure} scripts to share the results of
25095 the checks between runs, because (particularly when configuring a large
25096 source tree, like Cygnus does) they were frustratingly slow.  Mike
25097 Haertel suggested adding site-specific initialization scripts.  People
25098 distributing software that had to unpack on MS-DOS asked for a way to
25099 override the @file{.in} extension on the file names, which produced file
25100 names like @file{config.h.in} containing two dots.  Jim Avera did an
25101 extensive examination of the problems with quoting in @code{AC_DEFINE}
25102 and @code{AC_SUBST}; his insights led to significant improvements.
25103 Richard Stallman asked that compiler output be sent to @file{config.log}
25104 instead of @file{/dev/null}, to help people debug the Emacs
25105 @command{configure} script.
25107 I made some other changes because of my dissatisfaction with the quality
25108 of the program.  I made the messages showing results of the checks less
25109 ambiguous, always printing a result.  I regularized the names of the
25110 macros and cleaned up coding style inconsistencies.  I added some
25111 auxiliary utilities that I had developed to help convert source code
25112 packages to use Autoconf.  With the help of Fran@,{c}ois Pinard, I made
25113 the macros not interrupt each others' messages.  (That feature revealed
25114 some performance bottlenecks in GNU M4, which he hastily
25115 corrected!)  I reorganized the documentation around problems people want
25116 to solve.  And I began a test suite, because experience had shown that
25117 Autoconf has a pronounced tendency to regress when we change it.
25119 Again, several alpha testers gave invaluable feedback, especially
25120 Fran@,{c}ois Pinard, Jim Meyering, Karl Berry, Rob Savoye, Ken Raeburn,
25121 and Mark Eichin.
25123 Finally, version 2.0 was ready.  And there was much rejoicing.  (And I
25124 have free time again.  I think.  Yeah, right.)
25127 @c ========================================================== Appendices
25130 @node GNU Free Documentation License
25131 @appendix GNU Free Documentation License
25133 @include fdl.texi
25135 @node Indices
25136 @appendix Indices
25138 @menu
25139 * Environment Variable Index::  Index of environment variables used
25140 * Output Variable Index::       Index of variables set in output files
25141 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
25142 * Cache Variable Index::        Index of documented cache variables
25143 * Autoconf Macro Index::        Index of Autoconf macros
25144 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
25145 * Autotest Macro Index::        Index of Autotest macros
25146 * Program & Function Index::    Index of those with portability problems
25147 * Concept Index::               General index
25148 @end menu
25150 @node Environment Variable Index
25151 @appendixsec Environment Variable Index
25153 This is an alphabetical list of the environment variables that might
25154 influence Autoconf checks.
25156 @printindex ev
25158 @node Output Variable Index
25159 @appendixsec Output Variable Index
25161 This is an alphabetical list of the variables that Autoconf can
25162 substitute into files that it creates, typically one or more
25163 makefiles.  @xref{Setting Output Variables}, for more information
25164 on how this is done.
25166 @printindex ov
25168 @node Preprocessor Symbol Index
25169 @appendixsec Preprocessor Symbol Index
25171 This is an alphabetical list of the C preprocessor symbols that the
25172 Autoconf macros define.  To work with Autoconf, C source code needs to
25173 use these names in @code{#if} or @code{#ifdef} directives.
25175 @printindex cv
25177 @node Cache Variable Index
25178 @appendixsec Cache Variable Index
25180 This is an alphabetical list of documented cache variables used
25181 by macros defined in Autoconf.  Autoconf macros may use additional cache
25182 variables internally.
25183 @ifset shortindexflag
25184 To make the list easier to use, the variables are listed without their
25185 preceding @samp{ac_cv_}.
25186 @end ifset
25188 @printindex CA
25190 @node Autoconf Macro Index
25191 @appendixsec Autoconf Macro Index
25193 This is an alphabetical list of the Autoconf macros.
25194 @ifset shortindexflag
25195 To make the list easier to use, the macros are listed without their
25196 preceding @samp{AC_}.
25197 @end ifset
25199 @printindex AC
25201 @node M4 Macro Index
25202 @appendixsec M4 Macro Index
25204 This is an alphabetical list of the M4, M4sugar, and M4sh macros.
25205 @ifset shortindexflag
25206 To make the list easier to use, the macros are listed without their
25207 preceding @samp{m4_} or @samp{AS_}.
25208 @end ifset
25210 @printindex MS
25212 @node Autotest Macro Index
25213 @appendixsec Autotest Macro Index
25215 This is an alphabetical list of the Autotest macros.
25216 @ifset shortindexflag
25217 To make the list easier to use, the macros are listed without their
25218 preceding @samp{AT_}.
25219 @end ifset
25221 @printindex AT
25223 @node Program & Function Index
25224 @appendixsec Program and Function Index
25226 This is an alphabetical list of the programs and functions whose
25227 portability is discussed in this document.
25229 @printindex pr
25231 @node Concept Index
25232 @appendixsec Concept Index
25234 This is an alphabetical list of the files, tools, and concepts
25235 introduced in this document.
25237 @printindex cp
25239 @bye
25241 @c  LocalWords:  texinfo setfilename autoconf texi settitle setchapternewpage
25242 @c  LocalWords:  setcontentsaftertitlepage finalout ARG ovar varname dvar acx
25243 @c  LocalWords:  makeinfo dvi defcodeindex ev ov CPP cv Autotest mv defindex fn
25244 @c  LocalWords:  shortindexflag iftex ifset acindex ACindex ifclear ahindex fu
25245 @c  LocalWords:  asindex MSindex atindex ATindex auindex hdrindex prindex FIXME
25246 @c  LocalWords:  msindex alloca fnindex Aaarg indices FSF's dircategory ifnames
25247 @c  LocalWords:  direntry autoscan autoreconf autoheader autoupdate config FDs
25248 @c  LocalWords:  testsuite titlepage Elliston Demaille vskip filll ifnottex hmm
25249 @c  LocalWords:  insertcopying Autoconf's detailmenu Automake Libtool Posix ois
25250 @c  LocalWords:  Systemology Checkpointing Changequote INTERCAL changequote dfn
25251 @c  LocalWords:  Quadrigraphs builtins Shellology acconfig Bugward LIBOBJ Imake
25252 @c  LocalWords:  LIBOBJS IFELSE cindex flushright Pinard Metaconfig uref Simons
25253 @c  LocalWords:  distclean uninstall noindent versioning Tromey dir
25254 @c  LocalWords:  SAMS samp aclocal acsite underquoted emph itemx prepend SUBST
25255 @c  LocalWords:  evindex automake Gettext autopoint gettext symlink libtoolize
25256 @c  LocalWords:  defmac INIT tarname ovindex cvindex BUGREPORT PREREQ asis PROG
25257 @c  LocalWords:  SRCDIR srcdir globbing afterwards cmds foos fooo foooo init cd
25258 @c  LocalWords:  builddir timestamp src Imakefile chmod defvar CFLAGS CPPFLAGS
25259 @c  LocalWords:  CXXFLAGS DEFS DHAVE defvarx FCFLAGS FFLAGS LDFLAGS bindir GCC
25260 @c  LocalWords:  datadir datarootdir docdir dvidir htmldir libdir ifnothtml kbd
25261 @c  LocalWords:  includedir infodir libexecdir localedir localstatedir mandir
25262 @c  LocalWords:  oldincludedir pdfdir PDF psdir PostScript sbindir sysconfdir
25263 @c  LocalWords:  sharedstatedir DDATADIR sed tmp pkgdatadir VPATH conf unistd
25264 @c  LocalWords:  undef endif builtin FUNCS ifndef STACKSEG getb GETB YMP fubar
25265 @c  LocalWords:  PRE dest SUBDIRS subdirs fi struct STDC stdlib stddef INTTYPES
25266 @c  LocalWords:  inttypes STDINT stdint AWK AIX Solaris NeXT env EGREP FGREP yy
25267 @c  LocalWords:  LEXLIB YYTEXT lfl nonportable Automake's LN RANLIB byacc INETD
25268 @c  LocalWords:  inetd prog PROGS progs ranlib lmp lXt lX nsl gethostbyname UX
25269 @c  LocalWords:  NextStep isinf isnan glibc IRIX sunmath lm lsunmath pre sizeof
25270 @c  LocalWords:  ld inline malloc putenv setenv FreeBSD realloc SunOS MinGW
25271 @c  LocalWords:  snprintf vsnprintf sprintf vsprintf sscanf gcc strerror ifdef
25272 @c  LocalWords:  strnlen sysconf PAGESIZE unsetenv va fallback memcpy dst FUNC
25273 @c  LocalWords:  PowerPC GNUC libPW pragma Olibcalls CHOWN chown CLOSEDIR VFORK
25274 @c  LocalWords:  closedir FNMATCH fnmatch vfork FSEEKO LARGEFILE fseeko SVR sc
25275 @c  LocalWords:  largefile GETGROUPS getgroups GETLOADAVG DGUX UMAX NLIST KMEM
25276 @c  LocalWords:  SETGID getloadavg nlist GETMNTENT irix
25277 @c  LocalWords:  getmntent UnixWare GETPGRP getpgid getpgrp Posix's pid LSTAT
25278 @c  LocalWords:  lstat rpl MEMCMP memcmp OpenStep MBRTOWC mbrtowc MKTIME mktime
25279 @c  LocalWords:  localtime MMAP mmap OBSTACK obstack obstacks ARGTYPES timeval
25280 @c  LocalWords:  SETPGRP setpgrp defmacx Hurd SETVBUF setvbuf STRCOLL strcoll
25281 @c  LocalWords:  STRTOD strtod DECL STRFTIME strftime SCO UTIME utime VPRINTF
25282 @c  LocalWords:  DOPRNT vprintf doprnt sp unfixable LIBSOURCE LIBSOURCES Eggert
25283 @c  LocalWords:  linux netinet ia Tru XFree DIRENT NDIR dirent ndir multitable
25284 @c  LocalWords:  NAMLEN strlen namlen MKDEV SYSMACROS makedev RESOLV resolv DNS
25285 @c  LocalWords:  inet structs NAMESER arpa NETDB netdb UTekV UTS GCC's kB
25286 @c  LocalWords:  STDBOOL BOOL stdbool conformant cplusplus bool Bool stdarg tm
25287 @c  LocalWords:  ctype strchr strrchr rindex bcopy memmove memchr WEXITSTATUS
25288 @c  LocalWords:  WIFEXITED TIOCGWINSZ GWINSZ termios preprocess preprocessable
25289 @c  LocalWords:  DECLS strdup calloc BLKSIZE blksize RDEV rdev TZNAME tzname pw
25290 @c  LocalWords:  passwd gecos pwd MBSTATE mbstate wchar RETSIGTYPE hup UID uid
25291 @c  LocalWords:  gid ptrdiff uintmax EXEEXT OBJEXT Ae conftest AXP str
25292 @c  LocalWords:  ALIGNOF WERROR Werror cpp HP's WorkShop egcs un fied stdc CXX
25293 @c  LocalWords:  varargs BIGENDIAN Endianness SPARC endianness grep'ed CONST FC
25294 @c  LocalWords:  const STRINGIZE stringizing PARAMS unprotoize protos KCC cxx
25295 @c  LocalWords:  xlC aCC CXXCPP FREEFORM xlf FLIBS FCLIBS ish SRCEXT XTRA LFS
25296 @c  LocalWords:  ISC lcposix MINIX Minix conditionalized inlines hw dD confdefs
25297 @c  LocalWords:  fputs stdout PREPROC ar UFS HFS QNX realtime fstype STATVFS se
25298 @c  LocalWords:  statvfs STATFS statfs func machfile hdr lelf raboof DEFUN GTK
25299 @c  LocalWords:  GTKMM Grmph ified ine defn baz EOF qar Ahhh changecom algol io
25300 @c  LocalWords:  changeword quadrigraphs quadrigraph dnl SGI atoi overquoting
25301 @c  LocalWords:  Aas Wcross sep args namespace undefine bpatsubst popdef dquote
25302 @c  LocalWords:  bregexp Overquote overquotation meisch maisch meische maische
25303 @c  LocalWords:  miscian DIRNAME dirname MKDIR CATFILE XMKMF TRAVOLTA celsius
25304 @c  LocalWords:  EMX emxos Emacsen Korn DYNIX subshell posix Ksh ksh Pdksh Zsh
25305 @c  LocalWords:  pdksh zsh Allbery Lipe Kubota UWS zorglub stderr eval esac lfn
25306 @c  LocalWords:  drivespec Posixy DJGPP doschk prettybird LPT pfew Zsh's yu yaa
25307 @c  LocalWords:  yM uM aM firebird IP subdir misparses ok Unpatched abc bc zA
25308 @c  LocalWords:  CDPATH DUALCASE LINENO prepass Subshells lineno NULLCMD cmp wc
25309 @c  LocalWords:  MAILPATH scanset arg NetBSD Almquist printf expr cp
25310 @c  LocalWords:  Oliva awk Aaaaarg cmd regex xfoo GNV OpenVMS VM
25311 @c  LocalWords:  sparc Proulx nbar nfoo maxdepth acdilrtu TWG mc
25312 @c  LocalWords:  mkdir exe uname OpenBSD Fileutils mktemp umask TMPDIR guid os
25313 @c  LocalWords:  fooXXXXXX Unicos utimes hpux hppa unescaped
25314 @c  LocalWords:  pmake DOS's gmake ifoo DESTDIR autoconfiscated pc coff mips gg
25315 @c  LocalWords:  dec ultrix cpu wildcards rpcc rdtsc powerpc readline
25316 @c  LocalWords:  withval vxworks gless localcache usr LOFF loff CYGWIN Cygwin
25317 @c  LocalWords:  cygwin SIGLIST siglist SYSNDIR SYSDIR ptx lseq rusage elif MSC
25318 @c  LocalWords:  lfoo POUNDBANG lsun NIS getpwnam SYSCALLS RSH INTL lintl aix
25319 @c  LocalWords:  intl lx ldir syslog bsd EPI toolchain netbsd objext de KNR nn
25320 @c  LocalWords:  fication LTLIBOBJS Wdiff TESTDIR atconfig atlocal akim XFAIL
25321 @c  LocalWords:  ChangeLog prepended errexit smallexample TESTSUITEFLAGS GPL er
25322 @c  LocalWords:  installcheck autotest indir Pixley Bothner Eichin Kerberos adl
25323 @c  LocalWords:  DISTCLEANFILES preprocessor's fileutils Stallman Murphey Stenn
25324 @c  LocalWords:  Manfredi Autoconfig TCL FSP david zuhn Blandy MACRODIR Raeburn
25325 @c  LocalWords:  autoconfiscate Savoye Haertel Avera Meyering fdl appendixsec
25326 @c  LocalWords:  printindex american LIBOBJDIR LibdirTest ERLCFLAGS OBJCFLAGS
25327 @c  LocalWords:  VER Gnulib online xyes strcpy TYPEOF typeof OBJC objcc objc ln
25328 @c  LocalWords:  GOBJC OTP ERLC erl valloc decr dumpdef errprint incr
25329 @c  LocalWords:  esyscmd len maketemp pushdef substr syscmd sysval translit txt
25330 @c  LocalWords:  sinclude foreach myvar tolower toupper uniq BASENAME STDIN
25331 @c  LocalWords:  Dynix descrips basename aname cname macroexpands xno xcheck
25332 @c  LocalWords:  LIBREADLINE lreadline lncurses libreadline
25334 @c Local Variables:
25335 @c fill-column: 72
25336 @c ispell-local-dictionary: "american"
25337 @c indent-tabs-mode: nil
25338 @c whitespace-check-buffer-indent: nil
25339 @c End: