Regenerate.
[autoconf.git] / doc / autoconf.texi
blobcaddff2a1d1a76396b94a28091895fb32b0cd70a
1 \input texinfo @c -*-texinfo-*-
2 @comment ========================================================
3 @comment %**start of header
4 @setfilename autoconf.info
5 @include version.texi
6 @settitle Autoconf
7 @setchapternewpage odd
8 @ifnothtml
9 @setcontentsaftertitlepage
10 @end ifnothtml
11 @finalout
13 @c @ovar(ARG, DEFAULT)
14 @c -------------------
15 @c The ARG is an optional argument.  To be used for macro arguments in
16 @c their documentation (@defmac).
17 @macro ovar{varname}
18 @r{[}@var{\varname\}@r{]}
19 @end macro
21 @c @dvar(ARG, DEFAULT)
22 @c -------------------
23 @c The ARG is an optional argument, defaulting to DEFAULT.  To be used
24 @c for macro arguments in their documentation (@defmac).
25 @macro dvar{varname, default}
26 @r{[}@var{\varname\} = @samp{\default\}@r{]}
27 @end macro
29 @c Handling the indexes with Texinfo yields several different problems.
31 @c Because we want to drop out the AC_ part of the macro names in the
32 @c printed manual, but not in the other outputs, we need a layer above
33 @c the usual @acindex{} etc.  That's why we first define indexes such as
34 @c acx meant to become the macro @acindex.  First of all, using ``ac_''
35 @c does not work with makeinfo, and using ``ac1'' doesn't work with TeX.
36 @c So use something more regular ``acx''.  Then you finish with a printed
37 @c index saying ``index is not existent''.  Of course: you ought to use
38 @c two letters :(  So you use capitals.
40 @c Second, when defining a macro in the TeX world, following spaces are
41 @c eaten.  But then, since we embed @acxindex commands that use the end
42 @c of line as an end marker, the whole things wrecks itself.  So make
43 @c sure you do *force* an additional end of line, add a ``@c''.
45 @c Finally, you might want to get rid of TeX expansion, using --expand
46 @c with texi2dvi.  But then you wake up an old problem: we use macros
47 @c in @defmac etc. where TeX does perform the expansion, but not makeinfo.
49 @c Define an environment variable index.
50 @defcodeindex ev
51 @c Define an output variable index.
52 @defcodeindex ov
53 @c Define a CPP variable index.
54 @defcodeindex cv
55 @c Define an Autoconf macro index that @defmac doesn't write to.
56 @defcodeindex AC
57 @c Define an Autotest macro index that @defmac doesn't write to.
58 @defcodeindex AT
59 @c Define an M4sugar macro index that @defmac doesn't write to.
60 @defcodeindex MS
61 @c Define an index for *foreign* programs: `mv' etc.  Used for the
62 @c portability sections and so on.
63 @defindex pr
65 @c shortindexflag
66 @c --------------
67 @c Shall we factor AC_ out of the Autoconf macro index etc.?
68 @iftex
69 @set shortindexflag
70 @end iftex
72 @c @acindex{MACRO}
73 @c ---------------
74 @c Registering an AC_\MACRO\.
75 @ifset shortindexflag
76 @macro acindex{macro}
77 @ACindex \macro\
79 @end macro
80 @end ifset
81 @ifclear shortindexflag
82 @macro acindex{macro}
83 @ACindex AC_\macro\
84 @end macro
85 @end ifclear
87 @c @ahindex{MACRO}
88 @c ---------------
89 @c Registering an AH_\MACRO\.
90 @macro ahindex{macro}
91 @ACindex AH_\macro\
93 @end macro
95 @c @asindex{MACRO}
96 @c ---------------
97 @c Registering an AS_\MACRO\.
98 @ifset shortindexflag
99 @macro asindex{macro}
100 @MSindex \macro\
102 @end macro
103 @end ifset
104 @ifclear shortindexflag
105 @macro asindex{macro}
106 @MSindex AS_\macro\
107 @end macro
108 @end ifclear
110 @c @atindex{MACRO}
111 @c ---------------
112 @c Registering an AT_\MACRO\.
113 @ifset shortindexflag
114 @macro atindex{macro}
115 @ATindex \macro\
117 @end macro
118 @end ifset
119 @ifclear shortindexflag
120 @macro atindex{macro}
121 @ATindex AT_\macro\
122 @end macro
123 @end ifclear
125 @c @auindex{MACRO}
126 @c ---------------
127 @c Registering an AU_\MACRO\.
128 @macro auindex{macro}
129 @ACindex AU_\macro\
131 @end macro
133 @c @hdrindex{MACRO}
134 @c ----------------
135 @c Indexing a header.
136 @macro hdrindex{macro}
137 @prindex @file{\macro\}
139 @end macro
141 @c @msindex{MACRO}
142 @c ---------------
143 @c Registering an m4_\MACRO\.
144 @ifset shortindexflag
145 @macro msindex{macro}
146 @MSindex \macro\
148 @end macro
149 @end ifset
150 @ifclear shortindexflag
151 @macro msindex{macro}
152 @MSindex m4_\macro\
153 @end macro
154 @end ifclear
157 @c Define an index for functions: `alloca' etc.  Used for the
158 @c portability sections and so on.  We can't use `fn' (aka `fnindex),
159 @c since `@defmac' goes into it => we'd get all the macros too.
161 @c   FIXME: Aaarg!  It seems there are too many indices for TeX :(
163 @c   ! No room for a new @write .
164 @c   l.112 @defcodeindex fu
166 @c   so don't define yet another one :(  Just put some tags before each
167 @c   @prindex which is actually a @funindex.
169 @c   @defcodeindex fu
172 @c   @c Put the programs and functions into their own index.
173 @c   @syncodeindex fu pr
175 @comment %**end of header
176 @comment ========================================================
178 @copying
180 This manual is for @acronym{GNU} Autoconf
181 (version @value{VERSION}, @value{UPDATED}),
182 a package for creating scripts to configure source code packages using
183 templates and an M4 macro package.
185 Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
186 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
188 @quotation
189 Permission is granted to copy, distribute and/or modify this document
190 under the terms of the @acronym{GNU} Free Documentation License,
191 Version 1.2 or any later version published by the Free Software
192 Foundation; with no Invariant Sections, with the Front-Cover texts
193 being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
194 (a) below.  A copy of the license is included in the section entitled
195 ``@acronym{GNU} Free Documentation License.''
197 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and
198 modify this @acronym{GNU} Manual, like @acronym{GNU} software.  Copies
199 published by the Free Software Foundation raise funds for
200 @acronym{GNU} development.''
201 @end quotation
202 @end copying
206 @dircategory Software development
207 @direntry
208 * Autoconf: (autoconf).         Create source code configuration scripts.
209 @end direntry
211 @dircategory Individual utilities
212 @direntry
213 * autoscan: (autoconf)autoscan Invocation.
214                                 Semi-automatic @file{configure.ac} writing
215 * ifnames: (autoconf)ifnames Invocation.        Listing conditionals in source.
216 * autoconf: (autoconf)autoconf Invocation.
217                                 How to create configuration scripts
218 * autoreconf: (autoconf)autoreconf Invocation.
219                                 Remaking multiple @command{configure} scripts
220 * autoheader: (autoconf)autoheader Invocation.
221                                 How to create configuration templates
222 * autom4te: (autoconf)autom4te Invocation.
223                                 The Autoconf executables backbone
224 * configure: (autoconf)configure Invocation.    Configuring a package.
225 * autoupdate: (autoconf)autoupdate Invocation.
226                                 Automatic update of @file{configure.ac}
227 * config.status: (autoconf)config.status Invocation. Recreating configurations.
228 * testsuite: (autoconf)testsuite Invocation.    Running an Autotest test suite.
229 @end direntry
231 @titlepage
232 @title Autoconf
233 @subtitle Creating Automatic Configuration Scripts
234 @subtitle for version @value{VERSION}, @value{UPDATED}
235 @author David MacKenzie
236 @author Ben Elliston
237 @author Akim Demaille
238 @page
239 @vskip 0pt plus 1filll
240 @insertcopying
241 @end titlepage
243 @contents
246 @ifnottex
247 @node Top
248 @top Autoconf
249 @insertcopying
250 @end ifnottex
252 @c The master menu, created with texinfo-master-menu, goes here.
254 @menu
255 * Introduction::                Autoconf's purpose, strengths, and weaknesses
256 * The GNU Build System::        A set of tools for portable software packages
257 * Making configure Scripts::    How to organize and produce Autoconf scripts
258 * Setup::                       Initialization and output
259 * Existing Tests::              Macros that check for particular features
260 * Writing Tests::               How to write new feature checks
261 * Results::                     What to do with results from feature checks
262 * Programming in M4::           Layers on top of which Autoconf is written
263 * Writing Autoconf Macros::     Adding new macros to Autoconf
264 * Portable Shell::              Shell script portability pitfalls
265 * Manual Configuration::        Selecting features that can't be guessed
266 * Site Configuration::          Local defaults for @command{configure}
267 * Running configure Scripts::   How to use the Autoconf output
268 * config.status Invocation::    Recreating a configuration
269 * Obsolete Constructs::         Kept for backward compatibility
270 * Using Autotest::              Creating portable test suites
271 * FAQ::                         Frequent Autoconf Questions, with answers
272 * History::                     History of Autoconf
273 * Copying This Manual::         How to make copies of this manual
274 * Indices::                     Indices of symbols, concepts, etc.
276 @detailmenu
277  --- The Detailed Node Listing ---
279 The @acronym{GNU} Build System
281 * Automake::                    Escaping Makefile hell
282 * Libtool::                     Building libraries portably
283 * Pointers::                    More info on the @acronym{GNU} build system
285 Making @command{configure} Scripts
287 * Writing configure.ac::        What to put in an Autoconf input file
288 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
289 * ifnames Invocation::          Listing the conditionals in source code
290 * autoconf Invocation::         How to create configuration scripts
291 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
293 Writing @file{configure.ac}
295 * Shell Script Compiler::       Autoconf as solution of a problem
296 * Autoconf Language::           Programming in Autoconf
297 * configure.ac Layout::         Standard organization of @file{configure.ac}
299 Initialization and Output Files
301 * Initializing configure::      Option processing etc.
302 * Notices::                     Copyright, version numbers in @command{configure}
303 * Input::                       Where Autoconf should find files
304 * Output::                      Outputting results from the configuration
305 * Configuration Actions::       Preparing the output based on results
306 * Configuration Files::         Creating output files
307 * Makefile Substitutions::      Using output variables in @file{Makefile}s
308 * Configuration Headers::       Creating a configuration header file
309 * Configuration Commands::      Running arbitrary instantiation commands
310 * Configuration Links::         Links depending on the configuration
311 * Subdirectories::              Configuring independent packages together
312 * Default Prefix::              Changing the default installation prefix
314 Substitutions in Makefiles
316 * Preset Output Variables::     Output variables that are always set
317 * Installation Directory Variables::  Other preset output variables
318 * Build Directories::           Supporting multiple concurrent compiles
319 * Automatic Remaking::          Makefile rules for configuring
321 Configuration Header Files
323 * Header Templates::            Input for the configuration headers
324 * autoheader Invocation::       How to create configuration templates
325 * Autoheader Macros::           How to specify CPP templates
327 Existing Tests
329 * Common Behavior::             Macros' standard schemes
330 * Alternative Programs::        Selecting between alternative programs
331 * Files::                       Checking for the existence of files
332 * Libraries::                   Library archives that might be missing
333 * Library Functions::           C library functions that might be missing
334 * Header Files::                Header files that might be missing
335 * Declarations::                Declarations that may be missing
336 * Structures::                  Structures or members that might be missing
337 * Types::                       Types that might be missing
338 * Compilers and Preprocessors::  Checking for compiling programs
339 * System Services::             Operating system services
340 * Posix Variants::              Special kludges for specific Posix variants
341 * Erlang Libraries::            Checking for the existence of Erlang libraries
343 Common Behavior
345 * Standard Symbols::            Symbols defined by the macros
346 * Default Includes::            Includes used by the generic macros
348 Alternative Programs
350 * Particular Programs::         Special handling to find certain programs
351 * Generic Programs::            How to find other programs
353 Library Functions
355 * Function Portability::        Pitfalls with usual functions
356 * Particular Functions::        Special handling to find certain functions
357 * Generic Functions::           How to find other functions
359 Header Files
361 * Header Portability::          Collected knowledge on common headers
362 * Particular Headers::          Special handling to find certain headers
363 * Generic Headers::             How to find other headers
365 Declarations
367 * Particular Declarations::     Macros to check for certain declarations
368 * Generic Declarations::        How to find other declarations
370 Structures
372 * Particular Structures::       Macros to check for certain structure members
373 * Generic Structures::          How to find other structure members
375 Types
377 * Particular Types::            Special handling to find certain types
378 * Generic Types::               How to find other types
380 Compilers and Preprocessors
382 * Specific Compiler Characteristics::  Some portability issues
383 * Generic Compiler Characteristics::  Language independent tests and features
384 * C Compiler::                  Checking its characteristics
385 * C++ Compiler::                Likewise
386 * Objective C Compiler::        Likewise
387 * Erlang Compiler and Interpreter::  Likewise
388 * Fortran Compiler::            Likewise
390 Writing Tests
392 * Language Choice::             Selecting which language to use for testing
393 * Writing Test Programs::       Forging source files for compilers
394 * Running the Preprocessor::    Detecting preprocessor symbols
395 * Running the Compiler::        Detecting language or header features
396 * Running the Linker::          Detecting library features
397 * Run Time::                    Testing for run-time features
398 * Systemology::                 A zoology of operating systems
399 * Multiple Cases::              Tests for several possible values
401 Writing Test Programs
403 * Guidelines::                  General rules for writing test programs
404 * Test Functions::              Avoiding pitfalls in test programs
405 * Generating Sources::          Source program boilerplate
407 Results of Tests
409 * Defining Symbols::            Defining C preprocessor symbols
410 * Setting Output Variables::    Replacing variables in output files
411 * Caching Results::             Speeding up subsequent @command{configure} runs
412 * Printing Messages::           Notifying @command{configure} users
414 Caching Results
416 * Cache Variable Names::        Shell variables used in caches
417 * Cache Files::                 Files @command{configure} uses for caching
418 * Cache Checkpointing::         Loading and saving the cache file
420 Programming in M4
422 * M4 Quotation::                Protecting macros from unwanted expansion
423 * Using autom4te::              The Autoconf executables backbone
424 * Programming in M4sugar::      Convenient pure M4 macros
425 * Programming in M4sh::         Common shell Constructs
426 * File Descriptor Macros::      File descriptor macros for input and output
428 M4 Quotation
430 * Active Characters::           Characters that change the behavior of M4
431 * One Macro Call::              Quotation and one macro call
432 * Quotation and Nested Macros::  Macros calling macros
433 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
434 * Quadrigraphs::                Another way to escape special characters
435 * Quotation Rule Of Thumb::     One parenthesis, one quote
437 Using @command{autom4te}
439 * autom4te Invocation::         A @acronym{GNU} M4 wrapper
440 * Customizing autom4te::        Customizing the Autoconf package
442 Programming in M4sugar
444 * Redefined M4 Macros::         M4 builtins changed in M4sugar
445 * Looping constructs::          Iteration in M4
446 * Evaluation Macros::           More quotation and evaluation control
447 * Text processing Macros::      String manipulation in M4
448 * Forbidden Patterns::          Catching unexpanded macros
450 Writing Autoconf Macros
452 * Macro Definitions::           Basic format of an Autoconf macro
453 * Macro Names::                 What to call your new macros
454 * Reporting Messages::          Notifying @command{autoconf} users
455 * Dependencies Between Macros::  What to do when macros depend on other macros
456 * Obsoleting Macros::           Warning about old ways of doing things
457 * Coding Style::                Writing Autoconf macros @`a la Autoconf
459 Dependencies Between Macros
461 * Prerequisite Macros::         Ensuring required information
462 * Suggested Ordering::          Warning about possible ordering problems
463 * One-Shot Macros::             Ensuring a macro is called only once
465 Portable Shell Programming
467 * Shellology::                  A zoology of shells
468 * Here-Documents::              Quirks and tricks
469 * File Descriptors::            FDs and redirections
470 * File System Conventions::     File names
471 * Shell Substitutions::         Variable and command expansions
472 * Assignments::                 Varying side effects of assignments
473 * Parentheses::                 Parentheses in shell scripts
474 * Slashes::                     Slashes in shell scripts
475 * Special Shell Variables::     Variables you should not change
476 * Limitations of Builtins::     Portable use of not so portable /bin/sh
477 * Limitations of Usual Tools::  Portable use of portable tools
478 * Limitations of Make::         Portable Makefiles
480 Manual Configuration
482 * Specifying Names::            Specifying the system type
483 * Canonicalizing::              Getting the canonical system type
484 * Using System Type::           What to do with the system type
486 Site Configuration
488 * External Software::           Working with other optional software
489 * Package Options::             Selecting optional features
490 * Pretty Help Strings::         Formatting help string
491 * Site Details::                Configuring site details
492 * Transforming Names::          Changing program names when installing
493 * Site Defaults::               Giving @command{configure} local defaults
495 Transforming Program Names When Installing
497 * Transformation Options::      @command{configure} options to transform names
498 * Transformation Examples::     Sample uses of transforming names
499 * Transformation Rules::        @file{Makefile} uses of transforming names
501 Running @command{configure} Scripts
503 * Basic Installation::          Instructions for typical cases
504 * Compilers and Options::       Selecting compilers and optimization
505 * Multiple Architectures::      Compiling for multiple architectures at once
506 * Installation Names::          Installing in different directories
507 * Optional Features::           Selecting optional features
508 * System Type::                 Specifying the system type
509 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
510 * Defining Variables::          Specifying the compiler etc.
511 * configure Invocation::        Changing how @command{configure} runs
513 Obsolete Constructs
515 * Obsolete config.status Use::  Different calling convention
516 * acconfig.h::                  Additional entries in @file{config.h.in}
517 * autoupdate Invocation::       Automatic update of @file{configure.ac}
518 * Obsolete Macros::             Backward compatibility macros
519 * Autoconf 1::                  Tips for upgrading your files
520 * Autoconf 2.13::               Some fresher tips
522 Upgrading From Version 1
524 * Changed File Names::          Files you might rename
525 * Changed Makefiles::           New things to put in @file{Makefile.in}
526 * Changed Macros::              Macro calls you might replace
527 * Changed Results::             Changes in how to check test results
528 * Changed Macro Writing::       Better ways to write your own macros
530 Upgrading From Version 2.13
532 * Changed Quotation::           Broken code which used to work
533 * New Macros::                  Interaction with foreign macros
534 * Hosts and Cross-Compilation::  Bugward compatibility kludges
535 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
536 * AC_FOO_IFELSE vs AC_TRY_FOO::  A more generic scheme for testing sources
538 Generating Test Suites with Autotest
540 * Using an Autotest Test Suite::  Autotest and the user
541 * Writing testsuite.at::        Autotest macros
542 * testsuite Invocation::        Running @command{testsuite} scripts
543 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
545 Using an Autotest Test Suite
547 * testsuite Scripts::           The concepts of Autotest
548 * Autotest Logs::               Their contents
550 Frequent Autoconf Questions, with answers
552 * Distributing::                Distributing @command{configure} scripts
553 * Why GNU m4::                  Why not use the standard M4?
554 * Bootstrapping::               Autoconf and @acronym{GNU} M4 require each other?
555 * Why Not Imake::               Why @acronym{GNU} uses @command{configure} instead of Imake
556 * Defining Directories::        Passing @code{datadir} to program
557 * autom4te.cache::              What is it?  Can I remove it?
558 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
560 History of Autoconf
562 * Genesis::                     Prehistory and naming of @command{configure}
563 * Exodus::                      The plagues of M4 and Perl
564 * Leviticus::                   The priestly code of portability arrives
565 * Numbers::                     Growth and contributors
566 * Deuteronomy::                 Approaching the promises of easy configuration
568 Copying This Manual
570 * GNU Free Documentation License::  License for copying this manual
572 Indices
574 * Environment Variable Index::  Index of environment variables used
575 * Output Variable Index::       Index of variables set in output files
576 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
577 * Autoconf Macro Index::        Index of Autoconf macros
578 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
579 * Autotest Macro Index::        Index of Autotest macros
580 * Program & Function Index::    Index of those with portability problems
581 * Concept Index::               General index
583 @end detailmenu
584 @end menu
586 @c ============================================================= Introduction.
588 @node Introduction
589 @chapter Introduction
590 @cindex Introduction
592 @flushright
593 A physicist, an engineer, and a computer scientist were discussing the
594 nature of God.  ``Surely a Physicist,'' said the physicist, ``because
595 early in the Creation, God made Light; and you know, Maxwell's
596 equations, the dual nature of electromagnetic waves, the relativistic
597 consequences@dots{}'' ``An Engineer!,'' said the engineer, ``because
598 before making Light, God split the Chaos into Land and Water; it takes a
599 hell of an engineer to handle that big amount of mud, and orderly
600 separation of solids from liquids@dots{}'' The computer scientist
601 shouted: ``And the Chaos, where do you think it was coming from, hmm?''
603 ---Anonymous
604 @end flushright
605 @c (via Franc,ois Pinard)
607 Autoconf is a tool for producing shell scripts that automatically
608 configure software source code packages to adapt to many kinds of
609 Posix-like systems.  The configuration scripts produced by Autoconf
610 are independent of Autoconf when they are run, so their users do not
611 need to have Autoconf.
613 The configuration scripts produced by Autoconf require no manual user
614 intervention when run; they do not normally even need an argument
615 specifying the system type.  Instead, they individually test for the
616 presence of each feature that the software package they are for might need.
617 (Before each check, they print a one-line message stating what they are
618 checking for, so the user doesn't get too bored while waiting for the
619 script to finish.)  As a result, they deal well with systems that are
620 hybrids or customized from the more common Posix variants.  There is
621 no need to maintain files that list the features supported by each
622 release of each variant of Posix.
624 For each software package that Autoconf is used with, it creates a
625 configuration script from a template file that lists the system features
626 that the package needs or can use.  After the shell code to recognize
627 and respond to a system feature has been written, Autoconf allows it to
628 be shared by many software packages that can use (or need) that feature.
629 If it later turns out that the shell code needs adjustment for some
630 reason, it needs to be changed in only one place; all of the
631 configuration scripts can be regenerated automatically to take advantage
632 of the updated code.
634 The Metaconfig package is similar in purpose to Autoconf, but the
635 scripts it produces require manual user intervention, which is quite
636 inconvenient when configuring large source trees.  Unlike Metaconfig
637 scripts, Autoconf scripts can support cross-compiling, if some care is
638 taken in writing them.
640 Autoconf does not solve all problems related to making portable
641 software packages---for a more complete solution, it should be used in
642 concert with other @acronym{GNU} build tools like Automake and
643 Libtool.  These other tools take on jobs like the creation of a
644 portable, recursive @file{Makefile} with all of the standard targets,
645 linking of shared libraries, and so on.  @xref{The GNU Build System},
646 for more information.
648 Autoconf imposes some restrictions on the names of macros used with
649 @code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
651 Autoconf requires @acronym{GNU} M4 in order to generate the scripts.  It uses
652 features that some versions of M4, including @acronym{GNU} M4 1.3,
653 do not have.  You should use version 1.4.3 or later of @acronym{GNU} M4.
655 @xref{Autoconf 1}, for information about upgrading from version 1.
656 @xref{History}, for the story of Autoconf's development.  @xref{FAQ},
657 for answers to some common questions about Autoconf.
659 See the @uref{http://www.gnu.org/software/autoconf/,
660 Autoconf web page} for up-to-date information, details on the mailing
661 lists, pointers to a list of known bugs, etc.
663 Mail suggestions to @email{autoconf@@gnu.org, the Autoconf mailing
664 list}.  Past suggestions are
665 @uref{http://lists.gnu.org/archive/html/autoconf/, archived}.
667 Mail bug reports to @email{bug-autoconf@@gnu.org, the
668 Autoconf Bugs mailing list}.  Past bug reports are
669 @uref{http://lists.gnu.org/archive/html/bug-autoconf/, archived}.
671 If possible, first check that your bug is
672 not already solved in current development versions, and that it has not
673 been reported yet.  Be sure to include all the needed information and a
674 short @file{configure.ac} that demonstrates the problem.
676 Autoconf's development tree is accessible via anonymous @acronym{CVS}; see the
677 @uref{http://savannah.gnu.org/projects/autoconf/, Autoconf
678 Summary} for details.  Patches relative to the
679 current @acronym{CVS} version can be sent for review to the
680 @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}.
681 Past patches are
682 @uref{http://lists.gnu.org/archive/html/autoconf-patches/, archived}.
684 Because of its mission, the Autoconf package itself
685 includes only a set of often-used
686 macros that have already demonstrated their usefulness.  Nevertheless,
687 if you wish to share your macros, or find existing ones, see the
688 @uref{http://www.gnu.org/software/ac-archive/, @acronym{GNU} Autoconf Macro
689 Archive}, which is kindly run by @email{simons@@cryp.to,
690 Peter Simons}.
693 @c ================================================= The GNU Build System
695 @node The GNU Build System
696 @chapter The @acronym{GNU} Build System
697 @cindex GNU build system
699 Autoconf solves an important problem---reliable discovery of
700 system-specific build and run-time information---but this is only one
701 piece of the puzzle for the development of portable software.  To this
702 end, the @acronym{GNU} project has developed a suite of integrated
703 utilities to finish the job Autoconf started: the @acronym{GNU} build
704 system, whose most important components are Autoconf, Automake, and
705 Libtool.  In this chapter, we introduce you to those tools, point you
706 to sources of more information, and try to convince you to use the
707 entire @acronym{GNU} build system for your software.
709 @menu
710 * Automake::                    Escaping Makefile hell
711 * Libtool::                     Building libraries portably
712 * Pointers::                    More info on the @acronym{GNU} build system
713 @end menu
715 @node Automake
716 @section Automake
718 The ubiquity of @command{make} means that a @file{Makefile} is almost the
719 only viable way to distribute automatic build rules for software, but
720 one quickly runs into @command{make}'s numerous limitations.  Its lack of
721 support for automatic dependency tracking, recursive builds in
722 subdirectories, reliable timestamps (e.g., for network file systems), and
723 so on, mean that developers must painfully (and often incorrectly)
724 reinvent the wheel for each project.  Portability is non-trivial, thanks
725 to the quirks of @command{make} on many systems.  On top of all this is the
726 manual labor required to implement the many standard targets that users
727 have come to expect (@code{make install}, @code{make distclean},
728 @code{make uninstall}, etc.).  Since you are, of course, using Autoconf,
729 you also have to insert repetitive code in your @code{Makefile.in} to
730 recognize @code{@@CC@@}, @code{@@CFLAGS@@}, and other substitutions
731 provided by @command{configure}.  Into this mess steps @dfn{Automake}.
732 @cindex Automake
734 Automake allows you to specify your build needs in a @code{Makefile.am}
735 file with a vastly simpler and more powerful syntax than that of a plain
736 @code{Makefile}, and then generates a portable @code{Makefile.in} for
737 use with Autoconf.  For example, the @code{Makefile.am} to build and
738 install a simple ``Hello world'' program might look like:
740 @example
741 bin_PROGRAMS = hello
742 hello_SOURCES = hello.c
743 @end example
745 @noindent
746 The resulting @code{Makefile.in} (~400 lines) automatically supports all
747 the standard targets, the substitutions provided by Autoconf, automatic
748 dependency tracking, @code{VPATH} building, and so on.  @command{make} will
749 build the @code{hello} program, and @code{make install} will install it
750 in @file{/usr/local/bin} (or whatever prefix was given to
751 @command{configure}, if not @file{/usr/local}).
753 The benefits of Automake increase for larger packages (especially ones
754 with subdirectories), but even for small programs the added convenience
755 and portability can be substantial.  And that's not all@enddots{}
757 @node Libtool
758 @section Libtool
760 Very often, one wants to build not only programs, but libraries, so that
761 other programs can benefit from the fruits of your labor.  Ideally, one
762 would like to produce @emph{shared} (dynamically linked) libraries,
763 which can be used by multiple programs without duplication on disk or in
764 memory and can be updated independently of the linked programs.
765 Producing shared libraries portably, however, is the stuff of
766 nightmares---each system has its own incompatible tools, compiler flags,
767 and magic incantations.  Fortunately, @acronym{GNU} provides a solution:
768 @dfn{Libtool}.
769 @cindex Libtool
771 Libtool handles all the requirements of building shared libraries for
772 you, and at this time seems to be the @emph{only} way to do so with any
773 portability.  It also handles many other headaches, such as: the
774 interaction of @code{Makefile} rules with the variable suffixes of
775 shared libraries, linking reliably with shared libraries before they are
776 installed by the superuser, and supplying a consistent versioning system
777 (so that different versions of a library can be installed or upgraded
778 without breaking binary compatibility).  Although Libtool, like
779 Autoconf, can be used without Automake, it is most simply utilized in
780 conjunction with Automake---there, Libtool is used automatically
781 whenever shared libraries are needed, and you need not know its syntax.
783 @node Pointers
784 @section Pointers
786 Developers who are used to the simplicity of @command{make} for small
787 projects on a single system might be daunted at the prospect of
788 learning to use Automake and Autoconf.  As your software is
789 distributed to more and more users, however, you will otherwise
790 quickly find yourself putting lots of effort into reinventing the
791 services that the @acronym{GNU} build tools provide, and making the
792 same mistakes that they once made and overcame.  (Besides, since
793 you're already learning Autoconf, Automake will be a piece of cake.)
795 There are a number of places that you can go to for more information on
796 the @acronym{GNU} build tools.
798 @itemize @minus
800 @item Web
802 The home pages for
803 @uref{http://www.gnu.org/software/autoconf/, Autoconf},
804 @uref{http://www.gnu.org/software/automake/, Automake}, and
805 @uref{http://www.gnu.org/software/libtool/, Libtool}.
807 @item Automake Manual
809 @xref{Top, , Automake, automake, @acronym{GNU} Automake}, for more
810 information on Automake.
812 @item Books
814 The book @cite{@acronym{GNU} Autoconf, Automake and
815 Libtool}@footnote{@cite{@acronym{GNU} Autoconf, Automake and Libtool},
816 by G. V. Vaughan, B. Elliston, T. Tromey, and I. L. Taylor.  SAMS (originally
817 New Riders), 2000, ISBN 1578701902.} describes the complete @acronym{GNU}
818 build environment.  You can also find
819 @uref{http://sources.redhat.com/autobook/, the entire book on-line}.
821 @end itemize
823 @c ================================================= Making configure Scripts.
825 @node Making configure Scripts
826 @chapter Making @command{configure} Scripts
827 @cindex @file{aclocal.m4}
828 @cindex @command{configure}
830 The configuration scripts that Autoconf produces are by convention
831 called @command{configure}.  When run, @command{configure} creates several
832 files, replacing configuration parameters in them with appropriate
833 values.  The files that @command{configure} creates are:
835 @itemize @minus
836 @item
837 one or more @file{Makefile} files, usually one in each subdirectory of the
838 package (@pxref{Makefile Substitutions});
840 @item
841 optionally, a C header file, the name of which is configurable,
842 containing @code{#define} directives (@pxref{Configuration Headers});
844 @item
845 a shell script called @file{config.status} that, when run, will recreate
846 the files listed above (@pxref{config.status Invocation});
848 @item
849 an optional shell script normally called @file{config.cache}
850 (created when using @samp{configure --config-cache}) that
851 saves the results of running many of the tests (@pxref{Cache Files});
853 @item
854 a file called @file{config.log} containing any messages produced by
855 compilers, to help debugging if @command{configure} makes a mistake.
856 @end itemize
858 @cindex @file{configure.in}
859 @cindex @file{configure.ac}
860 To create a @command{configure} script with Autoconf, you need to write an
861 Autoconf input file @file{configure.ac} (or @file{configure.in}) and run
862 @command{autoconf} on it.  If you write your own feature tests to
863 supplement those that come with Autoconf, you might also write files
864 called @file{aclocal.m4} and @file{acsite.m4}.  If you use a C header
865 file to contain @code{#define} directives, you might also run
866 @command{autoheader}, and you will distribute the generated file
867 @file{config.h.in} with the package.
869 Here is a diagram showing how the files that can be used in
870 configuration are produced.  Programs that are executed are suffixed by
871 @samp{*}.  Optional files are enclosed in square brackets (@samp{[]}).
872 @command{autoconf} and @command{autoheader} also read the installed Autoconf
873 macro files (by reading @file{autoconf.m4}).
875 @noindent
876 Files used in preparing a software package for distribution:
877 @example
878 your source files --> [autoscan*] --> [configure.scan] --> configure.ac
880 @group
881 configure.ac --.
882                |   .------> autoconf* -----> configure
883 [aclocal.m4] --+---+
884                |   `-----> [autoheader*] --> [config.h.in]
885 [acsite.m4] ---'
886 @end group
888 Makefile.in -------------------------------> Makefile.in
889 @end example
891 @noindent
892 Files used in configuring a software package:
893 @example
894 @group
895                        .-------------> [config.cache]
896 configure* ------------+-------------> config.log
897                        |
898 [config.h.in] -.       v            .-> [config.h] -.
899                +--> config.status* -+               +--> make*
900 Makefile.in ---'                    `-> Makefile ---'
901 @end group
902 @end example
904 @menu
905 * Writing configure.ac::        What to put in an Autoconf input file
906 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
907 * ifnames Invocation::          Listing the conditionals in source code
908 * autoconf Invocation::         How to create configuration scripts
909 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
910 @end menu
912 @node Writing configure.ac
913 @section Writing @file{configure.ac}
915 To produce a @command{configure} script for a software package, create a
916 file called @file{configure.ac} that contains invocations of the
917 Autoconf macros that test the system features your package needs or can
918 use.  Autoconf macros already exist to check for many features; see
919 @ref{Existing Tests}, for their descriptions.  For most other features,
920 you can use Autoconf template macros to produce custom checks; see
921 @ref{Writing Tests}, for information about them.  For especially tricky
922 or specialized features, @file{configure.ac} might need to contain some
923 hand-crafted shell commands; see @ref{Portable Shell}.  The
924 @command{autoscan} program can give you a good start in writing
925 @file{configure.ac} (@pxref{autoscan Invocation}, for more information).
927 Previous versions of Autoconf promoted the name @file{configure.in},
928 which is somewhat ambiguous (the tool needed to process this file is not
929 described by its extension), and introduces a slight confusion with
930 @file{config.h.in} and so on (for which @samp{.in} means ``to be
931 processed by @command{configure}'').  Using @file{configure.ac} is now
932 preferred.
934 @menu
935 * Shell Script Compiler::       Autoconf as solution of a problem
936 * Autoconf Language::           Programming in Autoconf
937 * configure.ac Layout::         Standard organization of @file{configure.ac}
938 @end menu
940 @node Shell Script Compiler
941 @subsection A Shell Script Compiler
943 Just as for any other computer language, in order to properly program
944 @file{configure.ac} in Autoconf you must understand @emph{what} problem
945 the language tries to address and @emph{how} it does so.
947 The problem Autoconf addresses is that the world is a mess.  After all,
948 you are using Autoconf in order to have your package compile easily on
949 all sorts of different systems, some of them being extremely hostile.
950 Autoconf itself bears the price for these differences: @command{configure}
951 must run on all those systems, and thus @command{configure} must limit itself
952 to their lowest common denominator of features.
954 Naturally, you might then think of shell scripts; who needs
955 @command{autoconf}?  A set of properly written shell functions is enough to
956 make it easy to write @command{configure} scripts by hand.  Sigh!
957 Unfortunately, shell functions do not belong to the least common
958 denominator; therefore, where you would like to define a function and
959 use it ten times, you would instead need to copy its body ten times.
961 So, what is really needed is some kind of compiler, @command{autoconf},
962 that takes an Autoconf program, @file{configure.ac}, and transforms it
963 into a portable shell script, @command{configure}.
965 How does @command{autoconf} perform this task?
967 There are two obvious possibilities: creating a brand new language or
968 extending an existing one.  The former option is very attractive: all
969 sorts of optimizations could easily be implemented in the compiler and
970 many rigorous checks could be performed on the Autoconf program
971 (e.g., rejecting any non-portable construct).  Alternatively, you can
972 extend an existing language, such as the @code{sh} (Bourne shell)
973 language.
975 Autoconf does the latter: it is a layer on top of @code{sh}.  It was
976 therefore most convenient to implement @command{autoconf} as a macro
977 expander: a program that repeatedly performs @dfn{macro expansions} on
978 text input, replacing macro calls with macro bodies and producing a pure
979 @code{sh} script in the end.  Instead of implementing a dedicated
980 Autoconf macro expander, it is natural to use an existing
981 general-purpose macro language, such as M4, and implement the extensions
982 as a set of M4 macros.
985 @node Autoconf Language
986 @subsection The Autoconf Language
987 @cindex quotation
989 The Autoconf language is very different from many other computer
990 languages because it treats actual code the same as plain text.  Whereas
991 in C, for instance, data and instructions have very different syntactic
992 status, in Autoconf their status is rigorously the same.  Therefore, we
993 need a means to distinguish literal strings from text to be expanded:
994 quotation.
996 When calling macros that take arguments, there must not be any white
997 space between the macro name and the open parenthesis.  Arguments should
998 be enclosed within the M4 quote characters @samp{[} and @samp{]}, and be
999 separated by commas.  Any leading blanks or newlines in arguments are ignored,
1000 unless they are quoted.  You should always quote an argument that
1001 might contain a macro name, comma, parenthesis, or a leading blank or
1002 newline.  This rule applies recursively for every macro
1003 call, including macros called from other macros.
1005 For instance:
1007 @example
1008 AC_CHECK_HEADER([stdio.h],
1009                 [AC_DEFINE([HAVE_STDIO_H], [1],
1010                    [Define to 1 if you have <stdio.h>.])],
1011                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1012 @end example
1014 @noindent
1015 is quoted properly.  You may safely simplify its quotation to:
1017 @example
1018 AC_CHECK_HEADER([stdio.h],
1019                 [AC_DEFINE([HAVE_STDIO_H], 1,
1020                    [Define to 1 if you have <stdio.h>.])],
1021                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1022 @end example
1024 @noindent
1025 because @samp{1} cannot contain a macro call.  Here, the argument of
1026 @code{AC_MSG_ERROR} must be quoted; otherwise, its comma would be
1027 interpreted as an argument separator.  Also, @samp{AC_CHECK_HEADER}'s
1028 second and third arguments must be quoted, since those arguments contain
1029 macro calls.  The three arguments @samp{HAVE_STDIO_H}, @samp{stdio.h},
1030 and @samp{Define to 1 if you have <stdio.h>.} do not need quoting, but
1031 if you unwisely defined a macro with a name like @samp{Define} or
1032 @samp{stdio} then they would need quoting.  Cautious Autoconf users
1033 would keep the quotes, but many Autoconf users find such precautions
1034 annoying, and would rewrite the example as follows:
1036 @example
1037 AC_CHECK_HEADER(stdio.h,
1038                 [AC_DEFINE(HAVE_STDIO_H, 1,
1039                    [Define to 1 if you have <stdio.h>.])],
1040                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1041 @end example
1043 @noindent
1044 This is safe, so long as you adopt good naming conventions and do not
1045 define macros with names like @samp{HAVE_STDIO_H}, @samp{stdio}, or
1046 @samp{h}.  Though it is also safe here to omit the quotes around
1047 @samp{Define to 1 if you have <stdio.h>.} this is not recommended, as
1048 message strings are more likely to inadvertently contain commas.
1050 The following example is wrong and dangerous, as it is underquoted:
1052 @example
1053 AC_CHECK_HEADER(stdio.h,
1054                 AC_DEFINE(HAVE_STDIO_H, 1,
1055                    Define to 1 if you have <stdio.h>.),
1056                 AC_MSG_ERROR([Sorry, can't do anything for you]))
1057 @end example
1059 In other cases, you may have to use text that also resembles a macro
1060 call.  You must quote that text even when it is not passed as a macro
1061 argument:
1063 @example
1064 echo "Hard rock was here!  --[AC_DC]"
1065 @end example
1067 @noindent
1068 which will result in
1070 @example
1071 echo "Hard rock was here!  --AC_DC"
1072 @end example
1074 @noindent
1075 When you use the same text in a macro argument, you must therefore have
1076 an extra quotation level (since one is stripped away by the macro
1077 substitution).  In general, then, it is a good idea to @emph{use double
1078 quoting for all literal string arguments}:
1080 @example
1081 AC_MSG_WARN([[AC_DC stinks  --Iron Maiden]])
1082 @end example
1084 You are now able to understand one of the constructs of Autoconf that
1085 has been continually misunderstood@dots{}  The rule of thumb is that
1086 @emph{whenever you expect macro expansion, expect quote expansion};
1087 i.e., expect one level of quotes to be lost.  For instance:
1089 @example
1090 AC_COMPILE_IFELSE([char b[10];], [], [AC_MSG_ERROR([you lose])])
1091 @end example
1093 @noindent
1094 is incorrect: here, the first argument of @code{AC_COMPILE_IFELSE} is
1095 @samp{char b[10];} and will be expanded once, which results in
1096 @samp{char b10;}.  (There was an idiom common in Autoconf's past to
1097 address this issue via the M4 @code{changequote} primitive, but do not
1098 use it!)  Let's take a closer look: the author meant the first argument
1099 to be understood as a literal, and therefore it must be quoted twice:
1101 @example
1102 AC_COMPILE_IFELSE([[char b[10];]], [], [AC_MSG_ERROR([you lose])])
1103 @end example
1105 @noindent
1106 Voil@`a, you actually produce @samp{char b[10];} this time!
1108 On the other hand, descriptions (e.g., the last parameter of
1109 @code{AC_DEFINE} or @code{AS_HELP_STRING}) are not literals---they
1110 are subject to line breaking, for example---and should not be double quoted.
1111 Even if these descriptions are short and are not actually broken, double
1112 quoting them yields weird results.
1114 Some macros take optional arguments, which this documentation represents
1115 as @ovar{arg} (not to be confused with the quote characters).  You may
1116 just leave them empty, or use @samp{[]} to make the emptiness of the
1117 argument explicit, or you may simply omit the trailing commas.  The
1118 three lines below are equivalent:
1120 @example
1121 AC_CHECK_HEADERS([stdio.h], [], [], [])
1122 AC_CHECK_HEADERS([stdio.h],,,)
1123 AC_CHECK_HEADERS([stdio.h])
1124 @end example
1126 It is best to put each macro call on its own line in
1127 @file{configure.ac}.  Most of the macros don't add extra newlines; they
1128 rely on the newline after the macro call to terminate the commands.
1129 This approach makes the generated @command{configure} script a little
1130 easier to read by not inserting lots of blank lines.  It is generally
1131 safe to set shell variables on the same line as a macro call, because
1132 the shell allows assignments without intervening newlines.
1134 You can include comments in @file{configure.ac} files by starting them
1135 with the @samp{#}.  For example, it is helpful to begin
1136 @file{configure.ac} files with a line like this:
1138 @example
1139 # Process this file with autoconf to produce a configure script.
1140 @end example
1142 @node configure.ac Layout
1143 @subsection Standard @file{configure.ac} Layout
1145 The order in which @file{configure.ac} calls the Autoconf macros is not
1146 important, with a few exceptions.  Every @file{configure.ac} must
1147 contain a call to @code{AC_INIT} before the checks, and a call to
1148 @code{AC_OUTPUT} at the end (@pxref{Output}).  Additionally, some macros
1149 rely on other macros having been called first, because they check
1150 previously set values of some variables to decide what to do.  These
1151 macros are noted in the individual descriptions (@pxref{Existing
1152 Tests}), and they also warn you when @command{configure} is created if they
1153 are called out of order.
1155 To encourage consistency, here is a suggested order for calling the
1156 Autoconf macros.  Generally speaking, the things near the end of this
1157 list are those that could depend on things earlier in it.  For example,
1158 library functions could be affected by types and libraries.
1160 @display
1161 @group
1162 Autoconf requirements
1163 @code{AC_INIT(@var{package}, @var{version}, @var{bug-report-address})}
1164 information on the package
1165 checks for programs
1166 checks for libraries
1167 checks for header files
1168 checks for types
1169 checks for structures
1170 checks for compiler characteristics
1171 checks for library functions
1172 checks for system services
1173 @code{AC_CONFIG_FILES(@r{[}@var{file@dots{}}@r{]})}
1174 @code{AC_OUTPUT}
1175 @end group
1176 @end display
1179 @node autoscan Invocation
1180 @section Using @command{autoscan} to Create @file{configure.ac}
1181 @cindex @command{autoscan}
1183 The @command{autoscan} program can help you create and/or maintain a
1184 @file{configure.ac} file for a software package.  @command{autoscan}
1185 examines source files in the directory tree rooted at a directory given
1186 as a command line argument, or the current directory if none is given.
1187 It searches the source files for common portability problems and creates
1188 a file @file{configure.scan} which is a preliminary @file{configure.ac}
1189 for that package, and checks a possibly existing @file{configure.ac} for
1190 completeness.
1192 When using @command{autoscan} to create a @file{configure.ac}, you
1193 should manually examine @file{configure.scan} before renaming it to
1194 @file{configure.ac}; it will probably need some adjustments.
1195 Occasionally, @command{autoscan} outputs a macro in the wrong order
1196 relative to another macro, so that @command{autoconf} produces a warning;
1197 you need to move such macros manually.  Also, if you want the package to
1198 use a configuration header file, you must add a call to
1199 @code{AC_CONFIG_HEADERS} (@pxref{Configuration Headers}).  You might
1200 also have to change or add some @code{#if} directives to your program in
1201 order to make it work with Autoconf (@pxref{ifnames Invocation}, for
1202 information about a program that can help with that job).
1204 When using @command{autoscan} to maintain a @file{configure.ac}, simply
1205 consider adding its suggestions.  The file @file{autoscan.log} will
1206 contain detailed information on why a macro is requested.
1208 @command{autoscan} uses several data files (installed along with Autoconf)
1209 to determine which macros to output when it finds particular symbols in
1210 a package's source files.  These data files all have the same format:
1211 each line consists of a symbol, one or more blanks, and the Autoconf macro to
1212 output if that symbol is encountered.  Lines starting with @samp{#} are
1213 comments.
1215 @command{autoscan} accepts the following options:
1217 @table @option
1218 @item --help
1219 @itemx -h
1220 Print a summary of the command line options and exit.
1222 @item --version
1223 @itemx -V
1224 Print the version number of Autoconf and exit.
1226 @item --verbose
1227 @itemx -v
1228 Print the names of the files it examines and the potentially interesting
1229 symbols it finds in them.  This output can be voluminous.
1231 @item --include=@var{dir}
1232 @itemx -I @var{dir}
1233 Append @var{dir} to the include path.  Multiple invocations accumulate.
1235 @item --prepend-include=@var{dir}
1236 @item -B @var{dir}
1237 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1238 @end table
1240 @node ifnames Invocation
1241 @section Using @command{ifnames} to List Conditionals
1242 @cindex @command{ifnames}
1244 @command{ifnames} can help you write @file{configure.ac} for a software
1245 package.  It prints the identifiers that the package already uses in C
1246 preprocessor conditionals.  If a package has already been set up to have
1247 some portability, @command{ifnames} can thus help you figure out what its
1248 @command{configure} needs to check for.  It may help fill in some gaps in a
1249 @file{configure.ac} generated by @command{autoscan} (@pxref{autoscan
1250 Invocation}).
1252 @command{ifnames} scans all of the C source files named on the command line
1253 (or the standard input, if none are given) and writes to the standard
1254 output a sorted list of all the identifiers that appear in those files
1255 in @code{#if}, @code{#elif}, @code{#ifdef}, or @code{#ifndef}
1256 directives.  It prints each identifier on a line, followed by a
1257 space-separated list of the files in which that identifier occurs.
1259 @noindent
1260 @command{ifnames} accepts the following options:
1262 @table @option
1263 @item --help
1264 @itemx -h
1265 Print a summary of the command line options and exit.
1267 @item --version
1268 @itemx -V
1269 Print the version number of Autoconf and exit.
1270 @end table
1272 @node autoconf Invocation
1273 @section Using @command{autoconf} to Create @command{configure}
1274 @cindex @command{autoconf}
1276 To create @command{configure} from @file{configure.ac}, run the
1277 @command{autoconf} program with no arguments.  @command{autoconf} processes
1278 @file{configure.ac} with the M4 macro processor, using the
1279 Autoconf macros.  If you give @command{autoconf} an argument, it reads that
1280 file instead of @file{configure.ac} and writes the configuration script
1281 to the standard output instead of to @command{configure}.  If you give
1282 @command{autoconf} the argument @option{-}, it reads from the standard
1283 input instead of @file{configure.ac} and writes the configuration script
1284 to the standard output.
1286 The Autoconf macros are defined in several files.  Some of the files are
1287 distributed with Autoconf; @command{autoconf} reads them first.  Then it
1288 looks for the optional file @file{acsite.m4} in the directory that
1289 contains the distributed Autoconf macro files, and for the optional file
1290 @file{aclocal.m4} in the current directory.  Those files can contain
1291 your site's or the package's own Autoconf macro definitions
1292 (@pxref{Writing Autoconf Macros}, for more information).  If a macro is
1293 defined in more than one of the files that @command{autoconf} reads, the
1294 last definition it reads overrides the earlier ones.
1296 @command{autoconf} accepts the following options:
1298 @table @option
1299 @item --help
1300 @itemx -h
1301 Print a summary of the command line options and exit.
1303 @item --version
1304 @itemx -V
1305 Print the version number of Autoconf and exit.
1307 @item --verbose
1308 @itemx -v
1309 Report processing steps.
1311 @item --debug
1312 @itemx -d
1313 Don't remove the temporary files.
1315 @item --force
1316 @itemx -f
1317 Remake @file{configure} even if newer than its input files.
1319 @item --include=@var{dir}
1320 @itemx -I @var{dir}
1321 Append @var{dir} to the include path.  Multiple invocations accumulate.
1323 @item --prepend-include=@var{dir}
1324 @item -B @var{dir}
1325 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1327 @item --output=@var{file}
1328 @itemx -o @var{file}
1329 Save output (script or trace) to @var{file}.  The file @option{-} stands
1330 for the standard output.
1332 @item --warnings=@var{category}
1333 @itemx -W @var{category}
1334 @evindex WARNINGS
1335 Report the warnings related to @var{category} (which can actually be a
1336 comma separated list).  @xref{Reporting Messages}, macro
1337 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
1338 values include:
1340 @table @samp
1341 @item all
1342 report all the warnings
1344 @item none
1345 report none
1347 @item error
1348 treats warnings as errors
1350 @item no-@var{category}
1351 disable warnings falling into @var{category}
1352 @end table
1354 Warnings about @samp{syntax} are enabled by default, and the environment
1355 variable @env{WARNINGS}, a comma separated list of categories, is
1356 honored as well.  Passing @samp{-W @var{category}} will actually behave as if
1357 you had passed @samp{--warnings=syntax,$WARNINGS,@var{category}}.  If
1358 you want to disable the defaults and @env{WARNINGS}, but (for example)
1359 enable the warnings about obsolete constructs, you would use @option{-W
1360 none,obsolete}.
1362 @cindex Back trace
1363 @cindex Macro invocation stack
1364 Because @command{autoconf} uses @command{autom4te} behind the scenes, it
1365 displays a back trace for errors, but not for warnings; if you want
1366 them, just pass @option{-W error}.  @xref{autom4te Invocation}, for some
1367 examples.
1369 @item --trace=@var{macro}[:@var{format}]
1370 @itemx -t @var{macro}[:@var{format}]
1371 Do not create the @command{configure} script, but list the calls to
1372 @var{macro} according to the @var{format}.  Multiple @option{--trace}
1373 arguments can be used to list several macros.  Multiple @option{--trace}
1374 arguments for a single macro are not cumulative; instead, you should
1375 just make @var{format} as long as needed.
1377 The @var{format} is a regular string, with newlines if desired, and
1378 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}; see
1379 @ref{autom4te Invocation}, for details on the @var{format}.
1381 @item --initialization
1382 @itemx -i
1383 By default, @option{--trace} does not trace the initialization of the
1384 Autoconf macros (typically the @code{AC_DEFUN} definitions).  This
1385 results in a noticeable speedup, but can be disabled by this option.
1386 @end table
1389 It is often necessary to check the content of a @file{configure.ac}
1390 file, but parsing it yourself is extremely fragile and error-prone.  It
1391 is suggested that you rely upon @option{--trace} to scan
1392 @file{configure.ac}.  For instance, to find the list of variables that
1393 are substituted, use:
1395 @example
1396 @group
1397 $ @kbd{autoconf -t AC_SUBST}
1398 configure.ac:2:AC_SUBST:ECHO_C
1399 configure.ac:2:AC_SUBST:ECHO_N
1400 configure.ac:2:AC_SUBST:ECHO_T
1401 @i{More traces deleted}
1402 @end group
1403 @end example
1405 @noindent
1406 The example below highlights the difference between @samp{$@@},
1407 @samp{$*}, and @samp{$%}.
1409 @example
1410 @group
1411 $ @kbd{cat configure.ac}
1412 AC_DEFINE(This, is, [an
1413 [example]])
1414 $ @kbd{autoconf -t 'AC_DEFINE:@@: $@@}
1415 *: $*
1416 %: $%'
1417 @@: [This],[is],[an
1418 [example]]
1419 *: This,is,an
1420 [example]
1421 %: This:is:an [example]
1422 @end group
1423 @end example
1425 @noindent
1426 The @var{format} gives you a lot of freedom:
1428 @example
1429 @group
1430 $ @kbd{autoconf -t 'AC_SUBST:$$ac_subst@{"$1"@} = "$f:$l";'}
1431 $ac_subst@{"ECHO_C"@} = "configure.ac:2";
1432 $ac_subst@{"ECHO_N"@} = "configure.ac:2";
1433 $ac_subst@{"ECHO_T"@} = "configure.ac:2";
1434 @i{More traces deleted}
1435 @end group
1436 @end example
1438 @noindent
1439 A long @var{separator} can be used to improve the readability of complex
1440 structures, and to ease their parsing (for instance when no single
1441 character is suitable as a separator):
1443 @example
1444 @group
1445 $ @kbd{autoconf -t 'AM_MISSING_PROG:$@{|:::::|@}*'}
1446 ACLOCAL|:::::|aclocal|:::::|$missing_dir
1447 AUTOCONF|:::::|autoconf|:::::|$missing_dir
1448 AUTOMAKE|:::::|automake|:::::|$missing_dir
1449 @i{More traces deleted}
1450 @end group
1451 @end example
1453 @node autoreconf Invocation
1454 @section Using @command{autoreconf} to Update @command{configure} Scripts
1455 @cindex @command{autoreconf}
1457 Installing the various components of the @acronym{GNU} Build System can be
1458 tedious: running @command{autopoint} for Gettext, @command{automake} for
1459 @file{Makefile.in} etc.@: in each directory.  It may be needed either
1460 because some tools such as @command{automake} have been updated on your
1461 system, or because some of the sources such as @file{configure.ac} have
1462 been updated, or finally, simply in order to install the @acronym{GNU} Build
1463 System in a fresh tree.
1465 @command{autoreconf} runs @command{autoconf}, @command{autoheader},
1466 @command{aclocal}, @command{automake}, @command{libtoolize}, and
1467 @command{autopoint} (when appropriate) repeatedly to update the
1468 @acronym{GNU} Build System in the specified directories and their
1469 subdirectories (@pxref{Subdirectories}).  By default, it only remakes
1470 those files that are older than their sources.
1472 If you install a new version of some tool, you can make
1473 @command{autoreconf} remake @emph{all} of the files by giving it the
1474 @option{--force} option.
1476 @xref{Automatic Remaking}, for @file{Makefile} rules to automatically
1477 remake @command{configure} scripts when their source files change.  That
1478 method handles the timestamps of configuration header templates
1479 properly, but does not pass @option{--autoconf-dir=@var{dir}} or
1480 @option{--localdir=@var{dir}}.
1482 @cindex Gettext
1483 @cindex @command{autopoint}
1484 Gettext supplies the @command{autopoint} command to add translation
1485 infrastructure to a source package.  If you use @command{autopoint},
1486 your @file{configure.ac} should invoke both @code{AM_GNU_GETTEXT} and
1487 @code{AM_GNU_GETTEXT_VERSION(@var{gettext-version})}.  @xref{autopoint
1488 Invocation, , Invoking the @code{autopoint} Program, gettext, GNU
1489 @code{gettext} utilities}, for further details.
1491 @noindent
1492 @command{autoreconf} accepts the following options:
1494 @table @option
1495 @item --help
1496 @itemx -h
1497 Print a summary of the command line options and exit.
1499 @item --version
1500 @itemx -V
1501 Print the version number of Autoconf and exit.
1503 @item --verbose
1504 Print the name of each directory @command{autoreconf} examines and the
1505 commands it runs.  If given two or more times, pass @option{--verbose}
1506 to subordinate tools that support it.
1508 @item --debug
1509 @itemx -d
1510 Don't remove the temporary files.
1512 @item --force
1513 @itemx -f
1514 Remake even @file{configure} scripts and configuration headers that are
1515 newer than their input files (@file{configure.ac} and, if present,
1516 @file{aclocal.m4}).
1518 @item --install
1519 @itemx -i
1520 Install the missing auxiliary files in the package.  By default, files
1521 are copied; this can be changed with @option{--symlink}.
1523 If deemed appropriate, this option triggers calls to
1524 @samp{automake --add-missing},
1525 @samp{libtoolize}, @samp{autopoint}, etc.
1527 @item --no-recursive
1528 Do not rebuild files in subdirectories to configure (see @ref{Subdirectories},
1529 macro @code{AC_CONFIG_SUBDIRS}).
1531 @item --symlink
1532 @itemx -s
1533 When used with @option{--install}, install symbolic links to the missing
1534 auxiliary files instead of copying them.
1536 @item --make
1537 @itemx -m
1538 When the directories were configured, update the configuration by
1539 running @samp{./config.status --recheck && ./config.status}, and then
1540 run @samp{make}.
1542 @item --include=@var{dir}
1543 @itemx -I @var{dir}
1544 Append @var{dir} to the include path.  Multiple invocations accumulate.
1545 Passed on to @command{autoconf} and @command{autoheader} internally.
1547 @item --prepend-include=@var{dir}
1548 @item -B @var{dir}
1549 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1550 Passed on to @command{autoconf} and @command{autoheader} internally.
1552 @item --warnings=@var{category}
1553 @itemx -W @var{category}
1554 @evindex WARNINGS
1555 Report the warnings related to @var{category} (which can actually be a
1556 comma separated list).
1558 @table @samp
1559 @item cross
1560 related to cross compilation issues.
1562 @item obsolete
1563 report the uses of obsolete constructs.
1565 @item portability
1566 portability issues
1568 @item syntax
1569 dubious syntactic constructs.
1571 @item all
1572 report all the warnings
1574 @item none
1575 report none
1577 @item error
1578 treats warnings as errors
1580 @item no-@var{category}
1581 disable warnings falling into @var{category}
1582 @end table
1584 Warnings about @samp{syntax} are enabled by default, and the environment
1585 variable @env{WARNINGS}, a comma separated list of categories, is
1586 honored as well.  Passing @samp{-W @var{category}} will actually behave as if
1587 you had passed @samp{--warnings=syntax,$WARNINGS,@var{category}}.  If
1588 you want to disable the defaults and @env{WARNINGS}, but (for example)
1589 enable the warnings about obsolete constructs, you would use @option{-W
1590 none,obsolete}.
1591 @end table
1593 If you want @command{autoreconf} to pass flags that are not listed here
1594 to @command{aclocal}, set @code{ACLOCAL_AMFLAGS} in your Makefile.am.
1596 @c ========================================= Initialization and Output Files.
1598 @node Setup
1599 @chapter Initialization and Output Files
1601 Autoconf-generated @command{configure} scripts need some information about
1602 how to initialize, such as how to find the package's source files and
1603 about the output files to produce.  The following sections describe the
1604 initialization and the creation of output files.
1606 @menu
1607 * Initializing configure::      Option processing etc.
1608 * Notices::                     Copyright, version numbers in @command{configure}
1609 * Input::                       Where Autoconf should find files
1610 * Output::                      Outputting results from the configuration
1611 * Configuration Actions::       Preparing the output based on results
1612 * Configuration Files::         Creating output files
1613 * Makefile Substitutions::      Using output variables in @file{Makefile}s
1614 * Configuration Headers::       Creating a configuration header file
1615 * Configuration Commands::      Running arbitrary instantiation commands
1616 * Configuration Links::         Links depending on the configuration
1617 * Subdirectories::              Configuring independent packages together
1618 * Default Prefix::              Changing the default installation prefix
1619 @end menu
1621 @node Initializing configure
1622 @section Initializing @command{configure}
1624 Every @command{configure} script must call @code{AC_INIT} before doing
1625 anything else.  The only other required macro is @code{AC_OUTPUT}
1626 (@pxref{Output}).
1628 @defmac AC_INIT (@var{package}, @var{version}, @ovar{bug-report}, @ovar{tarname})
1629 @acindex{INIT}
1630 Process any command-line arguments and perform various initializations
1631 and verifications.
1633 Set the name of the @var{package} and its @var{version}.  These are
1634 typically used in @option{--version} support, including that of
1635 @command{configure}.  The optional argument @var{bug-report} should be
1636 the email to which users should send bug reports.  The package
1637 @var{tarname} differs from @var{package}: the latter designates the full
1638 package name (e.g., @samp{GNU Autoconf}), while the former is meant for
1639 distribution tar ball names (e.g., @samp{autoconf}).  It defaults to
1640 @var{package} with @samp{GNU } stripped, lower-cased, and all characters
1641 other than alphanumerics and underscores are changed to @samp{-}.
1643 It is preferable that the arguments of @code{AC_INIT} be static, i.e.,
1644 there should not be any shell computation, but they can be computed by
1647 The following M4 macros (e.g., @code{AC_PACKAGE_NAME}), output variables
1648 (e.g., @code{PACKAGE_NAME}), and preprocessor symbols (e.g.,
1649 @code{PACKAGE_NAME}) are defined by @code{AC_INIT}:
1651 @table @asis
1652 @item @code{AC_PACKAGE_NAME}, @code{PACKAGE_NAME}
1653 @acindex{PACKAGE_NAME}
1654 @ovindex PACKAGE_NAME
1655 @cvindex PACKAGE_NAME
1656 Exactly @var{package}.
1658 @item @code{AC_PACKAGE_TARNAME}, @code{PACKAGE_TARNAME}
1659 @acindex{PACKAGE_TARNAME}
1660 @ovindex PACKAGE_TARNAME
1661 @cvindex PACKAGE_TARNAME
1662 Exactly @var{tarname}.
1664 @item @code{AC_PACKAGE_VERSION}, @code{PACKAGE_VERSION}
1665 @acindex{PACKAGE_VERSION}
1666 @ovindex PACKAGE_VERSION
1667 @cvindex PACKAGE_VERSION
1668 Exactly @var{version}.
1670 @item @code{AC_PACKAGE_STRING}, @code{PACKAGE_STRING}
1671 @acindex{PACKAGE_STRING}
1672 @ovindex PACKAGE_STRING
1673 @cvindex PACKAGE_STRING
1674 Exactly @samp{@var{package} @var{version}}.
1676 @item @code{AC_PACKAGE_BUGREPORT}, @code{PACKAGE_BUGREPORT}
1677 @acindex{PACKAGE_BUGREPORT}
1678 @ovindex PACKAGE_BUGREPORT
1679 @cvindex PACKAGE_BUGREPORT
1680 Exactly @var{bug-report}.
1681 @end table
1682 @end defmac
1685 @node Notices
1686 @section Notices in @command{configure}
1687 @cindex Notices in @command{configure}
1689 The following macros manage version numbers for @command{configure}
1690 scripts.  Using them is optional.
1692 @c FIXME: AC_PREREQ should not be here
1693 @defmac AC_PREREQ (@var{version})
1694 @acindex{PREREQ}
1695 @cindex Version
1696 Ensure that a recent enough version of Autoconf is being used.  If the
1697 version of Autoconf being used to create @command{configure} is
1698 earlier than @var{version}, print an error message to the standard
1699 error output and exit with failure (exit status is 63).  For example:
1701 @example
1702 AC_PREREQ([@value{VERSION}])
1703 @end example
1705 This macro is the only macro that may be used before @code{AC_INIT}, but
1706 for consistency, you are invited not to do so.
1707 @end defmac
1709 @defmac AC_COPYRIGHT (@var{copyright-notice})
1710 @acindex{COPYRIGHT}
1711 @cindex Copyright Notice
1712 State that, in addition to the Free Software Foundation's copyright on
1713 the Autoconf macros, parts of your @command{configure} are covered by the
1714 @var{copyright-notice}.
1716 The @var{copyright-notice} will show up in both the head of
1717 @command{configure} and in @samp{configure --version}.
1718 @end defmac
1721 @defmac AC_REVISION (@var{revision-info})
1722 @acindex{REVISION}
1723 @cindex Revision
1724 Copy revision stamp @var{revision-info} into the @command{configure}
1725 script, with any dollar signs or double-quotes removed.  This macro lets
1726 you put a revision stamp from @file{configure.ac} into @command{configure}
1727 without @acronym{RCS} or @acronym{CVS} changing it when you check in
1728 @command{configure}.  That way, you can determine easily which revision of
1729 @file{configure.ac} a particular @command{configure} corresponds to.
1731 For example, this line in @file{configure.ac}:
1733 @c The asis prevents RCS from changing the example in the manual.
1734 @example
1735 AC_REVISION([$@asis{Revision: 1.30 }$])
1736 @end example
1738 @noindent
1739 produces this in @command{configure}:
1741 @example
1742 #!/bin/sh
1743 # From configure.ac Revision: 1.30
1744 @end example
1745 @end defmac
1748 @node Input
1749 @section Finding @command{configure} Input
1752 @defmac AC_CONFIG_SRCDIR (@var{unique-file-in-source-dir})
1753 @acindex{CONFIG_SRCDIR}
1754 @var{unique-file-in-source-dir} is some file that is in the package's
1755 source directory; @command{configure} checks for this file's existence to
1756 make sure that the directory that it is told contains the source code in
1757 fact does.  Occasionally people accidentally specify the wrong directory
1758 with @option{--srcdir}; this is a safety check.  @xref{configure
1759 Invocation}, for more information.
1760 @end defmac
1763 @c FIXME: Remove definitively once --install explained.
1765 @c Small packages may store all their macros in @code{aclocal.m4}.  As the
1766 @c set of macros grows, or for maintenance reasons, a maintainer may prefer
1767 @c to split the macros in several files.  In this case, Autoconf must be
1768 @c told which files to load, and in which order.
1770 @c @defmac AC_INCLUDE (@var{file}@dots{})
1771 @c @acindex{INCLUDE}
1772 @c @c FIXME: There is no longer shell globbing.
1773 @c Read the macro definitions that appear in the listed files.  A list of
1774 @c space-separated file names or shell globbing patterns is expected.  The
1775 @c files will be read in the order they're listed.
1777 @c Because the order of definition of macros is important (only the last
1778 @c definition of a macro is used), beware that it is @code{AC_INIT} that
1779 @c loads @file{acsite.m4} and @file{aclocal.m4}.  Note that
1780 @c @code{AC_INCLUDE}ing a file before @code{AC_INIT} or within
1781 @c @file{aclocal.m4} is different from doing so after @code{AC_INIT}: in
1782 @c the latter case, non-macro lines from included files may end up in the
1783 @c @file{configure} script, whereas in the former case, they'd be discarded
1784 @c just like any text that appear before @code{AC_INIT}.
1785 @c @end defmac
1787 Packages that do manual configuration or use the @code{install} program
1788 might need to tell @command{configure} where to find some other shell
1789 scripts by calling @code{AC_CONFIG_AUX_DIR}, though the default places
1790 it looks are correct for most cases.
1792 @defmac AC_CONFIG_AUX_DIR (@var{dir})
1793 @acindex{CONFIG_AUX_DIR}
1794 Use the auxiliary build tools (e.g., @file{install-sh},
1795 @file{config.sub}, @file{config.guess}, Cygnus @command{configure},
1796 Automake and Libtool scripts, etc.)@: that are in directory @var{dir}.
1797 These are auxiliary files used in configuration.  @var{dir} can be
1798 either absolute or relative to @file{@var{srcdir}}.  The default is
1799 @file{@var{srcdir}} or @file{@var{srcdir}/..} or
1800 @file{@var{srcdir}/../..}, whichever is the first that contains
1801 @file{install-sh}.  The other files are not checked for, so that using
1802 @code{AC_PROG_INSTALL} does not automatically require distributing the
1803 other auxiliary files.  It checks for @file{install.sh} also, but that
1804 name is obsolete because some @code{make} have a rule that creates
1805 @file{install} from it if there is no @file{Makefile}.
1807 The auxiliary directory is commonly named @file{build-aux}.
1808 If you need portability to @acronym{DOS} variants, do not name the
1809 auxiliary directory @file{aux}.  @xref{File System Conventions}.
1810 @end defmac
1812 @defmac AC_REQUIRE_AUX_FILE (@var{file})
1813 @acindex{REQUIRE_AUX_FILE}
1814 Declares that @var{file} is expected in the directory defined above.  In
1815 Autoconf proper, this macro does nothing: its sole purpose is to be
1816 traced by third-party tools to produce a list of expected auxiliary
1817 files.  For instance it is called by macros like @code{AC_PROG_INSTALL}
1818 (@pxref{Particular Programs}) or @code{AC_CANONICAL_BUILD}
1819 (@pxref{Canonicalizing}) to register the auxiliary files they need.
1820 @end defmac
1822 Similarly, packages that use @command{aclocal} should declare where
1823 local macros can be found using @code{AC_CONFIG_MACRO_DIR}.
1825 @defmac AC_CONFIG_MACRO_DIR (@var{dir})
1826 @acindex{CONFIG_MACRO_DIR}
1827 Future versions of @command{autopoint}, @command{libtoolize},
1828 @command{aclocal} and @command{autoreconf} will use directory
1829 @var{dir} as the location of additional local Autoconf macros.  Be
1830 sure to call this macro directly from @file{configure.ac} so that
1831 tools that install macros for @command{aclocal} can find the
1832 declaration before @option{--trace} can be called safely.
1833 @end defmac
1836 @node Output
1837 @section Outputting Files
1838 @cindex Outputting files
1840 Every Autoconf script, e.g., @file{configure.ac}, should finish by
1841 calling @code{AC_OUTPUT}.  That is the macro that generates and runs
1842 @file{config.status}, which will create the @file{Makefile}s and any
1843 other files resulting from configuration.  This is the only required
1844 macro besides @code{AC_INIT} (@pxref{Input}).
1846 @defmac AC_OUTPUT
1847 @acindex{OUTPUT}
1848 @cindex Instantiation
1849 Generate @file{config.status} and launch it.  Call this macro once, at
1850 the end of @file{configure.ac}.
1852 @file{config.status} will perform all the configuration actions: all the
1853 output files (see @ref{Configuration Files}, macro
1854 @code{AC_CONFIG_FILES}), header files (see @ref{Configuration Headers},
1855 macro @code{AC_CONFIG_HEADERS}), commands (see @ref{Configuration
1856 Commands}, macro @code{AC_CONFIG_COMMANDS}), links (see
1857 @ref{Configuration Links}, macro @code{AC_CONFIG_LINKS}), subdirectories
1858 to configure (see @ref{Subdirectories}, macro @code{AC_CONFIG_SUBDIRS})
1859 are honored.
1861 The location of your @code{AC_OUTPUT} invocation is the exact point
1862 where configuration actions are taken: any code afterwards will be
1863 executed by @code{configure} once @command{config.status} was run.  If
1864 you want to bind actions to @command{config.status} itself
1865 (independently of whether @command{configure} is being run), see
1866 @ref{Configuration Commands, , Running Arbitrary Configuration
1867 Commands}.
1868 @end defmac
1870 Historically, the usage of @code{AC_OUTPUT} was somewhat different.
1871 @xref{Obsolete Macros}, for a description of the arguments that
1872 @code{AC_OUTPUT} used to support.
1875 If you run @command{make} in subdirectories, you should run it using the
1876 @code{make} variable @code{MAKE}.  Most versions of @command{make} set
1877 @code{MAKE} to the name of the @command{make} program plus any options it
1878 was given.  (But many do not include in it the values of any variables
1879 set on the command line, so those are not passed on automatically.)
1880 Some old versions of @command{make} do not set this variable.  The
1881 following macro allows you to use it even with those versions.
1883 @defmac AC_PROG_MAKE_SET
1884 @acindex{PROG_MAKE_SET}
1885 @ovindex SET_MAKE
1886 If the Make command, @code{$MAKE} if set or else @samp{make}, predefines
1887 @code{$(MAKE)}, define output variable @code{SET_MAKE} to be empty.
1888 Otherwise, define @code{SET_MAKE} to a macro definition that sets
1889 @code{$(MAKE)}, such as @samp{MAKE=make}.  Calls @code{AC_SUBST} for
1890 @code{SET_MAKE}.
1891 @end defmac
1893 If you use this macro, place a line like this in each @file{Makefile.in}
1894 that runs @code{MAKE} on other directories:
1896 @example
1897 @@SET_MAKE@@
1898 @end example
1902 @node Configuration Actions
1903 @section Performing Configuration Actions
1904 @cindex Configuration actions
1906 @file{configure} is designed so that it appears to do everything itself,
1907 but there is actually a hidden slave: @file{config.status}.
1908 @file{configure} is in charge of examining your system, but it is
1909 @file{config.status} that actually takes the proper actions based on the
1910 results of @file{configure}.  The most typical task of
1911 @file{config.status} is to @emph{instantiate} files.
1913 This section describes the common behavior of the four standard
1914 instantiating macros: @code{AC_CONFIG_FILES}, @code{AC_CONFIG_HEADERS},
1915 @code{AC_CONFIG_COMMANDS} and @code{AC_CONFIG_LINKS}.  They all
1916 have this prototype:
1918 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
1919 @c awful.
1920 @example
1921 AC_CONFIG_FOOS(@var{tag}@dots{}, [@var{commands}], [@var{init-cmds}])
1922 @end example
1924 @noindent
1925 where the arguments are:
1927 @table @var
1928 @item @var{tag}@dots{}
1929 A blank-or-newline-separated list of tags, which are typically the names of
1930 the files to instantiate.
1932 You are encouraged to use literals as @var{tags}.  In particular, you
1933 should avoid
1935 @example
1936 @dots{} && my_foos="$my_foos fooo"
1937 @dots{} && my_foos="$my_foos foooo"
1938 AC_CONFIG_FOOS([$my_foos])
1939 @end example
1941 @noindent
1942 and use this instead:
1944 @example
1945 @dots{} && AC_CONFIG_FOOS([fooo])
1946 @dots{} && AC_CONFIG_FOOS([foooo])
1947 @end example
1949 The macros @code{AC_CONFIG_FILES} and @code{AC_CONFIG_HEADERS} use
1950 special @var{tag}s: they may have the form @samp{@var{output}} or
1951 @samp{@var{output}:@var{inputs}}.  The file @var{output} is instantiated
1952 from its templates, @var{inputs} (defaulting to @samp{@var{output}.in}).
1954 @samp{AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk)]},
1955 for example, asks for
1956 the creation of @file{Makefile} that will be the expansion of the
1957 output variables in the concatenation of @file{boiler/top.mk} and
1958 @file{boiler/bot.mk}.
1960 The special value @samp{-} might be used to denote the standard output
1961 when used in @var{output}, or the standard input when used in the
1962 @var{inputs}.  You most probably don't need to use this in
1963 @file{configure.ac}, but it is convenient when using the command line
1964 interface of @file{./config.status}, see @ref{config.status Invocation},
1965 for more details.
1967 The @var{inputs} may be absolute or relative file names.  In the latter
1968 case they are first looked for in the build tree, and then in the source
1969 tree.
1971 @item commands
1972 Shell commands output literally into @file{config.status}, and
1973 associated with a tag that the user can use to tell @file{config.status}
1974 which the commands to run.  The commands are run each time a @var{tag}
1975 request is given to @file{config.status}, typically each time the file
1976 @file{@var{tag}} is created.
1978 The variables set during the execution of @command{configure} are
1979 @emph{not} available here: you first need to set them via the
1980 @var{init-cmds}.  Nonetheless the following variables are precomputed:
1982 @table @code
1983 @item srcdir
1984 The name of the top source directory, assuming that the working
1985 directory is the top build directory.  This
1986 is what @command{configure}'s option @option{--srcdir} sets.
1988 @item ac_top_srcdir
1989 The name of the top source directory, assuming that the working
1990 directory is the current build directory.
1993 @item ac_top_build_prefix
1994 The name of the top build directory, assuming that the working
1995 directory is the current build directory.
1996 It can be empty, or else ends with a slash, so that you may concatenate
1999 @item ac_srcdir
2000 The name of the corresponding source directory, assuming that the
2001 working directory is the current build directory.
2002 @end table
2004 @noindent
2005 The @dfn{current} directory refers to the directory (or
2006 pseudo-directory) containing the input part of @var{tags}.  For
2007 instance, running
2009 @example
2010 AC_CONFIG_COMMANDS([deep/dir/out:in/in.in], [@dots{}], [@dots{}])
2011 @end example
2013 @noindent
2014  with @option{--srcdir=../package} produces the following values:
2016 @example
2017 # Argument of --srcdir
2018 srcdir='../package'
2019 # Reversing deep/dir
2020 ac_top_build_prefix='../../'
2021 # Concatenation of $ac_top_build_prefix and srcdir
2022 ac_top_srcdir='../../../package'
2023 # Concatenation of $ac_top_srcdir and deep/dir
2024 ac_srcdir='../../../package/deep/dir'
2025 @end example
2027 @noindent
2028 independently of @samp{in/in.in}.
2030 @item init-cmds
2031 Shell commands output @emph{unquoted} near the beginning of
2032 @file{config.status}, and executed each time @file{config.status} runs
2033 (regardless of the tag).  Because they are unquoted, for example,
2034 @samp{$var} will be output as the value of @code{var}.  @var{init-cmds}
2035 is typically used by @file{configure} to give @file{config.status} some
2036 variables it needs to run the @var{commands}.
2038 You should be extremely cautious in your variable names: all the
2039 @var{init-cmds} share the same name space and may overwrite each other
2040 in unpredictable ways.  Sorry@enddots{}
2041 @end table
2043 All these macros can be called multiple times, with different
2044 @var{tag}s, of course!
2047 @node Configuration Files
2048 @section Creating Configuration Files
2049 @cindex Creating configuration files
2050 @cindex Configuration file creation
2052 Be sure to read the previous section, @ref{Configuration Actions}.
2054 @defmac AC_CONFIG_FILES (@var{file}@dots{}, @ovar{cmds}, @ovar{init-cmds})
2055 @acindex{CONFIG_FILES}
2056 Make @code{AC_OUTPUT} create each @file{@var{file}} by copying an input
2057 file (by default @file{@var{file}.in}), substituting the output variable
2058 values.
2059 @c Before we used to have this feature, which was later rejected
2060 @c because it complicates the write of Makefiles:
2061 @c If the file would be unchanged, it is left untouched, to preserve
2062 @c timestamp.
2063 This macro is one of the instantiating macros; see @ref{Configuration
2064 Actions}.  @xref{Makefile Substitutions}, for more information on using
2065 output variables.  @xref{Setting Output Variables}, for more information
2066 on creating them.  This macro creates the directory that the file is in
2067 if it doesn't exist.  Usually, @file{Makefile}s are created this way,
2068 but other files, such as @file{.gdbinit}, can be specified as well.
2070 Typical calls to @code{AC_CONFIG_FILES} look like this:
2072 @example
2073 AC_CONFIG_FILES([Makefile src/Makefile man/Makefile X/Imakefile])
2074 AC_CONFIG_FILES([autoconf], [chmod +x autoconf])
2075 @end example
2077 You can override an input file name by appending to @var{file} a
2078 colon-separated list of input files.  Examples:
2080 @example
2081 AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk]
2082                 [lib/Makefile:boiler/lib.mk])
2083 @end example
2085 @noindent
2086 Doing this allows you to keep your file names acceptable to
2087 @acronym{DOS} variants, or
2088 to prepend and/or append boilerplate to the file.
2089 @end defmac
2093 @node Makefile Substitutions
2094 @section Substitutions in Makefiles
2095 @cindex Substitutions in makefiles
2096 @cindex Makefile substitutions
2098 Each subdirectory in a distribution that contains something to be
2099 compiled or installed should come with a file @file{Makefile.in}, from
2100 which @command{configure} will create a @file{Makefile} in that directory.
2101 To create a @file{Makefile}, @command{configure} performs a simple variable
2102 substitution, replacing occurrences of @samp{@@@var{variable}@@} in
2103 @file{Makefile.in} with the value that @command{configure} has determined
2104 for that variable.  Variables that are substituted into output files in
2105 this way are called @dfn{output variables}.  They are ordinary shell
2106 variables that are set in @command{configure}.  To make @command{configure}
2107 substitute a particular variable into the output files, the macro
2108 @code{AC_SUBST} must be called with that variable name as an argument.
2109 Any occurrences of @samp{@@@var{variable}@@} for other variables are
2110 left unchanged.  @xref{Setting Output Variables}, for more information
2111 on creating output variables with @code{AC_SUBST}.
2113 A software package that uses a @command{configure} script should be
2114 distributed with a file @file{Makefile.in}, but no @file{Makefile}; that
2115 way, the user has to properly configure the package for the local system
2116 before compiling it.
2118 @xref{Makefile Conventions, , Makefile Conventions, standards, The
2119 @acronym{GNU} Coding Standards}, for more information on what to put in
2120 @file{Makefile}s.
2122 @menu
2123 * Preset Output Variables::     Output variables that are always set
2124 * Installation Directory Variables::  Other preset output variables
2125 * Build Directories::           Supporting multiple concurrent compiles
2126 * Automatic Remaking::          Makefile rules for configuring
2127 @end menu
2129 @node Preset Output Variables
2130 @subsection Preset Output Variables
2131 @cindex Output variables
2133 Some output variables are preset by the Autoconf macros.  Some of the
2134 Autoconf macros set additional output variables, which are mentioned in
2135 the descriptions for those macros.  @xref{Output Variable Index}, for a
2136 complete list of output variables.  @xref{Installation Directory
2137 Variables}, for the list of the preset ones related to installation
2138 directories.  Below are listed the other preset ones.  They all are
2139 precious variables (@pxref{Setting Output Variables},
2140 @code{AC_ARG_VAR}).
2142 @c Just say no to ASCII sorting!  We're humans, not computers.
2143 @c These variables are listed as they would be in a dictionary:
2144 @c actor
2145 @c Actress
2146 @c actress
2148 @defvar CFLAGS
2149 @ovindex CFLAGS
2150 Debugging and optimization options for the C compiler.  If it is not set
2151 in the environment when @command{configure} runs, the default value is set
2152 when you call @code{AC_PROG_CC} (or empty if you don't).  @command{configure}
2153 uses this variable when compiling programs to test for C features.
2154 @end defvar
2156 @defvar configure_input
2157 @ovindex configure_input
2158 A comment saying that the file was generated automatically by
2159 @command{configure} and giving the name of the input file.
2160 @code{AC_OUTPUT} adds a comment line containing this variable to the top
2161 of every @file{Makefile} it creates.  For other files, you should
2162 reference this variable in a comment at the top of each input file.  For
2163 example, an input shell script should begin like this:
2165 @example
2166 #!/bin/sh
2167 # @@configure_input@@
2168 @end example
2170 @noindent
2171 The presence of that line also reminds people editing the file that it
2172 needs to be processed by @command{configure} in order to be used.
2173 @end defvar
2175 @defvar CPPFLAGS
2176 @ovindex CPPFLAGS
2177 Header file search directory (@option{-I@var{dir}}) and any other
2178 miscellaneous options for the C and C++ preprocessors and compilers.  If
2179 it is not set in the environment when @command{configure} runs, the default
2180 value is empty.  @command{configure} uses this variable when compiling or
2181 preprocessing programs to test for C and C++ features.
2182 @end defvar
2184 @defvar CXXFLAGS
2185 @ovindex CXXFLAGS
2186 Debugging and optimization options for the C++ compiler.  If it is not
2187 set in the environment when @command{configure} runs, the default value is
2188 set when you call @code{AC_PROG_CXX} (or empty if you don't).
2189 @command{configure} uses this variable when compiling programs to test for
2190 C++ features.
2191 @end defvar
2193 @defvar DEFS
2194 @ovindex DEFS
2195 @option{-D} options to pass to the C compiler.  If @code{AC_CONFIG_HEADERS}
2196 is called, @command{configure} replaces @samp{@@DEFS@@} with
2197 @option{-DHAVE_CONFIG_H} instead (@pxref{Configuration Headers}).  This
2198 variable is not defined while @command{configure} is performing its tests,
2199 only when creating the output files.  @xref{Setting Output Variables}, for
2200 how to check the results of previous tests.
2201 @end defvar
2203 @defvar ECHO_C
2204 @defvarx ECHO_N
2205 @defvarx ECHO_T
2206 @ovindex ECHO_C
2207 @ovindex ECHO_N
2208 @ovindex ECHO_T
2209 How does one suppress the trailing newline from @command{echo} for
2210 question-answer message pairs?  These variables provide a way:
2212 @example
2213 echo $ECHO_N "And the winner is... $ECHO_C"
2214 sleep 100000000000
2215 echo "$@{ECHO_T@}dead."
2216 @end example
2218 @noindent
2219 Some old and uncommon @command{echo} implementations offer no means to
2220 achieve this, in which case @code{ECHO_T} is set to tab.  You might not
2221 want to use it.
2222 @end defvar
2224 @defvar ERLCFLAGS
2225 @ovindex ERLCFLAGS
2226 Debugging and optimization options for the Erlang compiler.  If it is not set
2227 in the environment when @command{configure} runs, the default value is empty.
2228 @command{configure} uses this variable when compiling programs to test for
2229 Erlang features.
2230 @end defvar
2232 @defvar FCFLAGS
2233 @ovindex FCFLAGS
2234 Debugging and optimization options for the Fortran compiler.  If it
2235 is not set in the environment when @command{configure} runs, the default
2236 value is set when you call @code{AC_PROG_FC} (or empty if you don't).
2237 @command{configure} uses this variable when compiling programs to test for
2238 Fortran features.
2239 @end defvar
2241 @defvar FFLAGS
2242 @ovindex FFLAGS
2243 Debugging and optimization options for the Fortran 77 compiler.  If it
2244 is not set in the environment when @command{configure} runs, the default
2245 value is set when you call @code{AC_PROG_F77} (or empty if you don't).
2246 @command{configure} uses this variable when compiling programs to test for
2247 Fortran 77 features.
2248 @end defvar
2250 @defvar LDFLAGS
2251 @ovindex LDFLAGS
2252 Stripping (@option{-s}), path (@option{-L}), and any other miscellaneous
2253 options for the linker.  Don't use this variable to pass library names
2254 (@option{-l}) to the linker, use @code{LIBS} instead.  If it is not set
2255 in the environment when @command{configure} runs, the default value is empty.
2256 @command{configure} uses this variable when linking programs to test for
2257 C, C++, and Fortran features.
2258 @end defvar
2260 @defvar LIBS
2261 @ovindex LIBS
2262 @option{-l} options to pass to the linker.  The default value is empty,
2263 but some Autoconf macros may prepend extra libraries to this variable if
2264 those libraries are found and provide necessary functions, see
2265 @ref{Libraries}.  @command{configure} uses this variable when linking
2266 programs to test for C, C++, and Fortran features.
2267 @end defvar
2269 @defvar OBJCFLAGS
2270 @ovindex OBJCFLAGS
2271 Debugging and optimization options for the Objective C compiler.  If it is
2272 not set in the environment when @command{configure} runs, the default value
2273 is set when you call @code{AC_PROG_OBJC} (or empty if you don't).
2274 @command{configure} uses this variable when compiling programs to test for
2275 Objective C features.
2276 @end defvar
2278 @defvar builddir
2279 @ovindex builddir
2280 Rigorously equal to @samp{.}.  Added for symmetry only.
2281 @end defvar
2283 @defvar abs_builddir
2284 @ovindex abs_builddir
2285 Absolute name of @code{builddir}.
2286 @end defvar
2288 @defvar top_builddir
2289 @ovindex top_builddir
2290 The relative name of the top level of the current build tree.  In the
2291 top-level directory, this is the same as @code{builddir}.
2292 @end defvar
2294 @defvar abs_top_builddir
2295 @ovindex abs_top_builddir
2296 Absolute name of @code{top_builddir}.
2297 @end defvar
2299 @defvar srcdir
2300 @ovindex srcdir
2301 The relative name of the directory that contains the source code for
2302 that @file{Makefile}.
2303 @end defvar
2305 @defvar abs_srcdir
2306 @ovindex abs_srcdir
2307 Absolute name of @code{srcdir}.
2308 @end defvar
2310 @defvar top_srcdir
2311 @ovindex top_srcdir
2312 The relative name of the top-level source code directory for the
2313 package.  In the top-level directory, this is the same as @code{srcdir}.
2314 @end defvar
2316 @defvar abs_top_srcdir
2317 @ovindex abs_top_srcdir
2318 Absolute name of @code{top_srcdir}.
2319 @end defvar
2321 @node Installation Directory Variables
2322 @subsection Installation Directory Variables
2323 @cindex Installation directories
2324 @cindex Directories, installation
2326 The following variables specify the directories where the package will
2327 be installed, see @ref{Directory Variables, , Variables for
2328 Installation Directories, standards, The @acronym{GNU} Coding
2329 Standards}, for more information.  See the end of this section for
2330 details on when and how to use these variables.
2332 @defvar bindir
2333 @ovindex bindir
2334 The directory for installing executables that users run.
2335 @end defvar
2337 @defvar datadir
2338 @ovindex datadir
2339 The directory for installing idiosyncratic read-only
2340 architecture-independent data.
2341 @end defvar
2343 @defvar datarootdir
2344 @ovindex datarootdir
2345 The root of the directory tree for read-only architecture-independent
2346 data files.
2347 @end defvar
2349 @defvar docdir
2350 @ovindex docdir
2351 The directory for installing documentation files (other than Info and
2352 man).
2353 @end defvar
2355 @defvar dvidir
2356 @ovindex dvidir
2357 The directory for installing documentation files in DVI format.
2358 @end defvar
2360 @defvar exec_prefix
2361 @ovindex exec_prefix
2362 The installation prefix for architecture-dependent files.  By default
2363 it's the same as @var{prefix}.  You should avoid installing anything
2364 directly to @var{exec_prefix}.  However, the default value for
2365 directories containing architecture-dependent files should be relative
2366 to @var{exec_prefix}.
2367 @end defvar
2369 @defvar htmldir
2370 @ovindex htmldir
2371 The directory for installing HTML documentation.
2372 @end defvar
2374 @defvar includedir
2375 @ovindex includedir
2376 The directory for installing C header files.
2377 @end defvar
2379 @defvar infodir
2380 @ovindex infodir
2381 The directory for installing documentation in Info format.
2382 @end defvar
2384 @defvar libdir
2385 @ovindex libdir
2386 The directory for installing object code libraries.
2387 @end defvar
2389 @defvar libexecdir
2390 @ovindex libexecdir
2391 The directory for installing executables that other programs run.
2392 @end defvar
2394 @defvar localedir
2395 @ovindex localedir
2396 The directory for installing locale-dependent but
2397 architecture-independent data, such as message catalogs.  This directory
2398 usually has a subdirectory per locale.
2399 @end defvar
2401 @defvar localstatedir
2402 @ovindex localstatedir
2403 The directory for installing modifiable single-machine data.
2404 @end defvar
2406 @defvar mandir
2407 @ovindex mandir
2408 The top-level directory for installing documentation in man format.
2409 @end defvar
2411 @defvar oldincludedir
2412 @ovindex oldincludedir
2413 The directory for installing C header files for non-GCC compilers.
2414 @end defvar
2416 @defvar pdfdir
2417 @ovindex pdfdir
2418 The directory for installing PDF documentation.
2419 @end defvar
2421 @defvar prefix
2422 @ovindex prefix
2423 The common installation prefix for all files.  If @var{exec_prefix}
2424 is defined to a different value, @var{prefix} is used only for
2425 architecture-independent files.
2426 @end defvar
2428 @defvar psdir
2429 @ovindex psdir
2430 The directory for installing PostScript documentation.
2431 @end defvar
2433 @defvar sbindir
2434 @ovindex sbindir
2435 The directory for installing executables that system
2436 administrators run.
2437 @end defvar
2439 @defvar sharedstatedir
2440 @ovindex sharedstatedir
2441 The directory for installing modifiable architecture-independent data.
2442 @end defvar
2444 @defvar sysconfdir
2445 @ovindex sysconfdir
2446 The directory for installing read-only single-machine data.
2447 @end defvar
2450 Most of these variables have values that rely on @code{prefix} or
2451 @code{exec_prefix}.  It is deliberate that the directory output
2452 variables keep them unexpanded: typically @samp{@@datarootdir@@} will be
2453 replaced by @samp{$@{prefix@}/share}, not @samp{/usr/local/share}, and
2454 @samp{@@datadir@@} will be replaced by @samp{$@{datarootdir@}}.
2456 This behavior is mandated by the @acronym{GNU} coding standards, so that when
2457 the user runs:
2459 @table @samp
2460 @item make
2461 she can still specify a different prefix from the one specified to
2462 @command{configure}, in which case, if needed, the package shall hard
2463 code dependencies corresponding to the make-specified prefix.
2465 @item make install
2466 she can specify a different installation location, in which case the
2467 package @emph{must} still depend on the location which was compiled in
2468 (i.e., never recompile when @samp{make install} is run).  This is an
2469 extremely important feature, as many people may decide to install all
2470 the files of a package grouped together, and then install links from
2471 the final locations to there.
2472 @end table
2474 In order to support these features, it is essential that
2475 @code{datarootdir} remains being defined as @samp{$@{prefix@}/share} to
2476 depend upon the current value of @code{prefix}.
2478 A corollary is that you should not use these variables except in
2479 Makefiles.  For instance, instead of trying to evaluate @code{datadir}
2480 in @file{configure} and hard-coding it in Makefiles using
2481 e.g., @samp{AC_DEFINE_UNQUOTED([DATADIR], ["$datadir"], [Data directory.])},
2482 you should add
2483 @samp{-DDATADIR="$(datadir)"} to your @code{CPPFLAGS}.
2485 Similarly, you should not rely on @code{AC_CONFIG_FILES} to replace
2486 @code{datadir} and friends in your shell scripts and other files, rather
2487 let @command{make} manage their replacement.  For instance Autoconf
2488 ships templates of its shell scripts ending with @samp{.in}, and uses a
2489 Makefile snippet similar to:
2491 @example
2492 @group
2493 edit = sed \
2494         -e 's|@@datadir[@@]|$(pkgdatadir)|g' \
2495         -e 's|@@prefix[@@]|$(prefix)|g'
2496 @end group
2498 @group
2499 autoconf: Makefile $(srcdir)/autoconf.in
2500         rm -f autoconf autoconf.tmp
2501         $(edit) $(srcdir)/autoconf.in >autoconf.tmp
2502         chmod +x autoconf.tmp
2503         mv autoconf.tmp autoconf
2504 @end group
2506 @group
2507 autoheader: Makefile $(srcdir)/autoheader.in
2508         rm -f autoheader autoheader.tmp
2509         $(edit) $(srcdir)/autoconf.in >autoheader.tmp
2510         chmod +x autoheader.tmp
2511         mv autoheader.tmp autoheader
2512 @end group
2513 @end example
2515 Some details are noteworthy:
2517 @table @samp
2518 @item @@datadir[@@]
2519 The brackets prevent @command{configure} from replacing
2520 @samp{@@datadir@@} in the Sed expression itself.
2521 Brackets are preferable to a backslash here, since
2522 Posix says @samp{\@@} is not portable.
2524 @item $(pkgdatadir)
2525 Don't use @samp{@@pkgdatadir@@}!  Use the matching makefile variable
2526 instead.
2528 @item ,
2529 Don't use @samp{/} in the Sed expression(s) since most likely the
2530 variables you use, such as @samp{$(pkgdatadir)}, will contain
2531 some.
2533 @item Dependency on @file{Makefile}
2534 Since @code{edit} uses values that depend on the configuration specific
2535 values (@code{prefix}, etc.)@: and not only on @code{VERSION} and so forth,
2536 the output depends on @file{Makefile}, not @file{configure.ac}.
2538 @item Separated dependencies and Single Suffix Rules
2539 You can't use them!  The above snippet cannot be (portably) rewritten
2542 @example
2543 autoconf autoheader: Makefile
2544 @group
2545 .in:
2546         rm -f $@@ $@@.tmp
2547         $(edit) $< >$@@.tmp
2548         chmod +x $@@.tmp
2549         mv $@@.tmp $@@
2550 @end group
2551 @end example
2553 @xref{Limitations of Make}, for details.
2555 @item @samp{$(srcdir)}
2556 Be sure to specify the name of the source directory,
2557 otherwise the package won't support separated builds.
2558 @end table
2560 For the more specific installation of Erlang libraries, the following variables
2561 are defined:
2563 @defvar ERLANG_INSTALL_LIB_DIR
2564 @ovindex ERLANG_INSTALL_LIB_DIR
2565 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
2566 The common parent directory of Erlang library installation directories.
2567 This variable is set by calling the @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR}
2568 macro in @file{configure.ac}.
2569 @end defvar
2571 @defvar ERLANG_INSTALL_LIB_DIR_@var{library}
2572 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
2573 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
2574 The installation directory for Erlang library @var{library}.
2575 This variable is set by calling the
2576 @samp{AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(@var{library}, @var{version}}
2577 macro in @file{configure.ac}.
2578 @end defvar
2580 @xref{Erlang Libraries}, for details.
2583 @node Build Directories
2584 @subsection Build Directories
2585 @cindex Build directories
2586 @cindex Directories, build
2588 You can support compiling a software package for several architectures
2589 simultaneously from the same copy of the source code.  The object files
2590 for each architecture are kept in their own directory.
2592 To support doing this, @command{make} uses the @code{VPATH} variable to
2593 find the files that are in the source directory.  @acronym{GNU} Make
2594 and most other recent @command{make} programs can do this.  Older
2595 @command{make} programs do not support @code{VPATH}; when using them, the
2596 source code must be in the same directory as the object files.
2598 To support @code{VPATH}, each @file{Makefile.in} should contain two
2599 lines that look like:
2601 @example
2602 srcdir = @@srcdir@@
2603 VPATH = @@srcdir@@
2604 @end example
2606 Do not set @code{VPATH} to the value of another variable, for example
2607 @samp{VPATH = $(srcdir)}, because some versions of @command{make} do not do
2608 variable substitutions on the value of @code{VPATH}.
2610 @command{configure} substitutes the correct value for @code{srcdir} when
2611 it produces @file{Makefile}.
2613 Do not use the @code{make} variable @code{$<}, which expands to the
2614 file name of the file in the source directory (found with @code{VPATH}),
2615 except in implicit rules.  (An implicit rule is one such as @samp{.c.o},
2616 which tells how to create a @file{.o} file from a @file{.c} file.)  Some
2617 versions of @command{make} do not set @code{$<} in explicit rules; they
2618 expand it to an empty value.
2620 Instead, @file{Makefile} command lines should always refer to source
2621 files by prefixing them with @samp{$(srcdir)/}.  For example:
2623 @example
2624 time.info: time.texinfo
2625         $(MAKEINFO) $(srcdir)/time.texinfo
2626 @end example
2628 @node Automatic Remaking
2629 @subsection Automatic Remaking
2630 @cindex Automatic remaking
2631 @cindex Remaking automatically
2633 You can put rules like the following in the top-level @file{Makefile.in}
2634 for a package to automatically update the configuration information when
2635 you change the configuration files.  This example includes all of the
2636 optional files, such as @file{aclocal.m4} and those related to
2637 configuration header files.  Omit from the @file{Makefile.in} rules for
2638 any of these files that your package does not use.
2640 The @samp{$(srcdir)/} prefix is included because of limitations in the
2641 @code{VPATH} mechanism.
2643 The @file{stamp-} files are necessary because the timestamps of
2644 @file{config.h.in} and @file{config.h} will not be changed if remaking
2645 them does not change their contents.  This feature avoids unnecessary
2646 recompilation.  You should include the file @file{stamp-h.in} your
2647 package's distribution, so @command{make} will consider
2648 @file{config.h.in} up to date.  Don't use @command{touch}
2649 (@pxref{Limitations of Usual Tools}), rather use @command{echo} (using
2650 @command{date} would cause needless differences, hence @acronym{CVS}
2651 conflicts, etc.).
2653 @example
2654 @group
2655 $(srcdir)/configure: configure.ac aclocal.m4
2656         cd $(srcdir) && autoconf
2658 # autoheader might not change config.h.in, so touch a stamp file.
2659 $(srcdir)/config.h.in: stamp-h.in
2660 $(srcdir)/stamp-h.in: configure.ac aclocal.m4
2661         cd $(srcdir) && autoheader
2662         echo timestamp > $(srcdir)/stamp-h.in
2664 config.h: stamp-h
2665 stamp-h: config.h.in config.status
2666         ./config.status
2668 Makefile: Makefile.in config.status
2669         ./config.status
2671 config.status: configure
2672         ./config.status --recheck
2673 @end group
2674 @end example
2676 @noindent
2677 (Be careful if you copy these lines directly into your Makefile, as you
2678 will need to convert the indented lines to start with the tab character.)
2680 In addition, you should use
2682 @example
2683 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
2684 @end example
2686 @noindent
2687 so @file{config.status} will ensure that @file{config.h} is considered up to
2688 date.  @xref{Output}, for more information about @code{AC_OUTPUT}.
2690 @xref{config.status Invocation}, for more examples of handling
2691 configuration-related dependencies.
2693 @node Configuration Headers
2694 @section Configuration Header Files
2695 @cindex Configuration Header
2696 @cindex @file{config.h}
2698 When a package contains more than a few tests that define C preprocessor
2699 symbols, the command lines to pass @option{-D} options to the compiler
2700 can get quite long.  This causes two problems.  One is that the
2701 @command{make} output is hard to visually scan for errors.  More
2702 seriously, the command lines can exceed the length limits of some
2703 operating systems.  As an alternative to passing @option{-D} options to
2704 the compiler, @command{configure} scripts can create a C header file
2705 containing @samp{#define} directives.  The @code{AC_CONFIG_HEADERS}
2706 macro selects this kind of output.  Though it can be called anywhere
2707 between @code{AC_INIT} and @code{AC_OUTPUT}, it is customary to call
2708 it right after @code{AC_INIT}.
2710 The package should @samp{#include} the configuration header file before
2711 any other header files, to prevent inconsistencies in declarations (for
2712 example, if it redefines @code{const}).
2714 To provide for VPATH builds, remember to pass the C compiler a @option{-I.}
2715 option (or @option{-I..}; whichever directory contains @file{config.h}).
2716 Even if you use @samp{#include "config.h"}, the preprocessor searches only
2717 the directory of the currently read file, i.e., the source directory, not
2718 the build directory.
2720 With the appropriate @option{-I} option, you can use
2721 @samp{#include <config.h>}.  Actually, it's a good habit to use it,
2722 because in the rare case when the source directory contains another
2723 @file{config.h}, the build directory should be searched first.
2726 @defmac AC_CONFIG_HEADERS (@var{header} @dots{}, @ovar{cmds}, @ovar{init-cmds})
2727 @acindex{CONFIG_HEADERS}
2728 @cvindex HAVE_CONFIG_H
2729 This macro is one of the instantiating macros; see @ref{Configuration
2730 Actions}.  Make @code{AC_OUTPUT} create the file(s) in the
2731 blank-or-newline-separated list @var{header} containing C preprocessor
2732 @code{#define} statements, and replace @samp{@@DEFS@@} in generated
2733 files with @option{-DHAVE_CONFIG_H} instead of the value of @code{DEFS}.
2734 The usual name for @var{header} is @file{config.h}.
2736 If @var{header} already exists and its contents are identical to what
2737 @code{AC_OUTPUT} would put in it, it is left alone.  Doing this allows
2738 making some changes in the configuration without needlessly causing
2739 object files that depend on the header file to be recompiled.
2741 Usually the input file is named @file{@var{header}.in}; however, you can
2742 override the input file name by appending to @var{header} a
2743 colon-separated list of input files.  Examples:
2745 @example
2746 AC_CONFIG_HEADERS([config.h:config.hin])
2747 AC_CONFIG_HEADERS([defines.h:defs.pre:defines.h.in:defs.post])
2748 @end example
2750 @noindent
2751 Doing this allows you to keep your file names acceptable to
2752 @acronym{DOS} variants, or
2753 to prepend and/or append boilerplate to the file.
2754 @end defmac
2756 @defmac AH_HEADER
2757 @ahindex{HEADER}
2758 This macro is defined as the name of the first declared config header
2759 and undefined if no config headers have been declared up to this point.
2760 A third-party macro may, for example, require use of a config header
2761 without invoking AC_CONFIG_HEADERS twice, like this:
2763 @example
2764 AC_CONFIG_COMMANDS_PRE(
2765         [m4_ifndef([AH_HEADER], [AC_CONFIG_HEADERS([config.h])])])
2766 @end example
2768 @end defmac
2770 @xref{Configuration Actions}, for more details on @var{header}.
2772 @menu
2773 * Header Templates::            Input for the configuration headers
2774 * autoheader Invocation::       How to create configuration templates
2775 * Autoheader Macros::           How to specify CPP templates
2776 @end menu
2778 @node Header Templates
2779 @subsection Configuration Header Templates
2780 @cindex Configuration Header Template
2781 @cindex Header templates
2782 @cindex @file{config.h.in}
2784 Your distribution should contain a template file that looks as you want
2785 the final header file to look, including comments, with @code{#undef}
2786 statements which are used as hooks.  For example, suppose your
2787 @file{configure.ac} makes these calls:
2789 @example
2790 AC_CONFIG_HEADERS([conf.h])
2791 AC_CHECK_HEADERS([unistd.h])
2792 @end example
2794 @noindent
2795 Then you could have code like the following in @file{conf.h.in}.  On
2796 systems that have @file{unistd.h}, @command{configure} will @samp{#define}
2797 @samp{HAVE_UNISTD_H} to 1.  On other systems, the whole line will be
2798 commented out (in case the system predefines that symbol).
2800 @example
2801 @group
2802 /* Define as 1 if you have unistd.h.  */
2803 #undef HAVE_UNISTD_H
2804 @end group
2805 @end example
2807 Pay attention that @samp{#undef} is in the first column, and there is
2808 nothing after @samp{HAVE_UNISTD_H}, not even white space.  You can
2809 then decode the configuration header using the preprocessor directives:
2811 @example
2812 @group
2813 #include <conf.h>
2815 #if HAVE_UNISTD_H
2816 # include <unistd.h>
2817 #else
2818 /* We are in trouble.  */
2819 #endif
2820 @end group
2821 @end example
2823 The use of old form templates, with @samp{#define} instead of
2824 @samp{#undef} is strongly discouraged.  Similarly with old templates
2825 with comments on the same line as the @samp{#undef}.  Anyway, putting
2826 comments in preprocessor macros has never been a good idea.
2828 Since it is a tedious task to keep a template header up to date, you may
2829 use @command{autoheader} to generate it, see @ref{autoheader Invocation}.
2832 @node autoheader Invocation
2833 @subsection Using @command{autoheader} to Create @file{config.h.in}
2834 @cindex @command{autoheader}
2836 The @command{autoheader} program can create a template file of C
2837 @samp{#define} statements for @command{configure} to use.  If
2838 @file{configure.ac} invokes @code{AC_CONFIG_HEADERS(@var{file})},
2839 @command{autoheader} creates @file{@var{file}.in}; if multiple file
2840 arguments are given, the first one is used.  Otherwise,
2841 @command{autoheader} creates @file{config.h.in}.
2843 In order to do its job, @command{autoheader} needs you to document all
2844 of the symbols that you might use; i.e., there must be at least one
2845 @code{AC_DEFINE} or one @code{AC_DEFINE_UNQUOTED} call with a third
2846 argument for each symbol (@pxref{Defining Symbols}).  An additional
2847 constraint is that the first argument of @code{AC_DEFINE} must be a
2848 literal.  Note that all symbols defined by Autoconf's builtin tests are
2849 already documented properly; you only need to document those that you
2850 define yourself.
2852 You might wonder why @command{autoheader} is needed: after all, why
2853 would @command{configure} need to ``patch'' a @file{config.h.in} to
2854 produce a @file{config.h} instead of just creating @file{config.h} from
2855 scratch?  Well, when everything rocks, the answer is just that we are
2856 wasting our time maintaining @command{autoheader}: generating
2857 @file{config.h} directly is all that is needed.  When things go wrong,
2858 however, you'll be thankful for the existence of @command{autoheader}.
2860 The fact that the symbols are documented is important in order to
2861 @emph{check} that @file{config.h} makes sense.  The fact that there is a
2862 well-defined list of symbols that should be @code{#define}'d (or not) is
2863 also important for people who are porting packages to environments where
2864 @command{configure} cannot be run: they just have to @emph{fill in the
2865 blanks}.
2867 But let's come back to the point: @command{autoheader}'s invocation@dots{}
2869 If you give @command{autoheader} an argument, it uses that file instead
2870 of @file{configure.ac} and writes the header file to the standard output
2871 instead of to @file{config.h.in}.  If you give @command{autoheader} an
2872 argument of @option{-}, it reads the standard input instead of
2873 @file{configure.ac} and writes the header file to the standard output.
2875 @command{autoheader} accepts the following options:
2877 @table @option
2878 @item --help
2879 @itemx -h
2880 Print a summary of the command line options and exit.
2882 @item --version
2883 @itemx -V
2884 Print the version number of Autoconf and exit.
2886 @item --verbose
2887 @itemx -v
2888 Report processing steps.
2890 @item --debug
2891 @itemx -d
2892 Don't remove the temporary files.
2894 @item --force
2895 @itemx -f
2896 Remake the template file even if newer than its input files.
2898 @item --include=@var{dir}
2899 @itemx -I @var{dir}
2900 Append @var{dir} to the include path.  Multiple invocations accumulate.
2902 @item --prepend-include=@var{dir}
2903 @item -B @var{dir}
2904 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
2906 @item --warnings=@var{category}
2907 @itemx -W @var{category}
2908 @evindex WARNINGS
2909 Report the warnings related to @var{category} (which can actually be a
2910 comma separated list).  Current categories include:
2912 @table @samp
2913 @item obsolete
2914 report the uses of obsolete constructs
2916 @item all
2917 report all the warnings
2919 @item none
2920 report none
2922 @item error
2923 treats warnings as errors
2925 @item no-@var{category}
2926 disable warnings falling into @var{category}
2927 @end table
2929 @end table
2933 @node Autoheader Macros
2934 @subsection Autoheader Macros
2935 @cindex Autoheader macros
2937 @command{autoheader} scans @file{configure.ac} and figures out which C
2938 preprocessor symbols it might define.  It knows how to generate
2939 templates for symbols defined by @code{AC_CHECK_HEADERS},
2940 @code{AC_CHECK_FUNCS} etc., but if you @code{AC_DEFINE} any additional
2941 symbol, you must define a template for it.  If there are missing
2942 templates, @command{autoheader} fails with an error message.
2944 The simplest way to create a template for a @var{symbol} is to supply
2945 the @var{description} argument to an @samp{AC_DEFINE(@var{symbol})}; see
2946 @ref{Defining Symbols}.  You may also use one of the following macros.
2948 @defmac AH_VERBATIM (@var{key}, @var{template})
2949 @ahindex{VERBATIM}
2950 Tell @command{autoheader} to include the @var{template} as-is in the header
2951 template file.  This @var{template} is associated with the @var{key},
2952 which is used to sort all the different templates and guarantee their
2953 uniqueness.  It should be a symbol that can be @code{AC_DEFINE}'d.
2955 For example:
2957 @example
2958 AH_VERBATIM([_GNU_SOURCE],
2959 [/* Enable GNU extensions on systems that have them.  */
2960 #ifndef _GNU_SOURCE
2961 # define _GNU_SOURCE
2962 #endif])
2963 @end example
2964 @end defmac
2967 @defmac AH_TEMPLATE (@var{key}, @var{description})
2968 @ahindex{TEMPLATE}
2969 Tell @command{autoheader} to generate a template for @var{key}.  This macro
2970 generates standard templates just like @code{AC_DEFINE} when a
2971 @var{description} is given.
2973 For example:
2975 @example
2976 AH_TEMPLATE([CRAY_STACKSEG_END],
2977             [Define to one of _getb67, GETB67, getb67
2978              for Cray-2 and Cray-YMP systems.  This
2979              function is required for alloca.c support
2980              on those systems.])
2981 @end example
2983 @noindent
2984 will generate the following template, with the description properly
2985 justified.
2987 @example
2988 /* Define to one of _getb67, GETB67, getb67 for Cray-2 and
2989    Cray-YMP systems.  This function is required for alloca.c
2990    support on those systems.  */
2991 #undef CRAY_STACKSEG_END
2992 @end example
2993 @end defmac
2996 @defmac AH_TOP (@var{text})
2997 @ahindex{TOP}
2998 Include @var{text} at the top of the header template file.
2999 @end defmac
3002 @defmac AH_BOTTOM (@var{text})
3003 @ahindex{BOTTOM}
3004 Include @var{text} at the bottom of the header template file.
3005 @end defmac
3008 @node Configuration Commands
3009 @section Running Arbitrary Configuration Commands
3010 @cindex Configuration commands
3011 @cindex Commands for configuration
3013 You can execute arbitrary commands before, during, and after
3014 @file{config.status} is run.  The three following macros accumulate the
3015 commands to run when they are called multiple times.
3016 @code{AC_CONFIG_COMMANDS} replaces the obsolete macro
3017 @code{AC_OUTPUT_COMMANDS}; see @ref{Obsolete Macros}, for details.
3019 @defmac AC_CONFIG_COMMANDS (@var{tag}@dots{}, @ovar{cmds}, @ovar{init-cmds})
3020 @acindex{CONFIG_COMMANDS}
3021 Specify additional shell commands to run at the end of
3022 @file{config.status}, and shell commands to initialize any variables
3023 from @command{configure}.  Associate the commands with @var{tag}.
3024 Since typically the @var{cmds} create a file, @var{tag} should
3025 naturally be the name of that file.  If needed, the directory hosting
3026 @var{tag} is created.  This macro is one of the instantiating macros;
3027 see @ref{Configuration Actions}.
3029 Here is an unrealistic example:
3030 @example
3031 fubar=42
3032 AC_CONFIG_COMMANDS([fubar],
3033                    [echo this is extra $fubar, and so on.],
3034                    [fubar=$fubar])
3035 @end example
3037 Here is a better one:
3038 @example
3039 AC_CONFIG_COMMANDS([time-stamp], [date >time-stamp])
3040 @end example
3041 @end defmac
3043 The following two macros look similar, but in fact they are not of the same
3044 breed: they are executed directly by @file{configure}, so you cannot use
3045 @file{config.status} to re-run them.
3047 @c Yet it is good to leave them here.  The user sees them together and
3048 @c decides which best fits their needs.
3050 @defmac AC_CONFIG_COMMANDS_PRE (@var{cmds})
3051 @acindex{CONFIG_COMMANDS_PRE}
3052 Execute the @var{cmds} right before creating @file{config.status}.
3054 This macro presents the last opportunity to call @code{AC_SUBST},
3055 @code{AC_DEFINE}, or @code{AC_CONFIG_FOOS} macros.
3056 @end defmac
3058 @defmac AC_CONFIG_COMMANDS_POST (@var{cmds})
3059 @acindex{CONFIG_COMMANDS_POST}
3060 Execute the @var{cmds} right after creating @file{config.status}.
3061 @end defmac
3066 @node Configuration Links
3067 @section Creating Configuration Links
3068 @cindex Configuration links
3069 @cindex Links for configuration
3071 You may find it convenient to create links whose destinations depend upon
3072 results of tests.  One can use @code{AC_CONFIG_COMMANDS} but the
3073 creation of relative symbolic links can be delicate when the package is
3074 built in a directory different from the source directory.
3076 @defmac AC_CONFIG_LINKS (@var{dest}:@var{source}@dots{}, @ovar{cmds}, @ovar{init-cmds})
3077 @acindex{CONFIG_LINKS}
3078 @cindex Links
3079 Make @code{AC_OUTPUT} link each of the existing files @var{source} to
3080 the corresponding link name @var{dest}.  Makes a symbolic link if
3081 possible, otherwise a hard link if possible, otherwise a copy.  The
3082 @var{dest} and @var{source} names should be relative to the top level
3083 source or build directory.  This macro is one of the instantiating
3084 macros; see @ref{Configuration Actions}.
3086 For example, this call:
3088 @example
3089 AC_CONFIG_LINKS([host.h:config/$machine.h
3090                 object.h:config/$obj_format.h])
3091 @end example
3093 @noindent
3094 creates in the current directory @file{host.h} as a link to
3095 @file{@var{srcdir}/config/$machine.h}, and @file{object.h} as a
3096 link to @file{@var{srcdir}/config/$obj_format.h}.
3098 The tempting value @samp{.} for @var{dest} is invalid: it makes it
3099 impossible for @samp{config.status} to guess the links to establish.
3101 One can then run:
3102 @example
3103 ./config.status host.h object.h
3104 @end example
3105 @noindent
3106 to create the links.
3107 @end defmac
3111 @node Subdirectories
3112 @section Configuring Other Packages in Subdirectories
3113 @cindex Configure subdirectories
3114 @cindex Subdirectory configure
3116 In most situations, calling @code{AC_OUTPUT} is sufficient to produce
3117 @file{Makefile}s in subdirectories.  However, @command{configure} scripts
3118 that control more than one independent package can use
3119 @code{AC_CONFIG_SUBDIRS} to run @command{configure} scripts for other
3120 packages in subdirectories.
3122 @defmac AC_CONFIG_SUBDIRS (@var{dir} @dots{})
3123 @acindex{CONFIG_SUBDIRS}
3124 @ovindex subdirs
3125 Make @code{AC_OUTPUT} run @command{configure} in each subdirectory
3126 @var{dir} in the given blank-or-newline-separated list.  Each @var{dir} should
3127 be a literal, i.e., please do not use:
3129 @example
3130 if test "$package_foo_enabled" = yes; then
3131   $my_subdirs="$my_subdirs foo"
3133 AC_CONFIG_SUBDIRS([$my_subdirs])
3134 @end example
3136 @noindent
3137 because this prevents @samp{./configure --help=recursive} from
3138 displaying the options of the package @code{foo}.  Rather, you should
3139 write:
3141 @example
3142 if test "$package_foo_enabled" = yes; then
3143   AC_CONFIG_SUBDIRS([foo])
3145 @end example
3147 If a given @var{dir} is not found, an error is reported: if the
3148 subdirectory is optional, write:
3150 @example
3151 if test -d $srcdir/foo; then
3152   AC_CONFIG_SUBDIRS([foo])
3154 @end example
3156 @c NB: Yes, below we mean configure.in, not configure.ac.
3157 If a given @var{dir} contains @command{configure.gnu}, it is run instead
3158 of @command{configure}.  This is for packages that might use a
3159 non-Autoconf script @command{Configure}, which can't be called through a
3160 wrapper @command{configure} since it would be the same file on
3161 case-insensitive file systems.  Likewise, if a @var{dir} contains
3162 @file{configure.in} but no @command{configure}, the Cygnus
3163 @command{configure} script found by @code{AC_CONFIG_AUX_DIR} is used.
3165 The subdirectory @command{configure} scripts are given the same command
3166 line options that were given to this @command{configure} script, with minor
3167 changes if needed, which include:
3169 @itemize @minus
3170 @item
3171 adjusting a relative name for the cache file;
3173 @item
3174 adjusting a relative name for the source directory;
3176 @item
3177 propagating the current value of @code{$prefix}, including if it was
3178 defaulted, and if the default values of the top level and of the subdirectory
3179 @file{configure} differ.
3180 @end itemize
3182 This macro also sets the output variable @code{subdirs} to the list of
3183 directories @samp{@var{dir} @dots{}}.  @file{Makefile} rules can use
3184 this variable to determine which subdirectories to recurse into.
3186 This macro may be called multiple times.
3187 @end defmac
3189 @node Default Prefix
3190 @section Default Prefix
3191 @cindex Install prefix
3192 @cindex Prefix for install
3194 By default, @command{configure} sets the prefix for files it installs to
3195 @file{/usr/local}.  The user of @command{configure} can select a different
3196 prefix using the @option{--prefix} and @option{--exec-prefix} options.
3197 There are two ways to change the default: when creating
3198 @command{configure}, and when running it.
3200 Some software packages might want to install in a directory other than
3201 @file{/usr/local} by default.  To accomplish that, use the
3202 @code{AC_PREFIX_DEFAULT} macro.
3204 @defmac AC_PREFIX_DEFAULT (@var{prefix})
3205 @acindex{PREFIX_DEFAULT}
3206 Set the default installation prefix to @var{prefix} instead of
3207 @file{/usr/local}.
3208 @end defmac
3210 It may be convenient for users to have @command{configure} guess the
3211 installation prefix from the location of a related program that they
3212 have already installed.  If you wish to do that, you can call
3213 @code{AC_PREFIX_PROGRAM}.
3215 @defmac AC_PREFIX_PROGRAM (@var{program})
3216 @acindex{PREFIX_PROGRAM}
3217 If the user did not specify an installation prefix (using the
3218 @option{--prefix} option), guess a value for it by looking for
3219 @var{program} in @env{PATH}, the way the shell does.  If @var{program}
3220 is found, set the prefix to the parent of the directory containing
3221 @var{program}, else default the prefix as described above
3222 (@file{/usr/local} or @code{AC_PREFIX_DEFAULT}).  For example, if
3223 @var{program} is @code{gcc} and the @env{PATH} contains
3224 @file{/usr/local/gnu/bin/gcc}, set the prefix to @file{/usr/local/gnu}.
3225 @end defmac
3229 @c ======================================================== Existing tests
3231 @node Existing Tests
3232 @chapter Existing Tests
3234 These macros test for particular system features that packages might
3235 need or want to use.  If you need to test for a kind of feature that
3236 none of these macros check for, you can probably do it by calling
3237 primitive test macros with appropriate arguments (@pxref{Writing
3238 Tests}).
3240 These tests print messages telling the user which feature they're
3241 checking for, and what they find.  They cache their results for future
3242 @command{configure} runs (@pxref{Caching Results}).
3244 Some of these macros set output variables.  @xref{Makefile
3245 Substitutions}, for how to get their values.  The phrase ``define
3246 @var{name}'' is used below as a shorthand to mean ``define C
3247 preprocessor symbol @var{name} to the value 1''.  @xref{Defining
3248 Symbols}, for how to get those symbol definitions into your program.
3250 @menu
3251 * Common Behavior::             Macros' standard schemes
3252 * Alternative Programs::        Selecting between alternative programs
3253 * Files::                       Checking for the existence of files
3254 * Libraries::                   Library archives that might be missing
3255 * Library Functions::           C library functions that might be missing
3256 * Header Files::                Header files that might be missing
3257 * Declarations::                Declarations that may be missing
3258 * Structures::                  Structures or members that might be missing
3259 * Types::                       Types that might be missing
3260 * Compilers and Preprocessors::  Checking for compiling programs
3261 * System Services::             Operating system services
3262 * Posix Variants::              Special kludges for specific Posix variants
3263 * Erlang Libraries::            Checking for the existence of Erlang libraries
3264 @end menu
3266 @node Common Behavior
3267 @section Common Behavior
3268 @cindex Common autoconf behavior
3270 Much effort has been expended to make Autoconf easy to learn.  The most
3271 obvious way to reach this goal is simply to enforce standard interfaces
3272 and behaviors, avoiding exceptions as much as possible.  Because of
3273 history and inertia, unfortunately, there are still too many exceptions
3274 in Autoconf; nevertheless, this section describes some of the common
3275 rules.
3277 @menu
3278 * Standard Symbols::            Symbols defined by the macros
3279 * Default Includes::            Includes used by the generic macros
3280 @end menu
3282 @node Standard Symbols
3283 @subsection Standard Symbols
3284 @cindex Standard symbols
3286 All the generic macros that @code{AC_DEFINE} a symbol as a result of
3287 their test transform their @var{argument}s to a standard alphabet.
3288 First, @var{argument} is converted to upper case and any asterisks
3289 (@samp{*}) are each converted to @samp{P}.  Any remaining characters
3290 that are not alphanumeric are converted to underscores.
3292 For instance,
3294 @example
3295 AC_CHECK_TYPES([struct $Expensive*])
3296 @end example
3298 @noindent
3299 will define the symbol @samp{HAVE_STRUCT__EXPENSIVEP} if the check
3300 succeeds.
3303 @node Default Includes
3304 @subsection Default Includes
3305 @cindex Default includes
3306 @cindex Includes, default
3308 Several tests depend upon a set of header files.  Since these headers
3309 are not universally available, tests actually have to provide a set of
3310 protected includes, such as:
3312 @example
3313 @group
3314 #if TIME_WITH_SYS_TIME
3315 # include <sys/time.h>
3316 # include <time.h>
3317 #else
3318 # if HAVE_SYS_TIME_H
3319 #  include <sys/time.h>
3320 # else
3321 #  include <time.h>
3322 # endif
3323 #endif
3324 @end group
3325 @end example
3327 @noindent
3328 Unless you know exactly what you are doing, you should avoid using
3329 unconditional includes, and check the existence of the headers you
3330 include beforehand (@pxref{Header Files}).
3332 Most generic macros use the following macro to provide the default set
3333 of includes:
3335 @defmac AC_INCLUDES_DEFAULT (@ovar{include-directives})
3336 @acindex{INCLUDES_DEFAULT}
3337 Expand to @var{include-directives} if defined, otherwise to:
3339 @example
3340 @group
3341 #include <stdio.h>
3342 #if HAVE_SYS_TYPES_H
3343 # include <sys/types.h>
3344 #endif
3345 #if HAVE_SYS_STAT_H
3346 # include <sys/stat.h>
3347 #endif
3348 #if STDC_HEADERS
3349 # include <stdlib.h>
3350 # include <stddef.h>
3351 #else
3352 # if HAVE_STDLIB_H
3353 #  include <stdlib.h>
3354 # endif
3355 #endif
3356 #if HAVE_STRING_H
3357 # if !STDC_HEADERS && HAVE_MEMORY_H
3358 #  include <memory.h>
3359 # endif
3360 # include <string.h>
3361 #endif
3362 #if HAVE_STRINGS_H
3363 # include <strings.h>
3364 #endif
3365 #if HAVE_INTTYPES_H
3366 # include <inttypes.h>
3367 #endif
3368 #if HAVE_STDINT_H
3369 # include <stdint.h>
3370 #endif
3371 #if HAVE_UNISTD_H
3372 # include <unistd.h>
3373 #endif
3374 @end group
3375 @end example
3377 If the default includes are used, then check for the presence of these
3378 headers and their compatibility, i.e., you don't need to run
3379 @code{AC_HEADER_STDC}, nor check for @file{stdlib.h} etc.
3381 These headers are checked for in the same order as they are included.
3382 For instance, on some systems @file{string.h} and @file{strings.h} both
3383 exist, but conflict.  Then @code{HAVE_STRING_H} will be defined, but
3384 @code{HAVE_STRINGS_H} won't.
3385 @end defmac
3387 @node Alternative Programs
3388 @section Alternative Programs
3389 @cindex Programs, checking
3391 These macros check for the presence or behavior of particular programs.
3392 They are used to choose between several alternative programs and to
3393 decide what to do once one has been chosen.  If there is no macro
3394 specifically defined to check for a program you need, and you don't need
3395 to check for any special properties of it, then you can use one of the
3396 general program-check macros.
3398 @menu
3399 * Particular Programs::         Special handling to find certain programs
3400 * Generic Programs::            How to find other programs
3401 @end menu
3403 @node Particular Programs
3404 @subsection Particular Program Checks
3406 These macros check for particular programs---whether they exist, and
3407 in some cases whether they support certain features.
3409 @defmac AC_PROG_AWK
3410 @acindex{PROG_AWK}
3411 @ovindex AWK
3412 Check for @code{gawk}, @code{mawk}, @code{nawk}, and @code{awk}, in that
3413 order, and set output variable @code{AWK} to the first one that is found.
3414 It tries @code{gawk} first because that is reported to be the
3415 best implementation.
3416 @end defmac
3418 @defmac AC_PROG_GREP
3419 @acindex{PROG_GREP}
3420 @ovindex GREP
3421 On AIX the default @code{grep} silently truncates long lines on the
3422 input before matching.  On Solaris, @code{/usr/bin/grep} does not
3423 understand the @option{-e} option.  On NeXT, @code{grep} understands only a
3424 single @option{-e} option.  This macro looks for @sc{gnu} Grep or
3425 else the best available @code{grep} or @code{ggrep} in the user's
3426 @env{PATH} which accepts the longest input lines possible, and which
3427 accepts and respects multiple @option{-e} options.  Set the
3428 output variable @code{GREP} to whatever is chosen.
3429 @end defmac
3431 @defmac AC_PROG_EGREP
3432 @acindex{PROG_EGREP}
3433 @ovindex EGREP
3434 Check whether @code{$GREP -E} works, or else search the user's
3435 @env{PATH} for @code{egrep}, and @code{gegrep}, in that order, and set
3436 output variable @code{EGREP} to the one that accepts the longest input
3437 lines.
3438 @end defmac
3440 @defmac AC_PROG_FGREP
3441 @acindex{PROG_FGREP}
3442 @ovindex FGREP
3443 Check whether @code{$GREP -F} works, or else search the user's
3444 @env{PATH} for @code{fgrep}, and @code{gfgrep}, in that order, and set
3445 output variable @code{FGREP} to the one that accepts the longest input
3446 lines.
3447 @end defmac
3449 @defmac AC_PROG_INSTALL
3450 @acindex{PROG_INSTALL}
3451 @ovindex INSTALL
3452 @ovindex INSTALL_PROGRAM
3453 @ovindex INSTALL_DATA
3454 @ovindex INSTALL_SCRIPT
3455 Set output variable @code{INSTALL} to the name of a @acronym{BSD}-compatible
3456 @code{install} program, if one is found in the current @env{PATH}.
3457 Otherwise, set @code{INSTALL} to @samp{@var{dir}/install-sh -c},
3458 checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its
3459 default directories) to determine @var{dir} (@pxref{Output}).  Also set
3460 the variables @code{INSTALL_PROGRAM} and @code{INSTALL_SCRIPT} to
3461 @samp{$@{INSTALL@}} and @code{INSTALL_DATA} to @samp{$@{INSTALL@} -m 644}.
3463 This macro screens out various instances of @code{install} known not to
3464 work.  It prefers to find a C program rather than a shell script, for
3465 speed.  Instead of @file{install-sh}, it can also use @file{install.sh},
3466 but that name is obsolete because some @command{make} programs have a rule
3467 that creates @file{install} from it if there is no @file{Makefile}.
3469 Autoconf comes with a copy of @file{install-sh} that you can use.  If
3470 you use @code{AC_PROG_INSTALL}, you must include either
3471 @file{install-sh} or @file{install.sh} in your distribution, or
3472 @command{configure} will produce an error message saying it can't find
3473 them---even if the system you're on has a good @code{install} program.
3474 This check is a safety measure to prevent you from accidentally leaving
3475 that file out, which would prevent your package from installing on
3476 systems that don't have a @acronym{BSD}-compatible @code{install} program.
3478 If you need to use your own installation program because it has features
3479 not found in standard @code{install} programs, there is no reason to use
3480 @code{AC_PROG_INSTALL}; just put the file name of your program into your
3481 @file{Makefile.in} files.
3482 @end defmac
3484 @defmac AC_PROG_LEX
3485 @acindex{PROG_LEX}
3486 @ovindex LEX
3487 @ovindex LEXLIB
3488 @cvindex YYTEXT_POINTER
3489 @ovindex LEX_OUTPUT_ROOT
3490 If @code{flex} is found, set output variable @code{LEX} to @samp{flex}
3491 and @code{LEXLIB} to @option{-lfl}, if that library is in a standard
3492 place.  Otherwise set @code{LEX} to @samp{lex} and @code{LEXLIB} to
3493 @option{-ll}.
3495 Define @code{YYTEXT_POINTER} if @code{yytext} is a @samp{char *} instead
3496 of a @samp{char []}.  Also set output variable @code{LEX_OUTPUT_ROOT} to
3497 the base of the file name that the lexer generates; usually
3498 @file{lex.yy}, but sometimes something else.  These results vary
3499 according to whether @code{lex} or @code{flex} is being used.
3501 You are encouraged to use Flex in your sources, since it is both more
3502 pleasant to use than plain Lex and the C source it produces is portable.
3503 In order to ensure portability, however, you must either provide a
3504 function @code{yywrap} or, if you don't use it (e.g., your scanner has
3505 no @samp{#include}-like feature), simply include a @samp{%noyywrap}
3506 statement in the scanner's source.  Once this done, the scanner is
3507 portable (unless @emph{you} felt free to use nonportable constructs) and
3508 does not depend on any library.  In this case, and in this case only, it
3509 is suggested that you use this Autoconf snippet:
3511 @example
3512 AC_PROG_LEX
3513 if test "$LEX" != flex; then
3514   LEX="$SHELL $missing_dir/missing flex"
3515   AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
3516   AC_SUBST([LEXLIB], [''])
3518 @end example
3520 The shell script @command{missing} can be found in the Automake
3521 distribution.
3523 To ensure backward compatibility, Automake's @code{AM_PROG_LEX} invokes
3524 (indirectly) this macro twice, which will cause an annoying but benign
3525 ``@code{AC_PROG_LEX} invoked multiple times'' warning.  Future versions
3526 of Automake will fix this issue; meanwhile, just ignore this message.
3528 As part of running the test, this macro may delete any file in the
3529 configuration directory named @file{lex.yy.c} or @file{lexyy.c}.
3530 @end defmac
3532 @defmac AC_PROG_LN_S
3533 @acindex{PROG_LN_S}
3534 @ovindex LN_S
3535 If @samp{ln -s} works on the current file system (the operating system
3536 and file system support symbolic links), set the output variable
3537 @code{LN_S} to @samp{ln -s}; otherwise, if @samp{ln} works, set
3538 @code{LN_S} to @samp{ln}, and otherwise set it to @samp{cp -p}.
3540 If you make a link in a directory other than the current directory, its
3541 meaning depends on whether @samp{ln} or @samp{ln -s} is used.  To safely
3542 create links using @samp{$(LN_S)}, either find out which form is used
3543 and adjust the arguments, or always invoke @code{ln} in the directory
3544 where the link is to be created.
3546 In other words, it does not work to do:
3547 @example
3548 $(LN_S) foo /x/bar
3549 @end example
3551 Instead, do:
3553 @example
3554 (cd /x && $(LN_S) foo bar)
3555 @end example
3556 @end defmac
3558 @defmac AC_PROG_RANLIB
3559 @acindex{PROG_RANLIB}
3560 @ovindex RANLIB
3561 Set output variable @code{RANLIB} to @samp{ranlib} if @code{ranlib}
3562 is found, and otherwise to @samp{:} (do nothing).
3563 @end defmac
3565 @defmac AC_PROG_SED
3566 @acindex{PROG_SED}
3567 @ovindex SED
3568 Set output variable @code{SED} to a Sed implementation on @env{PATH} that
3569 truncates as few characters as possible.  If @sc{gnu} Sed is found,
3570 use that instead.
3571 @end defmac
3573 @defmac AC_PROG_YACC
3574 @acindex{PROG_YACC}
3575 @ovindex YACC
3576 If @code{bison} is found, set output variable @code{YACC} to @samp{bison
3577 -y}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
3578 @samp{byacc}.  Otherwise set @code{YACC} to @samp{yacc}.
3579 @end defmac
3581 @node Generic Programs
3582 @subsection Generic Program and File Checks
3584 These macros are used to find programs not covered by the ``particular''
3585 test macros.  If you need to check the behavior of a program as well as
3586 find out whether it is present, you have to write your own test for it
3587 (@pxref{Writing Tests}).  By default, these macros use the environment
3588 variable @env{PATH}.  If you need to check for a program that might not
3589 be in the user's @env{PATH}, you can pass a modified path to use
3590 instead, like this:
3592 @example
3593 AC_PATH_PROG([INETD], [inetd], [/usr/libexec/inetd],
3594              [$PATH:/usr/libexec:/usr/sbin:/usr/etc:/etc])
3595 @end example
3597 You are strongly encouraged to declare the @var{variable} passed to
3598 @code{AC_CHECK_PROG} etc.@: as precious, @xref{Setting Output Variables},
3599 @code{AC_ARG_VAR}, for more details.
3601 @defmac AC_CHECK_PROG (@var{variable}, @var{prog-to-check-for}, @var{value-if-found}, @ovar{value-if-not-found}, @ovar{path},  @ovar{reject})
3602 @acindex{CHECK_PROG}
3603 Check whether program @var{prog-to-check-for} exists in @env{PATH}.  If
3604 it is found, set @var{variable} to @var{value-if-found}, otherwise to
3605 @var{value-if-not-found}, if given.  Always pass over @var{reject} (an
3606 absolute file name) even if it is the first found in the search path; in
3607 that case, set @var{variable} using the absolute file name of the
3608 @var{prog-to-check-for} found that is not @var{reject}.  If
3609 @var{variable} was already set, do nothing.  Calls @code{AC_SUBST} for
3610 @var{variable}.
3611 @end defmac
3613 @defmac AC_CHECK_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3614 @acindex{CHECK_PROGS}
3615 Check for each program in the blank-separated list
3616 @var{progs-to-check-for} existing in the @env{PATH}.  If one is found, set
3617 @var{variable} to the name of that program.  Otherwise, continue
3618 checking the next program in the list.  If none of the programs in the
3619 list are found, set @var{variable} to @var{value-if-not-found}; if
3620 @var{value-if-not-found} is not specified, the value of @var{variable}
3621 is not changed.  Calls @code{AC_SUBST} for @var{variable}.
3622 @end defmac
3624 @defmac AC_CHECK_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3625 @acindex{CHECK_TARGET_TOOL}
3626 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
3627 with a prefix of the target type as determined by
3628 @code{AC_CANONICAL_TARGET}, followed by a dash (@pxref{Canonicalizing}).
3629 If the tool cannot be found with a prefix, and if the build and target
3630 types are equal, then it is also searched for without a prefix.
3632 As noted in @ref{Specifying Names, , Specifying the system type}, the
3633 target is rarely specified, because most of the time it is the same
3634 as the host: it is the type of system for which any compiler tools in
3635 the package will produce code.  What this macro will look for is,
3636 for example, @emph{a tool @r{(assembler, linker, etc.)}@: that the
3637 compiler driver @r{(@command{gcc} for the @acronym{GNU} C Compiler)}
3638 will use to produce objects, archives or executables}.
3639 @end defmac
3641 @defmac AC_CHECK_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3642 @acindex{CHECK_TOOL}
3643 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
3644 with a prefix of the host type as determined by
3645 @code{AC_CANONICAL_HOST}, followed by a dash (@pxref{Canonicalizing}).
3646 For example, if the user runs @samp{configure --host=i386-gnu}, then
3647 this call:
3648 @example
3649 AC_CHECK_TOOL([RANLIB], [ranlib], [:])
3650 @end example
3651 @noindent
3652 sets @code{RANLIB} to @file{i386-gnu-ranlib} if that program exists in
3653 @env{PATH}, or otherwise to @samp{ranlib} if that program exists in
3654 @env{PATH}, or to @samp{:} if neither program exists.
3656 In the future, when cross-compiling this macro will @emph{only}
3657 accept program names that are prefixed with the host type.
3658 For more information, see @ref{Specifying Names, , Specifying the
3659 system type}.
3660 @end defmac
3662 @defmac AC_CHECK_TARGET_TOOLS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3663 @acindex{CHECK_TARGET_TOOLS}
3664 Like @code{AC_CHECK_TARGET_TOOL}, each of the tools in the list
3665 @var{progs-to-check-for} are checked with a prefix of the target type as
3666 determined by @code{AC_CANONICAL_TARGET}, followed by a dash
3667 (@pxref{Canonicalizing}).  If none of the tools can be found with a
3668 prefix, and if the build and target types are equal, then the first one
3669 without a prefix is used.  If a tool is found, set @var{variable} to
3670 the name of that program.  If none of the tools in the list are found,
3671 set @var{variable} to @var{value-if-not-found}; if @var{value-if-not-found}
3672 is not specified, the value of @var{variable} is not changed.  Calls
3673 @code{AC_SUBST} for @var{variable}.
3674 @end defmac
3676 @defmac AC_CHECK_TOOLS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3677 @acindex{CHECK_TOOLS}
3678 Like @code{AC_CHECK_TOOL}, each of the tools in the list
3679 @var{progs-to-check-for} are checked with a prefix of the host type as
3680 determined by @code{AC_CANONICAL_HOST}, followed by a dash
3681 (@pxref{Canonicalizing}).  If none of the tools can be found with a
3682 prefix, then the first one without a prefix is used.  If a tool is found,
3683 set @var{variable} to the name of that program.  If none of the tools in
3684 the list are found, set @var{variable} to @var{value-if-not-found}; if
3685 @var{value-if-not-found} is not specified, the value of @var{variable}
3686 is not changed.  Calls @code{AC_SUBST} for @var{variable}.
3688 In the future, when cross-compiling this macro will @emph{not}
3689 accept program names that are not prefixed with the host type.
3690 @end defmac
3692 @defmac AC_PATH_PROG (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3693 @acindex{PATH_PROG}
3694 Like @code{AC_CHECK_PROG}, but set @var{variable} to the absolute
3695 name of @var{prog-to-check-for} if found.
3696 @end defmac
3698 @defmac AC_PATH_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3699 @acindex{PATH_PROGS}
3700 Like @code{AC_CHECK_PROGS}, but if any of @var{progs-to-check-for}
3701 are found, set @var{variable} to the absolute name of the program
3702 found.
3703 @end defmac
3705 @defmac AC_PATH_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3706 @acindex{PATH_TARGET_TOOL}
3707 Like @code{AC_CHECK_TARGET_TOOL}, but set @var{variable} to the absolute
3708 name of the program if it is found.
3709 @end defmac
3711 @defmac AC_PATH_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3712 @acindex{PATH_TOOL}
3713 Like @code{AC_CHECK_TOOL}, but set @var{variable} to the absolute
3714 name of the program if it is found.
3716 In the future, when cross-compiling this macro will @emph{not}
3717 accept program names that are not prefixed with the host type.
3718 @end defmac
3721 @node Files
3722 @section Files
3723 @cindex File, checking
3725 You might also need to check for the existence of files.  Before using
3726 these macros, ask yourself whether a run-time test might not be a better
3727 solution.  Be aware that, like most Autoconf macros, they test a feature
3728 of the host machine, and therefore, they die when cross-compiling.
3730 @defmac AC_CHECK_FILE (@var{file}, @ovar{action-if-found}, @ovar{action-if-not-found})
3731 @acindex{CHECK_FILE}
3732 Check whether file @var{file} exists on the native system.  If it is
3733 found, execute @var{action-if-found}, otherwise do
3734 @var{action-if-not-found}, if given.
3735 @end defmac
3737 @defmac AC_CHECK_FILES (@var{files}, @ovar{action-if-found}, @ovar{action-if-not-found})
3738 @acindex{CHECK_FILES}
3739 Executes @code{AC_CHECK_FILE} once for each file listed in @var{files}.
3740 Additionally, defines @samp{HAVE_@var{file}} (@pxref{Standard Symbols})
3741 for each file found.
3742 @end defmac
3745 @node Libraries
3746 @section Library Files
3747 @cindex Library, checking
3749 The following macros check for the presence of certain C, C++, or Fortran
3750 library archive files.
3752 @defmac AC_CHECK_LIB (@var{library}, @var{function}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
3753 @acindex{CHECK_LIB}
3754 Test whether the library @var{library} is available by trying to link
3755 a test program that calls function @var{function} with the library.
3756 @var{function} should be a function provided by the library.
3757 Use the base
3758 name of the library; e.g., to check for @option{-lmp}, use @samp{mp} as
3759 the @var{library} argument.
3761 @var{action-if-found} is a list of shell commands to run if the link
3762 with the library succeeds; @var{action-if-not-found} is a list of shell
3763 commands to run if the link fails.  If @var{action-if-found} is not
3764 specified, the default action will prepend @option{-l@var{library}} to
3765 @code{LIBS} and define @samp{HAVE_LIB@var{library}} (in all
3766 capitals).  This macro is intended to support building @code{LIBS} in
3767 a right-to-left (least-dependent to most-dependent) fashion such that
3768 library dependencies are satisfied as a natural side-effect of
3769 consecutive tests.  Some linkers are very sensitive to library ordering
3770 so the order in which @code{LIBS} is generated is important to reliable
3771 detection of libraries.
3773 If linking with @var{library} results in unresolved symbols that would
3774 be resolved by linking with additional libraries, give those libraries
3775 as the @var{other-libraries} argument, separated by spaces:
3776 e.g., @option{-lXt -lX11}.  Otherwise, this macro will fail to detect
3777 that @var{library} is present, because linking the test program will
3778 always fail with unresolved symbols.  The @var{other-libraries} argument
3779 should be limited to cases where it is desirable to test for one library
3780 in the presence of another that is not already in @code{LIBS}.
3782 @code{AC_CHECK_LIB} requires some care in usage, and should be avoided
3783 in some common cases.  Many standard functions like @code{gethostbyname}
3784 appear the standard C library on some hosts, and in special libraries
3785 like @code{nsl} on other hosts.  On some hosts the special libraries
3786 contain variant implementations that you may not want to use.  These
3787 days it is normally better to use @code{AC_SEARCH_LIBS([gethostbyname],
3788 [nsl])} instead of @code{AC_CHECK_LIB([nsl], [gethostbyname])}.
3789 @end defmac
3792 @defmac AC_SEARCH_LIBS (@var{function}, @var{search-libs}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
3793 @acindex{SEARCH_LIBS}
3794 Search for a library defining @var{function} if it's not already
3795 available.  This equates to calling
3796 @samp{AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])])} first with
3797 no libraries, then for each library listed in @var{search-libs}.
3799 Add @option{-l@var{library}} to @code{LIBS} for the first library found
3800 to contain @var{function}, and run @var{action-if-found}.  If the
3801 function is not found, run @var{action-if-not-found}.
3803 If linking with @var{library} results in unresolved symbols that would
3804 be resolved by linking with additional libraries, give those libraries
3805 as the @var{other-libraries} argument, separated by spaces:
3806 e.g., @option{-lXt -lX11}.  Otherwise, this macro will fail to detect
3807 that @var{function} is present, because linking the test program will
3808 always fail with unresolved symbols.
3809 @end defmac
3813 @node Library Functions
3814 @section Library Functions
3816 The following macros check for particular C library functions.
3817 If there is no macro specifically defined to check for a function you need,
3818 and you don't need to check for any special properties of
3819 it, then you can use one of the general function-check macros.
3821 @menu
3822 * Function Portability::        Pitfalls with usual functions
3823 * Particular Functions::        Special handling to find certain functions
3824 * Generic Functions::           How to find other functions
3825 @end menu
3827 @node Function Portability
3828 @subsection Portability of C Functions
3829 @cindex Portability of C functions
3830 @cindex C function portability
3832 Most usual functions can either be missing, or be buggy, or be limited
3833 on some architectures.  This section tries to make an inventory of these
3834 portability issues.  By definition, this list will always require
3835 additions.  Please help us keeping it as complete as possible.
3837 @table @asis
3838 @item @code{exit}
3839 @c @fuindex exit
3840 @prindex @code{exit}
3841 Did you know that, on some older hosts, @code{exit} returns @code{int}?
3842 This is because @code{exit} predates @code{void}, and there was a long
3843 tradition of it returning @code{int}.
3845 @item @code{free}
3846 @c @fuindex free
3847 @prindex @code{free}
3848 The C standard says a call @code{free (NULL)} does nothing, but
3849 some old systems don't support this (e.g., NextStep).
3851 @item @code{isinf}
3852 @itemx @code{isnan}
3853 @c @fuindex isinf
3854 @c @fuindex isnan
3855 @prindex @code{isinf}
3856 @prindex @code{isnan}
3857 The C99 standard says that @code{isinf} and @code{isnan} are
3858 macros.  On some systems just macros are available (e.g., HP-UX), on
3859 some systems both macros and functions (e.g., glibc 2.3.2), and on some
3860 systems only functions (e.g., IRIX 6 and Solaris 9).  In some cases
3861 these functions are declared in nonstandard headers like
3862 @code{<sunmath.h>} and defined in non-default libraries like
3863 @option{-lm} or @option{-lsunmath}.
3865 The C99 @code{isinf} and @code{isnan} macros work correctly with
3866 @code{long double} arguments, but pre-C99 systems that use functions
3867 typically assume @code{double} arguments.  On such a system,
3868 @code{isinf} incorrectly returns true for a finite @code{long double}
3869 argument that is outside the range of @code{double}.
3871 To work around this porting mess, you can use code like the following.
3873 @smallexample
3874 #include <math.h>
3876 #ifndef isnan
3877 # define isnan(x) \
3878     (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
3879      : sizeof (x) == sizeof (double) ? isnan_d (x) \
3880      : isnan_f (x))
3881 static inline int isnan_f  (float       x) @{ return x != x; @}
3882 static inline int isnan_d  (double      x) @{ return x != x; @}
3883 static inline int isnan_ld (long double x) @{ return x != x; @}
3884 #endif
3886 #ifndef isinf
3887 # define isinf(x) \
3888     (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
3889      : sizeof (x) == sizeof (double) ? isinf_d (x) \
3890      : isinf_f (x))
3891 static inline int isinf_f  (float       x) @{ return isnan (x - x); @}
3892 static inline int isinf_d  (double      x) @{ return isnan (x - x); @}
3893 static inline int isinf_ld (long double x) @{ return isnan (x - x); @}
3894 #endif
3895 @end smallexample
3897 Use @code{AC_C_INLINE} (@pxref{C Compiler}) so that this code works on
3898 compilers that lack the @code{inline} keyword.  Some optimizing
3899 compilers mishandle these definitions, but systems with that bug
3900 typically have missing or broken @code{isnan} functions anyway, so it's
3901 probably not worth worrying about.
3903 @item @code{malloc}
3904 @c @fuindex malloc
3905 @prindex @code{malloc}
3906 The C standard says a call @code{malloc (0)} is implementation
3907 dependent.  It may either return @code{NULL} (e.g., OSF 4) or
3908 non-@code{NULL} (e.g., @acronym{GNU} C Library).  @code{AC_FUNC_MALLOC}
3909 can be used to insist on non-@code{NULL} (@pxref{Particular Functions}).
3911 @item @code{putenv}
3912 @c @fuindex putenv
3913 @prindex @code{putenv}
3914 Posix prefers @code{setenv} to @code{putenv}; among other things,
3915 @code{putenv} is not required of all Posix implementations, but
3916 @code{setenv} is.
3918 Posix specifies that @code{putenv} puts the given string directly in
3919 @code{environ}, but some systems make a copy of it instead (e.g.,
3920 glibc 2.0, or @acronym{BSD}).  And when a copy is made, @code{unsetenv} might
3921 not free it, causing a memory leak (e.g., Free@acronym{BSD} 4).
3923 On some systems @code{putenv ("FOO")} removes @samp{FOO} from the
3924 environment, but this is not standard usage and it dumps core
3925 on some systems (e.g., AIX).
3927 On MinGW, a call @code{putenv ("FOO=")} removes @samp{FOO} from the
3928 environment, rather than inserting it with an empty value.
3930 @item @code{realloc}
3931 @c @fuindex realloc
3932 @prindex @code{realloc}
3933 The C standard says a call @code{realloc (NULL, size)} is equivalent
3934 to @code{malloc (size)}, but some old systems don't support this (e.g.,
3935 NextStep).
3937 @item @code{signal} handler
3938 @c @fuindex signal
3939 @prindex @code{signal}
3940 Normally @code{signal} takes a handler function with a return type of
3941 @code{void}, but some old systems required @code{int} instead.  Any
3942 actual @code{int} value returned is not used; this is only a
3943 difference in the function prototype demanded.
3945 All systems we know of in current use return @code{void}.  The
3946 @code{int} was to support K&R C, where of course @code{void} is not
3947 available.  @code{AC_TYPE_SIGNAL} (@pxref{Particular Types}) can be
3948 used to establish the correct type in all cases.
3950 @item @code{snprintf}
3951 @c @fuindex snprintf
3952 @prindex @code{snprintf}
3953 @c @fuindex vsnprintf
3954 @prindex @code{vsnprintf}
3955 The C99 standard says that if the output array isn't big enough
3956 and if no other errors occur, @code{snprintf} and @code{vsnprintf}
3957 truncate the output and return the number of bytes that ought to have
3958 been produced.  Some older systems return the truncated length (e.g.,
3959 @acronym{GNU} C Library 2.0.x or @sc{irix} 6.5), some a negative value
3960 (e.g., earlier @acronym{GNU} C Library versions), and some the buffer
3961 length without truncation (e.g., 32-bit Solaris 7).  Also, some buggy
3962 older systems ignore the length and overrun the buffer (e.g., 64-bit
3963 Solaris 7).
3965 @item @code{sprintf}
3966 @c @fuindex sprintf
3967 @prindex @code{sprintf}
3968 @c @fuindex vsprintf
3969 @prindex @code{vsprintf}
3970 The C standard says @code{sprintf} and @code{vsprintf} return the
3971 number of bytes written, but on some ancient systems (SunOS 4 for
3972 instance) they return the buffer pointer instead.
3974 @item @code{sscanf}
3975 @c @fuindex sscanf
3976 @prindex @code{sscanf}
3977 On various old systems, e.g., HP-UX 9, @code{sscanf} requires that its
3978 input string be writable (though it doesn't actually change it).  This
3979 can be a problem when using @command{gcc} since it normally puts
3980 constant strings in read-only memory
3981 (@pxref{Incompatibilities, Incompatibilities of GCC, , gcc, Using and
3982 Porting the @acronym{GNU} Compiler Collection}).  Apparently in some cases even
3983 having format strings read-only can be a problem.
3985 @item @code{strerror_r}
3986 @c @fuindex strerror_r
3987 @prindex @code{strerror_r}
3988 Posix specifies that @code{strerror_r} returns an @code{int}, but many
3989 systems (e.g., @acronym{GNU} C Library version 2.2.4) provide a
3990 different version returning a @code{char *}.  @code{AC_FUNC_STRERROR_R}
3991 can detect which is in use (@pxref{Particular Functions}).
3993 @item @code{strnlen}
3994 @c @fuindex strnlen
3995 @prindex @code{strnlen}
3996 @acronym{AIX} 4.3 provides a broken version which produces the
3997 following results:
3999 @example
4000 strnlen ("foobar", 0) = 0
4001 strnlen ("foobar", 1) = 3
4002 strnlen ("foobar", 2) = 2
4003 strnlen ("foobar", 3) = 1
4004 strnlen ("foobar", 4) = 0
4005 strnlen ("foobar", 5) = 6
4006 strnlen ("foobar", 6) = 6
4007 strnlen ("foobar", 7) = 6
4008 strnlen ("foobar", 8) = 6
4009 strnlen ("foobar", 9) = 6
4010 @end example
4012 @item @code{sysconf}
4013 @c @fuindex sysconf
4014 @prindex @code{sysconf}
4015 @code{_SC_PAGESIZE} is standard, but some older systems (e.g., HP-UX
4016 9) have @code{_SC_PAGE_SIZE} instead.  This can be tested with
4017 @code{#ifdef}.
4019 @item @code{unlink}
4020 @c @fuindex unlink
4021 @prindex @code{unlink}
4022 The Posix spec says that @code{unlink} causes the given file to be
4023 removed only after there are no more open file handles for it.  Some
4024 non-Posix hosts have trouble with this requirement, though,
4025 and some @acronym{DOS} variants even corrupt the file system.
4027 @item @code{unsetenv}
4028 @c @fuindex unsetenv
4029 @prindex @code{unsetenv}
4030 On MinGW, @code{unsetenv} is not available, but a variable @samp{FOO}
4031 can be removed with a call @code{putenv ("FOO=")}, as described under
4032 @code{putenv} above.
4034 @item @code{va_copy}
4035 @c @fuindex va_copy
4036 @prindex @code{va_copy}
4037 The C99 standard provides @code{va_copy} for copying
4038 @code{va_list} variables.  It may be available in older environments
4039 too, though possibly as @code{__va_copy} (e.g., @command{gcc} in strict
4040 pre-C99 mode).  These can be tested with @code{#ifdef}.  A fallback to
4041 @code{memcpy (&dst, &src, sizeof (va_list))} will give maximum
4042 portability.
4044 @item @code{va_list}
4045 @c @fuindex va_list
4046 @prindex @code{va_list}
4047 @code{va_list} is not necessarily just a pointer.  It can be a
4048 @code{struct} (e.g., @command{gcc} on Alpha), which means @code{NULL} is
4049 not portable.  Or it can be an array (e.g., @command{gcc} in some
4050 PowerPC configurations), which means as a function parameter it can be
4051 effectively call-by-reference and library routines might modify the
4052 value back in the caller (e.g., @code{vsnprintf} in the @acronym{GNU} C Library
4053 2.1).
4055 @item Signed @code{>>}
4056 Normally the C @code{>>} right shift of a signed type replicates the
4057 high bit, giving a so-called ``arithmetic'' shift.  But care should be
4058 taken since Standard C doesn't require that behavior.  On those
4059 few processors without a native arithmetic shift (for instance Cray
4060 vector systems) zero bits may be shifted in, the same as a shift of an
4061 unsigned type.
4063 @item Integer @code{/}
4064 C divides signed integers by truncating their quotient toward zero,
4065 yielding the same result as Fortran.  However, before C99 the standard
4066 allowed C implementations to take the floor or ceiling of the quotient
4067 in some cases.  Hardly any implementations took advantage of this
4068 freedom, though, and it's probably not worth worrying about this issue
4069 nowadays.
4070 @end table
4073 @node Particular Functions
4074 @subsection Particular Function Checks
4075 @cindex Function, checking
4077 These macros check for particular C functions---whether they exist, and
4078 in some cases how they respond when given certain arguments.
4080 @defmac AC_FUNC_ALLOCA
4081 @acindex{FUNC_ALLOCA}
4082 @cvindex C_ALLOCA
4083 @cvindex HAVE_ALLOCA_H
4084 @ovindex ALLOCA
4085 @c @fuindex alloca
4086 @prindex @code{alloca}
4087 @hdrindex{alloca.h}
4088 Check how to get @code{alloca}.  Tries to get a builtin version by
4089 checking for @file{alloca.h} or the predefined C preprocessor macros
4090 @code{__GNUC__} and @code{_AIX}.  If this macro finds @file{alloca.h},
4091 it defines @code{HAVE_ALLOCA_H}.
4093 If those attempts fail, it looks for the function in the standard C
4094 library.  If any of those methods succeed, it defines
4095 @code{HAVE_ALLOCA}.  Otherwise, it sets the output variable
4096 @code{ALLOCA} to @samp{$@{LIBOBJDIR@}alloca.o} and defines
4097 @code{C_ALLOCA} (so programs can periodically call @samp{alloca (0)} to
4098 garbage collect).  This variable is separate from @code{LIBOBJS} so
4099 multiple programs can share the value of @code{ALLOCA} without needing
4100 to create an actual library, in case only some of them use the code in
4101 @code{LIBOBJS}.  The @samp{$@{LIBOBJDIR@}} prefix serves the same
4102 purpose as in @code{LIBOBJS} (@pxref{AC_LIBOBJ vs LIBOBJS}).
4104 This macro does not try to get @code{alloca} from the System V R3
4105 @file{libPW} or the System V R4 @file{libucb} because those libraries
4106 contain some incompatible functions that cause trouble.  Some versions
4107 do not even contain @code{alloca} or contain a buggy version.  If you
4108 still want to use their @code{alloca}, use @code{ar} to extract
4109 @file{alloca.o} from them instead of compiling @file{alloca.c}.
4111 Source files that use @code{alloca} should start with a piece of code
4112 like the following, to declare it properly.
4114 @example
4115 @group
4116 #if HAVE_ALLOCA_H
4117 # include <alloca.h>
4118 #elif defined __GNUC__
4119 # define alloca __builtin_alloca
4120 #elif defined _AIX
4121 # define alloca __alloca
4122 #elif defined _MSC_VER
4123 # include <malloc.h>
4124 # define alloca _alloca
4125 #else
4126 # include <stddef.h>
4127 # ifdef  __cplusplus
4128 extern "C"
4129 # endif
4130 void *alloca (size_t);
4131 #endif
4132 @end group
4133 @end example
4134 @end defmac
4136 @defmac AC_FUNC_CHOWN
4137 @acindex{FUNC_CHOWN}
4138 @c @fuindex chown
4139 @prindex @code{chown}
4140 If the @code{chown} function is available and works (in particular, it
4141 should accept @option{-1} for @code{uid} and @code{gid}), define
4142 @code{HAVE_CHOWN}.
4143 @end defmac
4146 @defmac AC_FUNC_CLOSEDIR_VOID
4147 @acindex{FUNC_CLOSEDIR_VOID}
4148 @cvindex CLOSEDIR_VOID
4149 @c @fuindex closedir
4150 @prindex @code{closedir}
4151 If the @code{closedir} function does not return a meaningful value,
4152 define @code{CLOSEDIR_VOID}.  Otherwise, callers ought to check its
4153 return value for an error indicator.
4155 Currently this test is implemented by running a test program.  When
4156 cross compiling the pessimistic assumption that @code{closedir} does not
4157 return a meaningful value is made.
4158 @end defmac
4160 @defmac AC_FUNC_ERROR_AT_LINE
4161 @acindex{FUNC_ERROR_AT_LINE}
4162 @c @fuindex error_at_line
4163 @prindex @code{error_at_line}
4164 If the @code{error_at_line} function is not found, require an
4165 @code{AC_LIBOBJ} replacement of @samp{error}.
4166 @end defmac
4168 @defmac AC_FUNC_FNMATCH
4169 @acindex{FUNC_FNMATCH}
4170 @c @fuindex fnmatch
4171 @prindex @code{fnmatch}
4172 If the @code{fnmatch} function conforms to Posix, define
4173 @code{HAVE_FNMATCH}.  Detect common implementation bugs, for example,
4174 the bugs in Solaris 2.4.
4176 Note that for historical reasons, contrary to the other specific
4177 @code{AC_FUNC} macros, @code{AC_FUNC_FNMATCH} does not replace a
4178 broken/missing @code{fnmatch}.  See @code{AC_REPLACE_FNMATCH} below.
4179 @end defmac
4181 @defmac AC_FUNC_FNMATCH_GNU
4182 @acindex{FUNC_FNMATCH_GNU}
4183 @c @fuindex fnmatch
4184 @prindex @code{fnmatch}
4185 Behave like @code{AC_REPLACE_FNMATCH} (@emph{replace}) but also test
4186 whether @code{fnmatch} supports @acronym{GNU} extensions.  Detect common
4187 implementation bugs, for example, the bugs in the @acronym{GNU} C
4188 Library 2.1.
4189 @end defmac
4191 @defmac AC_FUNC_FORK
4192 @acindex{FUNC_FORK}
4193 @cvindex HAVE_VFORK_H
4194 @cvindex HAVE_WORKING_FORK
4195 @cvindex HAVE_WORKING_VFORK
4196 @cvindex vfork
4197 @c @fuindex fork
4198 @prindex @code{fork}
4199 @c @fuindex vfork
4200 @prindex @code{vfork}
4201 @hdrindex{vfork.h}
4202 This macro checks for the @code{fork} and @code{vfork} functions.  If a
4203 working @code{fork} is found, define @code{HAVE_WORKING_FORK}.  This macro
4204 checks whether @code{fork} is just a stub by trying to run it.
4206 If @file{vfork.h} is found, define @code{HAVE_VFORK_H}.  If a working
4207 @code{vfork} is found, define @code{HAVE_WORKING_VFORK}.  Otherwise,
4208 define @code{vfork} to be @code{fork} for backward compatibility with
4209 previous versions of @command{autoconf}.  This macro checks for several known
4210 errors in implementations of @code{vfork} and considers the system to not
4211 have a working @code{vfork} if it detects any of them.  It is not considered
4212 to be an implementation error if a child's invocation of @code{signal}
4213 modifies the parent's signal handler, since child processes rarely change
4214 their signal handlers.
4216 Since this macro defines @code{vfork} only for backward compatibility with
4217 previous versions of @command{autoconf} you're encouraged to define it
4218 yourself in new code:
4219 @example
4220 @group
4221 #if !HAVE_WORKING_VFORK
4222 # define vfork fork
4223 #endif
4224 @end group
4225 @end example
4226 @end defmac
4228 @defmac AC_FUNC_FSEEKO
4229 @acindex{FUNC_FSEEKO}
4230 @cvindex _LARGEFILE_SOURCE
4231 @c @fuindex fseeko
4232 @prindex @code{fseeko}
4233 If the @code{fseeko} function is available, define @code{HAVE_FSEEKO}.
4234 Define @code{_LARGEFILE_SOURCE} if necessary to make the prototype
4235 visible on some systems (e.g., glibc 2.2).  Otherwise linkage problems
4236 may occur when compiling with @code{AC_SYS_LARGEFILE} on
4237 largefile-sensitive systems where @code{off_t} does not default to a
4238 64bit entity.
4239 @end defmac
4241 @defmac AC_FUNC_GETGROUPS
4242 @acindex{FUNC_GETGROUPS}
4243 @ovindex GETGROUPS_LIBS
4244 @c @fuindex getgroups
4245 @prindex @code{getgroups}
4246 If the @code{getgroups} function is available and works (unlike on
4247 Ultrix 4.3, where @samp{getgroups (0, 0)} always fails), define
4248 @code{HAVE_GETGROUPS}.  Set @code{GETGROUPS_LIBS} to any libraries
4249 needed to get that function.  This macro runs @code{AC_TYPE_GETGROUPS}.
4250 @end defmac
4252 @defmac AC_FUNC_GETLOADAVG
4253 @acindex{FUNC_GETLOADAVG}
4254 @cvindex SVR4
4255 @cvindex DGUX
4256 @cvindex UMAX
4257 @cvindex UMAX4_3
4258 @cvindex HAVE_NLIST_H
4259 @cvindex NLIST_NAME_UNION
4260 @cvindex GETLODAVG_PRIVILEGED
4261 @cvindex NEED_SETGID
4262 @cvindex C_GETLOADAVG
4263 @ovindex LIBOBJS
4264 @ovindex NEED_SETGID
4265 @ovindex KMEM_GROUP
4266 @ovindex GETLOADAVG_LIBS
4267 @c @fuindex getloadavg
4268 @prindex @code{getloadavg}
4269 Check how to get the system load averages.  To perform its tests
4270 properly, this macro needs the file @file{getloadavg.c}; therefore, be
4271 sure to set the @code{AC_LIBOBJ} replacement directory properly (see
4272 @ref{Generic Functions}, @code{AC_CONFIG_LIBOBJ_DIR}).
4274 If the system has the @code{getloadavg} function, define
4275 @code{HAVE_GETLOADAVG}, and set @code{GETLOADAVG_LIBS} to any libraries
4276 necessary to get that function.  Also add @code{GETLOADAVG_LIBS} to
4277 @code{LIBS}.  Otherwise, require an @code{AC_LIBOBJ} replacement for
4278 @samp{getloadavg} with source code in @file{@var{dir}/getloadavg.c}, and
4279 possibly define several other C preprocessor macros and output
4280 variables:
4282 @enumerate
4283 @item
4284 Define @code{C_GETLOADAVG}.
4286 @item
4287 Define @code{SVR4}, @code{DGUX}, @code{UMAX}, or @code{UMAX4_3} if on
4288 those systems.
4290 @item
4291 @hdrindex{nlist.h}
4292 If @file{nlist.h} is found, define @code{HAVE_NLIST_H}.
4294 @item
4295 If @samp{struct nlist} has an @samp{n_un.n_name} member, define
4296 @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}.  The obsolete symbol
4297 @code{NLIST_NAME_UNION} is still defined, but do not depend upon it.
4299 @item
4300 Programs may need to be installed setgid (or setuid) for
4301 @code{getloadavg} to work.  In this case, define
4302 @code{GETLOADAVG_PRIVILEGED}, set the output variable @code{NEED_SETGID}
4303 to @samp{true} (and otherwise to @samp{false}), and set
4304 @code{KMEM_GROUP} to the name of the group that should own the installed
4305 program.
4306 @end enumerate
4307 @end defmac
4309 @defmac AC_FUNC_GETMNTENT
4310 @acindex{FUNC_GETMNTENT}
4311 @cvindex HAVE_GETMNTENT
4312 @c @fuindex getmntent
4313 @prindex @code{getmntent}
4314 Check for @code{getmntent} in the standard C library, and then in the
4315 @file{sun}, @file{seq}, and @file{gen} libraries, for @sc{unicos},
4316 @sc{irix} 4, @sc{ptx}, and UnixWare, respectively.  Then, if
4317 @code{getmntent} is available, define @code{HAVE_GETMNTENT}.
4318 @end defmac
4320 @defmac AC_FUNC_GETPGRP
4321 @acindex{FUNC_GETPGRP}
4322 @cvindex GETPGRP_VOID
4323 @c @fuindex getpgid
4324 @c @fuindex getpgrp
4325 @prindex @code{getpgid}
4326 @prindex @code{getpgrp}
4327 Define @code{GETPGRP_VOID} if it is an error to pass 0 to
4328 @code{getpgrp}; this is the Posix behavior.  On older @acronym{BSD}
4329 systems, you must pass 0 to @code{getpgrp}, as it takes an argument and
4330 behaves like Posix's @code{getpgid}.
4332 @example
4333 #if GETPGRP_VOID
4334   pid = getpgrp ();
4335 #else
4336   pid = getpgrp (0);
4337 #endif
4338 @end example
4340 This macro does not check whether
4341 @code{getpgrp} exists at all; if you need to work in that situation,
4342 first call @code{AC_CHECK_FUNC} for @code{getpgrp}.
4343 @end defmac
4345 @defmac AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
4346 @acindex{FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK}
4347 @cvindex LSTAT_FOLLOWS_SLASHED_SYMLINK
4348 @c @fuindex lstat
4349 @prindex @code{lstat}
4350 If @file{link} is a symbolic link, then @code{lstat} should treat
4351 @file{link/} the same as @file{link/.}.  However, many older
4352 @code{lstat} implementations incorrectly ignore trailing slashes.
4354 It is safe to assume that if @code{lstat} incorrectly ignores
4355 trailing slashes, then other symbolic-link-aware functions like
4356 @code{unlink} also incorrectly ignore trailing slashes.
4358 If @code{lstat} behaves properly, define
4359 @code{LSTAT_FOLLOWS_SLASHED_SYMLINK}, otherwise require an
4360 @code{AC_LIBOBJ} replacement of @code{lstat}.
4361 @end defmac
4363 @defmac AC_FUNC_MALLOC
4364 @acindex{FUNC_MALLOC}
4365 @cvindex HAVE_MALLOC
4366 @cvindex malloc
4367 @c @fuindex malloc
4368 @prindex @code{malloc}
4369 If the @code{malloc} function is compatible with the @acronym{GNU} C
4370 library @code{malloc} (i.e., @samp{malloc (0)} returns a valid
4371 pointer), define @code{HAVE_MALLOC} to 1.  Otherwise define
4372 @code{HAVE_MALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
4373 @samp{malloc}, and define @code{malloc} to @code{rpl_malloc} so that the
4374 native @code{malloc} is not used in the main project.
4376 Typically, the replacement file @file{malloc.c} should look like (note
4377 the @samp{#undef malloc}):
4379 @verbatim
4380 #if HAVE_CONFIG_H
4381 # include <config.h>
4382 #endif
4383 #undef malloc
4385 #include <sys/types.h>
4387 void *malloc ();
4389 /* Allocate an N-byte block of memory from the heap.
4390    If N is zero, allocate a 1-byte block.  */
4392 void *
4393 rpl_malloc (size_t n)
4395   if (n == 0)
4396     n = 1;
4397   return malloc (n);
4399 @end verbatim
4400 @end defmac
4402 @defmac AC_FUNC_MEMCMP
4403 @acindex{FUNC_MEMCMP}
4404 @ovindex LIBOBJS
4405 @c @fuindex memcmp
4406 @prindex @code{memcmp}
4407 If the @code{memcmp} function is not available, or does not work on
4408 8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16
4409 bytes or more and with at least one buffer not starting on a 4-byte
4410 boundary (such as the one on NeXT x86 OpenStep), require an
4411 @code{AC_LIBOBJ} replacement for @samp{memcmp}.
4412 @end defmac
4414 @defmac AC_FUNC_MBRTOWC
4415 @acindex{FUNC_MBRTOWC}
4416 @cvindex HAVE_MBRTOWC
4417 @c @fuindex mbrtowc
4418 @prindex @code{mbrtowc}
4419 Define @code{HAVE_MBRTOWC} to 1 if the function @code{mbrtowc} and the
4420 type @code{mbstate_t} are properly declared.
4421 @end defmac
4423 @defmac AC_FUNC_MKTIME
4424 @acindex{FUNC_MKTIME}
4425 @ovindex LIBOBJS
4426 @c @fuindex mktime
4427 @prindex @code{mktime}
4428 If the @code{mktime} function is not available, or does not work
4429 correctly, require an @code{AC_LIBOBJ} replacement for @samp{mktime}.
4430 For the purposes of this test, @code{mktime} should conform to the
4431 Posix standard and should be the inverse of
4432 @code{localtime}.
4433 @end defmac
4435 @defmac AC_FUNC_MMAP
4436 @acindex{FUNC_MMAP}
4437 @cvindex HAVE_MMAP
4438 @c @fuindex mmap
4439 @prindex @code{mmap}
4440 If the @code{mmap} function exists and works correctly, define
4441 @code{HAVE_MMAP}.  Only checks private fixed mapping of already-mapped
4442 memory.
4443 @end defmac
4445 @defmac AC_FUNC_OBSTACK
4446 @acindex{FUNC_OBSTACK}
4447 @cvindex HAVE_OBSTACK
4448 @cindex obstack
4449 If the obstacks are found, define @code{HAVE_OBSTACK}, else require an
4450 @code{AC_LIBOBJ} replacement for @samp{obstack}.
4451 @end defmac
4453 @defmac AC_FUNC_REALLOC
4454 @acindex{FUNC_REALLOC}
4455 @cvindex HAVE_REALLOC
4456 @cvindex realloc
4457 @c @fuindex realloc
4458 @prindex @code{realloc}
4459 If the @code{realloc} function is compatible with the @acronym{GNU} C
4460 library @code{realloc} (i.e., @samp{realloc (NULL, 0)} returns a
4461 valid pointer), define @code{HAVE_REALLOC} to 1.  Otherwise define
4462 @code{HAVE_REALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
4463 @samp{realloc}, and define @code{realloc} to @code{rpl_realloc} so that
4464 the native @code{realloc} is not used in the main project.  See
4465 @code{AC_FUNC_MALLOC} for details.
4466 @end defmac
4468 @defmac AC_FUNC_SELECT_ARGTYPES
4469 @acindex{FUNC_SELECT_ARGTYPES}
4470 @cvindex SELECT_TYPE_ARG1
4471 @cvindex SELECT_TYPE_ARG234
4472 @cvindex SELECT_TYPE_ARG5
4473 @c @fuindex select
4474 @prindex @code{select}
4475 Determines the correct type to be passed for each of the
4476 @code{select} function's arguments, and defines those types
4477 in @code{SELECT_TYPE_ARG1}, @code{SELECT_TYPE_ARG234}, and
4478 @code{SELECT_TYPE_ARG5} respectively.  @code{SELECT_TYPE_ARG1} defaults
4479 to @samp{int}, @code{SELECT_TYPE_ARG234} defaults to @samp{int *},
4480 and @code{SELECT_TYPE_ARG5} defaults to @samp{struct timeval *}.
4481 @end defmac
4483 @defmac AC_FUNC_SETPGRP
4484 @acindex{FUNC_SETPGRP}
4485 @cvindex SETPGRP_VOID
4486 @c @fuindex setpgrp
4487 @prindex @code{setpgrp}
4488 If @code{setpgrp} takes no argument (the Posix version), define
4489 @code{SETPGRP_VOID}.  Otherwise, it is the @acronym{BSD} version, which takes
4490 two process IDs as arguments.  This macro does not check whether
4491 @code{setpgrp} exists at all; if you need to work in that situation,
4492 first call @code{AC_CHECK_FUNC} for @code{setpgrp}.
4493 @end defmac
4495 @defmac AC_FUNC_STAT
4496 @defmacx AC_FUNC_LSTAT
4497 @acindex{FUNC_STAT}
4498 @acindex{FUNC_LSTAT}
4499 @cvindex HAVE_STAT_EMPTY_STRING_BUG
4500 @cvindex HAVE_LSTAT_EMPTY_STRING_BUG
4501 @c @fuindex stat
4502 @prindex @code{stat}
4503 @c @fuindex lstat
4504 @prindex @code{lstat}
4505 Determine whether @code{stat} or @code{lstat} have the bug that it
4506 succeeds when given the zero-length file name as argument.  The @code{stat}
4507 and @code{lstat} from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do
4508 this.
4510 If it does, then define @code{HAVE_STAT_EMPTY_STRING_BUG} (or
4511 @code{HAVE_LSTAT_EMPTY_STRING_BUG}) and ask for an @code{AC_LIBOBJ}
4512 replacement of it.
4513 @end defmac
4515 @defmac AC_FUNC_SETVBUF_REVERSED
4516 @acindex{FUNC_SETVBUF_REVERSED}
4517 @cvindex SETVBUF_REVERSED
4518 @c @fuindex setvbuf
4519 @prindex @code{setvbuf}
4520 If @code{setvbuf} takes the buffering type as its second argument and
4521 the buffer pointer as the third, instead of the other way around, define
4522 @code{SETVBUF_REVERSED}.
4523 @end defmac
4525 @defmac AC_FUNC_STRCOLL
4526 @acindex{FUNC_STRCOLL}
4527 @cvindex HAVE_STRCOLL
4528 @c @fuindex strcoll
4529 @prindex @code{strcoll}
4530 If the @code{strcoll} function exists and works correctly, define
4531 @code{HAVE_STRCOLL}.  This does a bit more than
4532 @samp{AC_CHECK_FUNCS(strcoll)}, because some systems have incorrect
4533 definitions of @code{strcoll} that should not be used.
4534 @end defmac
4536 @defmac AC_FUNC_STRTOD
4537 @acindex{FUNC_STRTOD}
4538 @ovindex POW_LIB
4539 @c @fuindex strtod
4540 @prindex @code{strtod}
4541 If the @code{strtod} function does not exist or doesn't work correctly,
4542 ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}.  In this case,
4543 because @file{strtod.c} is likely to need @samp{pow}, set the output
4544 variable @code{POW_LIB} to the extra library needed.
4545 @end defmac
4547 @defmac AC_FUNC_STRERROR_R
4548 @acindex{FUNC_STRERROR_R}
4549 @cvindex HAVE_STRERROR_R
4550 @cvindex HAVE_DECL_STRERROR_R
4551 @cvindex STRERROR_R_CHAR_P
4552 @c @fuindex strerror_r
4553 @prindex @code{strerror_r}
4554 If @code{strerror_r} is available, define @code{HAVE_STRERROR_R}, and if
4555 it is declared, define @code{HAVE_DECL_STRERROR_R}.  If it returns a
4556 @code{char *} message, define @code{STRERROR_R_CHAR_P}; otherwise it
4557 returns an @code{int} error number.  The Thread-Safe Functions option of
4558 Posix requires @code{strerror_r} to return @code{int}, but
4559 many systems (including, for example, version 2.2.4 of the @acronym{GNU} C
4560 Library) return a @code{char *} value that is not necessarily equal to
4561 the buffer argument.
4562 @end defmac
4564 @defmac AC_FUNC_STRFTIME
4565 @acindex{FUNC_STRFTIME}
4566 @cvindex HAVE_STRFTIME
4567 @c @fuindex strftime
4568 @prindex @code{strftime}
4569 Check for @code{strftime} in the @file{intl} library, for SCO Unix.
4570 Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}.
4571 @end defmac
4573 @defmac AC_FUNC_STRNLEN
4574 @acindex{FUNC_STRNLEN}
4575 @cvindex HAVE_STRNLEN
4576 @c @fuindex strnlen
4577 @prindex @code{strnlen}
4578 If the @code{strnlen} function is not available, or is buggy (like the one
4579 from @acronym{AIX} 4.3), require an @code{AC_LIBOBJ} replacement for it.
4580 @end defmac
4582 @defmac AC_FUNC_UTIME_NULL
4583 @acindex{FUNC_UTIME_NULL}
4584 @cvindex HAVE_UTIME_NULL
4585 @c @fuindex utime
4586 @prindex @code{utime}
4587 If @samp{utime (@var{file}, NULL)} sets @var{file}'s timestamp to
4588 the present, define @code{HAVE_UTIME_NULL}.
4589 @end defmac
4591 @defmac AC_FUNC_VPRINTF
4592 @acindex{FUNC_VPRINTF}
4593 @cvindex HAVE_VPRINTF
4594 @cvindex HAVE_DOPRNT
4595 @c @fuindex vprintf
4596 @prindex @code{vprintf}
4597 If @code{vprintf} is found, define @code{HAVE_VPRINTF}.  Otherwise, if
4598 @code{_doprnt} is found, define @code{HAVE_DOPRNT}.  (If @code{vprintf}
4599 is available, you may assume that @code{vfprintf} and @code{vsprintf}
4600 are also available.)
4601 @end defmac
4603 @defmac AC_REPLACE_FNMATCH
4604 @acindex{REPLACE_FNMATCH}
4605 @c @fuindex fnmatch
4606 @prindex @code{fnmatch}
4607 @hdrindex{fnmatch.h}
4608 If the @code{fnmatch} function does not conform to Posix (see
4609 @code{AC_FUNC_FNMATCH}), ask for its @code{AC_LIBOBJ} replacement.
4611 The files @file{fnmatch.c}, @file{fnmatch_loop.c}, and @file{fnmatch_.h}
4612 in the @code{AC_LIBOBJ} replacement directory are assumed to contain a
4613 copy of the source code of @acronym{GNU} @code{fnmatch}.  If necessary,
4614 this source code is compiled as an @code{AC_LIBOBJ} replacement, and the
4615 @file{fnmatch_.h} file is linked to @file{fnmatch.h} so that it can be
4616 included in place of the system @code{<fnmatch.h>}.
4617 @end defmac
4621 @node Generic Functions
4622 @subsection Generic Function Checks
4624 These macros are used to find functions not covered by the ``particular''
4625 test macros.  If the functions might be in libraries other than the
4626 default C library, first call @code{AC_CHECK_LIB} for those libraries.
4627 If you need to check the behavior of a function as well as find out
4628 whether it is present, you have to write your own test for
4629 it (@pxref{Writing Tests}).
4631 @defmac AC_CHECK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
4632 @acindex{CHECK_FUNC}
4633 If C function @var{function} is available, run shell commands
4634 @var{action-if-found}, otherwise @var{action-if-not-found}.  If you just
4635 want to define a symbol if the function is available, consider using
4636 @code{AC_CHECK_FUNCS} instead.  This macro checks for functions with C
4637 linkage even when @code{AC_LANG(C++)} has been called, since C is more
4638 standardized than C++.  (@pxref{Language Choice}, for more information
4639 about selecting the language for checks.)
4640 @end defmac
4642 @defmac AC_CHECK_FUNCS (@var{function}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found})
4643 @acindex{CHECK_FUNCS}
4644 @cvindex HAVE_@var{function}
4645 For each @var{function} enumerated in the blank-or-newline-separated argument
4646 list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
4647 If @var{action-if-found} is given, it is additional shell code to
4648 execute when one of the functions is found.  You can give it a value of
4649 @samp{break} to break out of the loop on the first match.  If
4650 @var{action-if-not-found} is given, it is executed when one of the
4651 functions is not found.
4652 @end defmac
4654 @sp 1
4656 Autoconf follows a philosophy that was formed over the years by those
4657 who have struggled for portability: isolate the portability issues in
4658 specific files, and then program as if you were in a Posix
4659 environment.  Some functions may be missing or unfixable, and your
4660 package must be ready to replace them.
4662 Suitable replacements for many such problem functions are available from
4663 @uref{http://www.gnu.org/software/gnulib/, Gnulib}, which aims to
4664 provide a centralized repository of such portability functions (among
4665 other things).  The source files are available online, under various
4666 licenses, mostly @acronym{GNU} @acronym{GPL} or @acronym{GNU} @acronym{LGPL}.
4668 @defmac AC_LIBOBJ (@var{function})
4669 @acindex{LIBOBJ}
4670 @ovindex LIBOBJS
4671 Specify that @samp{@var{function}.c} must be included in the executables
4672 to replace a missing or broken implementation of @var{function}.
4674 Technically, it adds @samp{@var{function}.$ac_objext} to the output
4675 variable @code{LIBOBJS} if it is not already in, and calls
4676 @code{AC_LIBSOURCE} for @samp{@var{function}.c}.  You should not
4677 directly change @code{LIBOBJS}, since this is not traceable.
4678 @end defmac
4680 @defmac AC_LIBSOURCE (@var{file})
4681 @acindex{LIBSOURCE}
4682 Specify that @var{file} might be needed to compile the project.  If you
4683 need to know what files might be needed by a @file{configure.ac}, you
4684 should trace @code{AC_LIBSOURCE}.  @var{file} must be a literal.
4686 This macro is called automatically from @code{AC_LIBOBJ}, but you must
4687 call it explicitly if you pass a shell variable to @code{AC_LIBOBJ}.  In
4688 that case, since shell variables cannot be traced statically, you must
4689 pass to @code{AC_LIBSOURCE} any possible files that the shell variable
4690 might cause @code{AC_LIBOBJ} to need.  For example, if you want to pass
4691 a variable @code{$foo_or_bar} to @code{AC_LIBOBJ} that holds either
4692 @code{"foo"} or @code{"bar"}, you should do:
4694 @example
4695 AC_LIBSOURCE([foo.c])
4696 AC_LIBSOURCE([bar.c])
4697 AC_LIBOBJ([$foo_or_bar])
4698 @end example
4700 @noindent
4701 There is usually a way to avoid this, however, and you are encouraged to
4702 simply call @code{AC_LIBOBJ} with literal arguments.
4704 Note that this macro replaces the obsolete @code{AC_LIBOBJ_DECL}, with
4705 slightly different semantics: the old macro took the function name,
4706 e.g., @code{foo}, as its argument rather than the file name.
4707 @end defmac
4709 @defmac AC_LIBSOURCES (@var{files})
4710 @acindex{LIBSOURCES}
4711 Like @code{AC_LIBSOURCE}, but accepts one or more @var{files} in a
4712 comma-separated M4 list.  Thus, the above example might be rewritten:
4714 @example
4715 AC_LIBSOURCES([foo.c, bar.c])
4716 AC_LIBOBJ([$foo_or_bar])
4717 @end example
4718 @end defmac
4720 @defmac AC_CONFIG_LIBOBJ_DIR (@var{directory})
4721 @acindex{CONFIG_LIBOBJ_DIR}
4722 Specify that @code{AC_LIBOBJ} replacement files are to be found in
4723 @var{directory}, a name relative to the top level of the
4724 source tree.  The replacement directory defaults to @file{.}, the top
4725 level directory, and the most typical value is @file{lib}, corresponding
4726 to @samp{AC_CONFIG_LIBOBJ_DIR([lib])}.
4728 @command{configure} might need to know the replacement directory for the
4729 following reasons: (i) some checks use the replacement files, (ii) some
4730 macros bypass broken system headers by installing links to the
4731 replacement headers (iii) when used in conjunction with Automake,
4732 within each @file{Makefile}, @var{directory} is used as a relative path
4733 from @code{$(top_srcdir)} to each object named in @code{LIBOBJS} and
4734 @code{LTLIBOBJS}, etc.
4735 @end defmac
4737 @sp 1
4739 It is common to merely check for the existence of a function, and ask
4740 for its @code{AC_LIBOBJ} replacement if missing.  The following macro is
4741 a convenient shorthand.
4743 @defmac AC_REPLACE_FUNCS (@var{function}@dots{})
4744 @acindex{REPLACE_FUNCS}
4745 @ovindex LIBOBJS
4746 Like @code{AC_CHECK_FUNCS}, but uses @samp{AC_LIBOBJ(@var{function})} as
4747 @var{action-if-not-found}.  You can declare your replacement function by
4748 enclosing the prototype in @samp{#if !HAVE_@var{function}}.  If the
4749 system has the function, it probably declares it in a header file you
4750 should be including, so you shouldn't redeclare it lest your declaration
4751 conflict.
4752 @end defmac
4754 @node Header Files
4755 @section Header Files
4756 @cindex Header, checking
4758 The following macros check for the presence of certain C header files.
4759 If there is no macro specifically defined to check for a header file you need,
4760 and you don't need to check for any special properties of
4761 it, then you can use one of the general header-file check macros.
4763 @menu
4764 * Header Portability::          Collected knowledge on common headers
4765 * Particular Headers::          Special handling to find certain headers
4766 * Generic Headers::             How to find other headers
4767 @end menu
4769 @node Header Portability
4770 @subsection Portability of Headers
4771 @cindex Portability of headers
4772 @cindex Header portability
4774 This section tries to collect knowledge about common headers, and the
4775 problems they cause.  By definition, this list will always require
4776 additions.  Please help us keeping it as complete as possible.
4778 @table @asis
4779 @item @file{inttypes.h} vs.@: @file{stdint.h}
4780 @hdrindex{inttypes.h}
4781 @hdrindex{stdint.h}
4782 The C99 standard says that @file{inttypes.h} includes
4783 @file{stdint.h}, so there's no need to include @file{stdint.h}
4784 separately in a standard environment.  Some implementations have
4785 @file{inttypes.h} but not @file{stdint.h} (e.g., Solaris 7), but we don't
4786 know of any implementation that has @file{stdint.h} but not
4787 @file{inttypes.h}.
4789 @item @file{linux/irda.h}
4790 @hdrindex{linux/irda.h}
4791 It requires @file{linux/types.h} and @file{sys/socket.h}.
4793 @item @file{linux/random.h}
4794 @hdrindex{linux/random.h}
4795 It requires @file{linux/types.h}.
4797 @item @file{net/if.h}
4798 @hdrindex{net/if.h}
4799 On Darwin, this file requires that @file{sys/socket.h} be included
4800 beforehand.  One should run:
4802 @example
4803 AC_CHECK_HEADERS([sys/socket.h])
4804 AC_CHECK_HEADERS([net/if.h], [], [],
4805 [#include <stdio.h>
4806 #if STDC_HEADERS
4807 # include <stdlib.h>
4808 # include <stddef.h>
4809 #else
4810 # if HAVE_STDLIB_H
4811 #  include <stdlib.h>
4812 # endif
4813 #endif
4814 #if HAVE_SYS_SOCKET_H
4815 # include <sys/socket.h>
4816 #endif
4818 @end example
4820 @item @file{netinet/if_ether.h}
4821 @hdrindex{netinet/if_ether.h}
4822 On Darwin, this file requires that @file{stdio.h} and
4823 @file{sys/socket.h} be included beforehand.  One should run:
4825 @example
4826 AC_CHECK_HEADERS([sys/socket.h])
4827 AC_CHECK_HEADERS([netinet/if_ether.h], [], [],
4828 [#include <stdio.h>
4829 #if STDC_HEADERS
4830 # include <stdlib.h>
4831 # include <stddef.h>
4832 #else
4833 # if HAVE_STDLIB_H
4834 #  include <stdlib.h>
4835 # endif
4836 #endif
4837 #if HAVE_SYS_SOCKET_H
4838 # include <sys/socket.h>
4839 #endif
4841 @end example
4843 @item @file{stdint.h}
4844 See above, item @file{inttypes.h} vs.@: @file{stdint.h}.
4846 @item @file{stdlib.h}
4847 @hdrindex{stdlib.h}
4848 On many systems (e.g., Darwin), @file{stdio.h} is a prerequisite.
4850 @item @file{sys/mount.h}
4851 @hdrindex{sys/mount.h}
4852 On Free@acronym{BSD} 4.8 on ia32 and using gcc version 2.95.4,
4853 @file{sys/params.h} is a prerequisite.
4855 @item @file{sys/ptem.h}
4856 @hdrindex{sys/ptem.h}
4857 On Solaris 8, @file{sys/stream.h} is a prerequisite.
4859 @item @file{sys/socket.h}
4860 @hdrindex{sys/socket.h}
4861 On Darwin, @file{stdlib.h} is a prerequisite.
4863 @item @file{sys/ucred.h}
4864 @hdrindex{sys/ucred.h}
4865 On HP Tru64 5.1, @file{sys/types.h} is a prerequisite.
4867 @item @file{X11/extensions/scrnsaver.h}
4868 @hdrindex{X11/extensions/scrnsaver.h}
4869 Using XFree86, this header requires @file{X11/Xlib.h}, which is probably
4870 so required that you might not even consider looking for it.
4872 @example
4873 AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], [], [],
4874 [[#include <X11/Xlib.h>
4876 @end example
4877 @end table
4880 @node Particular Headers
4881 @subsection Particular Header Checks
4883 These macros check for particular system header files---whether they
4884 exist, and in some cases whether they declare certain symbols.
4886 @defmac AC_HEADER_DIRENT
4887 @acindex{HEADER_DIRENT}
4888 @cvindex HAVE_DIRENT_H
4889 @cvindex HAVE_NDIR_H
4890 @cvindex HAVE_SYS_DIR_H
4891 @cvindex HAVE_SYS_NDIR_H
4892 @hdrindex{dirent.h}
4893 @hdrindex{sys/ndir.h}
4894 @hdrindex{sys/dir.h}
4895 @hdrindex{ndir.h}
4896 Check for the following header files.  For the first one that is
4897 found and defines @samp{DIR}, define the listed C preprocessor macro:
4899 @multitable {@file{sys/ndir.h}} {@code{HAVE_SYS_NDIR_H}}
4900 @item @file{dirent.h}   @tab @code{HAVE_DIRENT_H}
4901 @item @file{sys/ndir.h} @tab @code{HAVE_SYS_NDIR_H}
4902 @item @file{sys/dir.h}  @tab @code{HAVE_SYS_DIR_H}
4903 @item @file{ndir.h}     @tab @code{HAVE_NDIR_H}
4904 @end multitable
4906 The directory-library declarations in your source code should look
4907 something like the following:
4909 @example
4910 @group
4911 #include <sys/types.h>
4912 #ifdef HAVE_DIRENT_H
4913 # include <dirent.h>
4914 # define NAMLEN(dirent) strlen ((dirent)->d_name)
4915 #else
4916 # define dirent direct
4917 # define NAMLEN(dirent) ((dirent)->d_namlen)
4918 # if HAVE_SYS_NDIR_H
4919 #  include <sys/ndir.h>
4920 # endif
4921 # if HAVE_SYS_DIR_H
4922 #  include <sys/dir.h>
4923 # endif
4924 # if HAVE_NDIR_H
4925 #  include <ndir.h>
4926 # endif
4927 #endif
4928 @end group
4929 @end example
4931 Using the above declarations, the program would declare variables to be
4932 of type @code{struct dirent}, not @code{struct direct}, and would access
4933 the length of a directory entry name by passing a pointer to a
4934 @code{struct dirent} to the @code{NAMLEN} macro.
4936 This macro also checks for the SCO Xenix @file{dir} and @file{x} libraries.
4937 @end defmac
4939 @defmac AC_HEADER_MAJOR
4940 @acindex{HEADER_MAJOR}
4941 @cvindex MAJOR_IN_MKDEV
4942 @cvindex MAJOR_IN_SYSMACROS
4943 @hdrindex{sys/mkdev.h}
4944 @hdrindex{sys/sysmacros.h}
4945 If @file{sys/types.h} does not define @code{major}, @code{minor}, and
4946 @code{makedev}, but @file{sys/mkdev.h} does, define
4947 @code{MAJOR_IN_MKDEV}; otherwise, if @file{sys/sysmacros.h} does, define
4948 @code{MAJOR_IN_SYSMACROS}.
4949 @end defmac
4951 @defmac AC_HEADER_RESOLV
4952 @acindex{HEADER_RESOLV}
4953 @cvindex HAVE_RESOLV_H
4954 @hdrindex{resolv.h}
4955 Checks for header @file{resolv.h}, checking for prerequisites first.
4956 To properly use @file{resolv.h}, your code should contain something like
4957 the following:
4959 @verbatim
4960 #if HAVE_SYS_TYPES_H
4961 #  include <sys/types.h>
4962 #endif
4963 #ifdef HAVE_NETINET_IN_H
4964 #  include <netinet/in.h>   /* inet_ functions / structs */
4965 #endif
4966 #ifdef HAVE_ARPA_NAMESER_H
4967 #  include <arpa/nameser.h> /* DNS HEADER struct */
4968 #endif
4969 #ifdef HAVE_NETDB_H
4970 #  include <netdb.h>
4971 #endif
4972 #include <resolv.h>
4973 @end verbatim
4974 @end defmac
4976 @defmac AC_HEADER_STAT
4977 @acindex{HEADER_STAT}
4978 @cvindex STAT_MACROS_BROKEN
4979 @hdrindex{sys/stat.h}
4980 If the macros @code{S_ISDIR}, @code{S_ISREG}, etc.@: defined in
4981 @file{sys/stat.h} do not work properly (returning false positives),
4982 define @code{STAT_MACROS_BROKEN}.  This is the case on Tektronix UTekV,
4983 Amdahl UTS and Motorola System V/88.
4984 @end defmac
4986 @defmac AC_HEADER_STDBOOL
4987 @acindex{HEADER_STDBOOL}
4988 @cvindex HAVE_STDBOOL_H
4989 @cvindex HAVE__BOOL
4990 @hdrindex{stdbool.h}
4991 @hdrindex{system.h}
4992 If @file{stdbool.h} exists and is conformant to C99, define
4993 @code{HAVE_STDBOOL_H} to 1; if the type @code{_Bool} is defined, define
4994 @code{HAVE__BOOL} to 1.  To fulfill the C99 requirements, your
4995 @file{system.h} could contain the following code:
4997 @verbatim
4998 #if HAVE_STDBOOL_H
4999 # include <stdbool.h>
5000 #else
5001 # if ! HAVE__BOOL
5002 #  ifdef __cplusplus
5003 typedef bool _Bool;
5004 #  else
5005 typedef unsigned char _Bool;
5006 #  endif
5007 # endif
5008 # define bool _Bool
5009 # define false 0
5010 # define true 1
5011 # define __bool_true_false_are_defined 1
5012 #endif
5013 @end verbatim
5015 Alternatively you can construct an output variable that includes only
5016 those headers and definitions needed.  For example:
5018 @verbatim
5019 AC_HEADER_STDBOOL
5020 AC_SUBST([stdbool])
5021 if test "x$ac_cv_header_stdbool_h" = xyes; then
5022   stdbool='
5023 #include <stdbool.h>
5025 else
5026   if test "x$ac_cv_type__Bool" != xyes; then
5027     stdbool='
5028 #ifdef __cplusplus
5029 typedef bool _Bool;
5030 #else
5031 typedef unsigned char _Bool;
5032 #endif
5034   else
5035     stdbool='
5037   fi
5038   stdbool=$stdbool'
5039 #define bool _Bool
5040 #define false 0
5041 #define true 1
5042 #define __bool_true_false_are_defined 1
5045 @end verbatim
5046 @end defmac
5049 @defmac AC_HEADER_STDC
5050 @acindex{HEADER_STDC}
5051 @cvindex STDC_HEADERS
5052 @hdrindex{stdlib.h}
5053 @hdrindex{stdarg.h}
5054 @hdrindex{string.h}
5055 @hdrindex{float.h}
5056 @hdrindex{ctype.h}
5057 Define @code{STDC_HEADERS} if the system has C header files
5058 conforming to @acronym{ANSI} C89 (@acronym{ISO} C90).
5059 Specifically, this macro checks for @file{stdlib.h}, @file{stdarg.h},
5060 @file{string.h}, and @file{float.h}; if the system has those, it
5061 probably has the rest of the C89 header files.  This macro also
5062 checks whether @file{string.h} declares @code{memchr} (and thus
5063 presumably the other @code{mem} functions), whether @file{stdlib.h}
5064 declare @code{free} (and thus presumably @code{malloc} and other related
5065 functions), and whether the @file{ctype.h} macros work on characters
5066 with the high bit set, as the C standard requires.
5068 Nowadays this macro is becoming obsolete.  However, if you use it, your
5069 code can refer to @code{STDC_HEADERS} instead of @code{__STDC__} to
5070 determine whether the system has conforming header files (and probably C
5071 library functions).  This is useful if you worry about portability
5072 to ancient systems that lack C89 header files.
5074 @hdrindex{string.h}
5075 @hdrindex{strings.h}
5076 Nowadays @file{string.h} is part of the C standard and declares functions like
5077 @code{strcpy}, and @file{strings.h} is standardized by Posix and declares
5078 @acronym{BSD} functions like @code{bcopy}; but
5079 historically, string functions were a major sticking point in this area.
5080 If you worry about portability to ancient systems without standard
5081 headers, there is so much variation
5082 that it is probably easier to declare the functions you use than to
5083 figure out exactly what the system header files declare.  Some ancient systems
5084 contain a mix of functions from the C standard and from @acronym{BSD}; some are
5085 mostly standard but lack @samp{memmove}; some define the
5086 @acronym{BSD} functions as macros in @file{string.h} or
5087 @file{strings.h}; some have only the @acronym{BSD} functions but
5088 @file{string.h}; some declare the memory functions in @file{memory.h},
5089 some in @file{string.h}; etc.  It is probably sufficient to check for
5090 one string function and one memory function; if the library has the
5091 standard versions of those then it probably has most of the others.
5092 If you put the following in @file{configure.ac}:
5094 @example
5095 AC_HEADER_STDC
5096 AC_CHECK_FUNCS([strchr memcpy])
5097 @end example
5099 @noindent
5100 then, in your code, you can use declarations like this:
5102 @example
5103 @group
5104 #if STDC_HEADERS
5105 # include <string.h>
5106 #else
5107 # if !HAVE_STRCHR
5108 #  define strchr index
5109 #  define strrchr rindex
5110 # endif
5111 char *strchr (), *strrchr ();
5112 # if !HAVE_MEMCPY
5113 #  define memcpy(d, s, n) bcopy ((s), (d), (n))
5114 #  define memmove(d, s, n) bcopy ((s), (d), (n))
5115 # endif
5116 #endif
5117 @end group
5118 @end example
5120 @noindent
5121 If you use a function like @code{memchr}, @code{memset}, @code{strtok},
5122 or @code{strspn}, which have no @acronym{BSD} equivalent, then macros won't
5123 suffice; you must provide an implementation of each function.  An easy
5124 way to incorporate your implementations only when needed (since the ones
5125 in system C libraries may be hand optimized) is to, taking @code{memchr}
5126 for example, put it in @file{memchr.c} and use
5127 @samp{AC_REPLACE_FUNCS([memchr])}.
5128 @end defmac
5130 @defmac AC_HEADER_SYS_WAIT
5131 @acindex{HEADER_SYS_WAIT}
5132 @cvindex HAVE_SYS_WAIT_H
5133 @hdrindex{sys/wait.h}
5134 If @file{sys/wait.h} exists and is compatible with Posix, define
5135 @code{HAVE_SYS_WAIT_H}.  Incompatibility can occur if @file{sys/wait.h}
5136 does not exist, or if it uses the old @acronym{BSD} @code{union wait} instead
5137 of @code{int} to store a status value.  If @file{sys/wait.h} is not
5138 Posix compatible, then instead of including it, define the
5139 Posix macros with their usual interpretations.  Here is an
5140 example:
5142 @example
5143 @group
5144 #include <sys/types.h>
5145 #if HAVE_SYS_WAIT_H
5146 # include <sys/wait.h>
5147 #endif
5148 #ifndef WEXITSTATUS
5149 # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
5150 #endif
5151 #ifndef WIFEXITED
5152 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
5153 #endif
5154 @end group
5155 @end example
5156 @end defmac
5158 @cvindex _POSIX_VERSION
5159 @hdrindex{unistd.h}
5160 @code{_POSIX_VERSION} is defined when @file{unistd.h} is included on
5161 Posix systems.  If there is no @file{unistd.h}, it is definitely
5162 not a Posix system.  However, some non-Posix systems do
5163 have @file{unistd.h}.
5165 The way to check whether the system supports Posix is:
5167 @example
5168 @group
5169 #if HAVE_UNISTD_H
5170 # include <sys/types.h>
5171 # include <unistd.h>
5172 #endif
5174 #ifdef _POSIX_VERSION
5175 /* Code for Posix systems.  */
5176 #endif
5177 @end group
5178 @end example
5180 @defmac AC_HEADER_TIME
5181 @acindex{HEADER_TIME}
5182 @cvindex TIME_WITH_SYS_TIME
5183 @hdrindex{time.h}
5184 @hdrindex{sys/time.h}
5185 If a program may include both @file{time.h} and @file{sys/time.h},
5186 define @code{TIME_WITH_SYS_TIME}.  On some older systems,
5187 @file{sys/time.h} includes @file{time.h}, but @file{time.h} is not
5188 protected against multiple inclusion, so programs should not explicitly
5189 include both files.  This macro is useful in programs that use, for
5190 example, @code{struct timeval} as well as
5191 @code{struct tm}.  It is best used in conjunction with
5192 @code{HAVE_SYS_TIME_H}, which can be checked for using
5193 @code{AC_CHECK_HEADERS([sys/time.h])}.
5195 @example
5196 @group
5197 #if TIME_WITH_SYS_TIME
5198 # include <sys/time.h>
5199 # include <time.h>
5200 #else
5201 # if HAVE_SYS_TIME_H
5202 #  include <sys/time.h>
5203 # else
5204 #  include <time.h>
5205 # endif
5206 #endif
5207 @end group
5208 @end example
5209 @end defmac
5212 @defmac AC_HEADER_TIOCGWINSZ
5213 @acindex{HEADER_TIOCGWINSZ}
5214 @cvindex GWINSZ_IN_SYS_IOCTL
5215 @hdrindex{sys/ioctl.h}
5216 @hdrindex{termios.h}
5217 @c FIXME: I need clarifications from Jim.
5218 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
5219 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
5220 found in @file{<termios.h>}.
5222 Use:
5224 @example
5225 @group
5226 #if HAVE_TERMIOS_H
5227 # include <termios.h>
5228 #endif
5230 #if GWINSZ_IN_SYS_IOCTL
5231 # include <sys/ioctl.h>
5232 #endif
5233 @end group
5234 @end example
5235 @end defmac
5237 @node Generic Headers
5238 @subsection Generic Header Checks
5240 These macros are used to find system header files not covered by the
5241 ``particular'' test macros.  If you need to check the contents of a header
5242 as well as find out whether it is present, you have to write your own
5243 test for it (@pxref{Writing Tests}).
5245 @defmac AC_CHECK_HEADER (@var{header-file}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5246 @acindex{CHECK_HEADER}
5247 If the system header file @var{header-file} is compilable, execute shell
5248 commands @var{action-if-found}, otherwise execute
5249 @var{action-if-not-found}.  If you just want to define a symbol if the
5250 header file is available, consider using @code{AC_CHECK_HEADERS}
5251 instead.
5253 For compatibility issues with older versions of Autoconf, please read
5254 below.
5255 @end defmac
5257 @defmac AC_CHECK_HEADERS (@var{header-file}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5258 @acindex{CHECK_HEADERS}
5259 @cvindex HAVE_@var{header}
5260 For each given system header file @var{header-file} in the
5261 blank-separated argument list that exists, define
5262 @code{HAVE_@var{header-file}} (in all capitals).  If @var{action-if-found}
5263 is given, it is additional shell code to execute when one of the header
5264 files is found.  You can give it a value of @samp{break} to break out of
5265 the loop on the first match.  If @var{action-if-not-found} is given, it
5266 is executed when one of the header files is not found.
5268 For compatibility issues with older versions of Autoconf, please read
5269 below.
5270 @end defmac
5272 Previous versions of Autoconf merely checked whether the header was
5273 accepted by the preprocessor.  This was changed because the old test was
5274 inappropriate for typical uses.  Headers are typically used to compile,
5275 not merely to preprocess, and the old behavior sometimes accepted
5276 headers that clashed at compile-time.  If you need to check whether a
5277 header is preprocessable, you can use @code{AC_PREPROC_IFELSE}
5278 (@pxref{Running the Preprocessor}).
5280 This scheme, which improves the robustness of the test, also requires
5281 that you make sure that headers that must be included before the
5282 @var{header-file} be part of the @var{includes}, (@pxref{Default
5283 Includes}).  If looking for @file{bar.h}, which requires that
5284 @file{foo.h} be included before if it exists, we suggest the following
5285 scheme:
5287 @verbatim
5288 AC_CHECK_HEADERS([foo.h])
5289 AC_CHECK_HEADERS([bar.h], [], [],
5290 [#if HAVE_FOO_H
5291 # include <foo.h>
5292 # endif
5294 @end verbatim
5296 @node Declarations
5297 @section Declarations
5298 @cindex Declaration, checking
5300 The following macros check for the declaration of variables and
5301 functions.  If there is no macro specifically defined to check for a
5302 symbol you need, then you can use the general macros (@pxref{Generic
5303 Declarations}) or, for more complex tests, you may use
5304 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
5306 @menu
5307 * Particular Declarations::     Macros to check for certain declarations
5308 * Generic Declarations::        How to find other declarations
5309 @end menu
5311 @node Particular Declarations
5312 @subsection Particular Declaration Checks
5314 There are no specific macros for declarations.
5316 @node Generic Declarations
5317 @subsection Generic Declaration Checks
5319 These macros are used to find declarations not covered by the ``particular''
5320 test macros.
5322 @defmac AC_CHECK_DECL (@var{symbol}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5323 @acindex{CHECK_DECL}
5324 If @var{symbol} (a function or a variable) is not declared in
5325 @var{includes} and a declaration is needed, run the shell commands
5326 @var{action-if-not-found}, otherwise @var{action-if-found}.  If no
5327 @var{includes} are specified, the default includes are used
5328 (@pxref{Default Includes}).
5330 This macro actually tests whether it is valid to use @var{symbol} as an
5331 r-value, not if it is really declared, because it is much safer to avoid
5332 introducing extra declarations when they are not needed.
5333 @end defmac
5335 @defmac AC_CHECK_DECLS (@var{symbols}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5336 @acindex{CHECK_DECLS}
5337 @cvindex HAVE_DECL_@var{symbol}
5338 For each of the @var{symbols} (@emph{comma}-separated list), define
5339 @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
5340 @var{symbol} is declared, otherwise to @samp{0}.  If
5341 @var{action-if-not-found} is given, it is additional shell code to
5342 execute when one of the function declarations is needed, otherwise
5343 @var{action-if-found} is executed.
5345 This macro uses an m4 list as first argument:
5346 @example
5347 AC_CHECK_DECLS([strdup])
5348 AC_CHECK_DECLS([strlen])
5349 AC_CHECK_DECLS([malloc, realloc, calloc, free])
5350 @end example
5352 Unlike the other @samp{AC_CHECK_*S} macros, when a @var{symbol} is not
5353 declared, @code{HAVE_DECL_@var{symbol}} is defined to @samp{0} instead
5354 of leaving @code{HAVE_DECL_@var{symbol}} undeclared.  When you are
5355 @emph{sure} that the check was performed, use
5356 @code{HAVE_DECL_@var{symbol}} just like any other result of Autoconf:
5358 @example
5359 #if !HAVE_DECL_SYMBOL
5360 extern char *symbol;
5361 #endif
5362 @end example
5364 @noindent
5365 If the test may have not been performed, however, because it is safer
5366 @emph{not} to declare a symbol than to use a declaration that conflicts
5367 with the system's one, you should use:
5369 @example
5370 #if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC
5371 void *malloc (size_t *s);
5372 #endif
5373 @end example
5375 @noindent
5376 You fall into the second category only in extreme situations: either
5377 your files may be used without being configured, or they are used during
5378 the configuration.  In most cases the traditional approach is enough.
5379 @end defmac
5382 @node Structures
5383 @section Structures
5384 @cindex Structure, checking
5386 The following macros check for the presence of certain members in C
5387 structures.  If there is no macro specifically defined to check for a
5388 member you need, then you can use the general structure-member macros
5389 (@pxref{Generic Structures}) or, for more complex tests, you may use
5390 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
5392 @menu
5393 * Particular Structures::       Macros to check for certain structure members
5394 * Generic Structures::          How to find other structure members
5395 @end menu
5397 @node Particular Structures
5398 @subsection Particular Structure Checks
5400 The following macros check for certain structures or structure members.
5402 @defmac AC_STRUCT_ST_BLKSIZE
5403 @acindex{STRUCT_ST_BLKSIZE}
5404 @cvindex HAVE_STRUCT_STAT_ST_BLKSIZE
5405 @cvindex HAVE_ST_BLKSIZE
5406 If @code{struct stat} contains an @code{st_blksize} member, define
5407 @code{HAVE_STRUCT_STAT_ST_BLKSIZE}.  The former name,
5408 @code{HAVE_ST_BLKSIZE} is to be avoided, as its support will cease in
5409 the future.  This macro is obsoleted, and should be replaced by
5411 @example
5412 AC_CHECK_MEMBERS([struct stat.st_blksize])
5413 @end example
5414 @end defmac
5416 @defmac AC_STRUCT_ST_BLOCKS
5417 @acindex{STRUCT_ST_BLOCKS}
5418 @cvindex HAVE_STRUCT_STAT_ST_BLOCKS
5419 @cvindex HAVE_ST_BLOCKS
5420 @ovindex LIBOBJS
5421 If @code{struct stat} contains an @code{st_blocks} member, define
5422 @code{HAVE_STRUCT_STAT_ST_BLOCKS}.  Otherwise, require an
5423 @code{AC_LIBOBJ} replacement of @samp{fileblocks}.  The former name,
5424 @code{HAVE_ST_BLOCKS} is to be avoided, as its support will cease in the
5425 future.
5426 @end defmac
5428 @defmac AC_STRUCT_ST_RDEV
5429 @acindex{STRUCT_ST_RDEV}
5430 @cvindex HAVE_ST_RDEV
5431 @cvindex HAVE_STRUCT_STAT_ST_RDEV
5432 If @code{struct stat} contains an @code{st_rdev} member, define
5433 @code{HAVE_STRUCT_STAT_ST_RDEV}.  The former name for this macro,
5434 @code{HAVE_ST_RDEV}, is to be avoided as it will cease to be supported
5435 in the future.  Actually, even the new macro is obsolete and should be
5436 replaced by:
5437 @example
5438 AC_CHECK_MEMBERS([struct stat.st_rdev])
5439 @end example
5440 @end defmac
5442 @defmac AC_STRUCT_TM
5443 @acindex{STRUCT_TM}
5444 @cvindex TM_IN_SYS_TIME
5445 @hdrindex{time.h}
5446 @hdrindex{sys/time.h}
5447 If @file{time.h} does not define @code{struct tm}, define
5448 @code{TM_IN_SYS_TIME}, which means that including @file{sys/time.h}
5449 had better define @code{struct tm}.
5450 @end defmac
5452 @defmac AC_STRUCT_TIMEZONE
5453 @acindex{STRUCT_TIMEZONE}
5454 @cvindex HAVE_TM_ZONE
5455 @cvindex HAVE_TZNAME
5456 Figure out how to get the current timezone.  If @code{struct tm} has a
5457 @code{tm_zone} member, define @code{HAVE_STRUCT_TM_TM_ZONE} (and the
5458 obsoleted @code{HAVE_TM_ZONE}).  Otherwise, if the external array
5459 @code{tzname} is found, define @code{HAVE_TZNAME}; if it is declared,
5460 define @code{HAVE_DECL_TZNAME}.
5461 @end defmac
5463 @node Generic Structures
5464 @subsection Generic Structure Checks
5466 These macros are used to find structure members not covered by the
5467 ``particular'' test macros.
5469 @defmac AC_CHECK_MEMBER (@var{aggregate}.@var{member}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5470 @acindex{CHECK_MEMBER}
5471 Check whether @var{member} is a member of the aggregate @var{aggregate}.
5472 If no @var{includes} are specified, the default includes are used
5473 (@pxref{Default Includes}).
5475 @example
5476 AC_CHECK_MEMBER([struct passwd.pw_gecos], [],
5477                 [AC_MSG_ERROR([We need `passwd.pw_gecos'!])],
5478                 [#include <pwd.h>])
5479 @end example
5481 You can use this macro for sub-members:
5483 @example
5484 AC_CHECK_MEMBER(struct top.middle.bot)
5485 @end example
5486 @end defmac
5488 @defmac AC_CHECK_MEMBERS (@var{members}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5489 @acindex{CHECK_MEMBERS}
5490 Check for the existence of each @samp{@var{aggregate}.@var{member}} of
5491 @var{members} using the previous macro.  When @var{member} belongs to
5492 @var{aggregate}, define @code{HAVE_@var{aggregate}_@var{member}} (in all
5493 capitals, with spaces and dots replaced by underscores).  If
5494 @var{action-if-found} is given, it is executed for each of the found
5495 members.  If @var{action-if-not-found} is given, it is executed for each
5496 of the members that could not be found.
5498 This macro uses m4 lists:
5499 @example
5500 AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize])
5501 @end example
5502 @end defmac
5505 @node Types
5506 @section Types
5507 @cindex Types
5508 @cindex C types
5510 The following macros check for C types, either builtin or typedefs.  If
5511 there is no macro specifically defined to check for a type you need, and
5512 you don't need to check for any special properties of it, then you can
5513 use a general type-check macro.
5515 @menu
5516 * Particular Types::            Special handling to find certain types
5517 * Generic Types::               How to find other types
5518 @end menu
5520 @node Particular Types
5521 @subsection Particular Type Checks
5523 @hdrindex{sys/types.h}
5524 @hdrindex{stdlib.h}
5525 These macros check for particular C types in @file{sys/types.h},
5526 @file{stdlib.h} and others, if they exist.
5528 @defmac AC_TYPE_GETGROUPS
5529 @acindex{TYPE_GETGROUPS}
5530 @cvindex GETGROUPS_T
5531 Define @code{GETGROUPS_T} to be whichever of @code{gid_t} or @code{int}
5532 is the base type of the array argument to @code{getgroups}.
5533 @end defmac
5535 @defmac AC_TYPE_MBSTATE_T
5536 @acindex{TYPE_MBSTATE_T}
5537 @cvindex mbstate_t
5538 @hdrindex{wchar.h}
5539 Define @code{HAVE_MBSTATE_T} if @code{<wchar.h>} declares the
5540 @code{mbstate_t} type.  Also, define @code{mbstate_t} to be a type if
5541 @code{<wchar.h>} does not declare it.
5542 @end defmac
5544 @defmac AC_TYPE_MODE_T
5545 @acindex{TYPE_MODE_T}
5546 @cvindex mode_t
5547 Equivalent to @samp{AC_CHECK_TYPE([mode_t], [int])}.
5548 @end defmac
5550 @defmac AC_TYPE_OFF_T
5551 @acindex{TYPE_OFF_T}
5552 @cvindex off_t
5553 Equivalent to @samp{AC_CHECK_TYPE([off_t], [long int])}.
5554 @end defmac
5556 @defmac AC_TYPE_PID_T
5557 @acindex{TYPE_PID_T}
5558 @cvindex pid_t
5559 Equivalent to @samp{AC_CHECK_TYPE([pid_t], [int])}.
5560 @end defmac
5562 @defmac AC_TYPE_SIGNAL
5563 @acindex{TYPE_SIGNAL}
5564 @cvindex RETSIGTYPE
5565 @hdrindex{signal.h}
5566 If @file{signal.h} declares @code{signal} as returning a pointer to a
5567 function returning @code{void}, define @code{RETSIGTYPE} to be
5568 @code{void}; otherwise, define it to be @code{int}.
5570 Define signal handlers as returning type @code{RETSIGTYPE}:
5572 @example
5573 @group
5574 RETSIGTYPE
5575 hup_handler ()
5577 @dots{}
5579 @end group
5580 @end example
5581 @end defmac
5583 @defmac AC_TYPE_SIZE_T
5584 @acindex{TYPE_SIZE_T}
5585 @cvindex size_t
5586 Equivalent to @samp{AC_CHECK_TYPE([size_t], [unsigned int])}.
5587 @end defmac
5589 @defmac AC_TYPE_UID_T
5590 @acindex{TYPE_UID_T}
5591 @cvindex uid_t
5592 @cvindex gid_t
5593 If @code{uid_t} is not defined, define @code{uid_t} to be @code{int} and
5594 @code{gid_t} to be @code{int}.
5595 @end defmac
5597 @node Generic Types
5598 @subsection Generic Type Checks
5600 These macros are used to check for types not covered by the ``particular''
5601 test macros.
5603 @defmac AC_CHECK_TYPE (@var{type}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5604 @acindex{CHECK_TYPE}
5605 Check whether @var{type} is defined.  It may be a compiler builtin type
5606 or defined by the @var{includes} (@pxref{Default Includes}).
5607 @end defmac
5610 @defmac AC_CHECK_TYPES (@var{types}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5611 @acindex{CHECK_TYPES}
5612 For each @var{type} of the @var{types} that is defined, define
5613 @code{HAVE_@var{type}} (in all capitals).  If no @var{includes} are
5614 specified, the default includes are used (@pxref{Default Includes}).  If
5615 @var{action-if-found} is given, it is additional shell code to execute
5616 when one of the types is found.  If @var{action-if-not-found} is given,
5617 it is executed when one of the types is not found.
5619 This macro uses m4 lists:
5620 @example
5621 AC_CHECK_TYPES([ptrdiff_t])
5622 AC_CHECK_TYPES([unsigned long long int, uintmax_t])
5623 @end example
5625 @end defmac
5627 Autoconf, up to 2.13, used to provide to another version of
5628 @code{AC_CHECK_TYPE}, broken by design.  In order to keep backward
5629 compatibility, a simple heuristics, quite safe but not totally, is
5630 implemented.  In case of doubt, read the documentation of the former
5631 @code{AC_CHECK_TYPE}, see @ref{Obsolete Macros}.
5634 @node Compilers and Preprocessors
5635 @section Compilers and Preprocessors
5636 @cindex Compilers
5637 @cindex Preprocessors
5639 @ovindex EXEEXT
5640 All the tests for compilers (@code{AC_PROG_CC}, @code{AC_PROG_CXX},
5641 @code{AC_PROG_F77}) define the output variable @code{EXEEXT} based on
5642 the output of the compiler, typically to the empty string if
5643 Posix and @samp{.exe} if a @acronym{DOS} variant.
5645 @ovindex OBJEXT
5646 They also define the output variable @code{OBJEXT} based on the
5647 output of the compiler, after @file{.c} files have been excluded, typically
5648 to @samp{o} if Posix, @samp{obj} if a @acronym{DOS} variant.
5650 If the compiler being used does not produce executables, the tests fail.  If
5651 the executables can't be run, and cross-compilation is not enabled, they
5652 fail too.  @xref{Manual Configuration}, for more on support for cross
5653 compiling.
5655 @menu
5656 * Specific Compiler Characteristics::  Some portability issues
5657 * Generic Compiler Characteristics::  Language independent tests and features
5658 * C Compiler::                  Checking its characteristics
5659 * C++ Compiler::                Likewise
5660 * Objective C Compiler::        Likewise
5661 * Erlang Compiler and Interpreter::  Likewise
5662 * Fortran Compiler::            Likewise
5663 @end menu
5665 @node Specific Compiler Characteristics
5666 @subsection Specific Compiler Characteristics
5668 Some compilers exhibit different behaviors.
5670 @table @asis
5671 @item Static/Dynamic Expressions
5672 Autoconf relies on a trick to extract one bit of information from the C
5673 compiler: using negative array sizes.  For instance the following
5674 excerpt of a C source demonstrates how to test whether @samp{int}s are 4
5675 bytes wide:
5677 @example
5679 main (void)
5681   static int test_array [sizeof (int) == 4 ? 1 : -1];
5682   test_array [0] = 0;
5683   return 0;
5685 @end example
5687 @noindent
5688 To our knowledge, there is a single compiler that does not support this
5689 trick: the HP C compilers (the real one, not only the ``bundled'') on
5690 HP-UX 11.00.  They incorrectly reject the above program with the diagnostic
5691 ``Variable-length arrays cannot have static storage.''
5692 This bug comes from HP compilers' mishandling of @code{sizeof (int)},
5693 not from the @code{? 1 : -1}, and
5694 Autoconf works around this problem by casting @code{sizeof (int)} to
5695 @code{long int} before comparing it.
5696 @end table
5698 @node Generic Compiler Characteristics
5699 @subsection Generic Compiler Characteristics
5701 @defmac AC_CHECK_SIZEOF (@var{type}, @ovar{unused}, @dvar{includes, default-includes})
5702 @acindex{CHECK_SIZEOF}
5703 Define @code{SIZEOF_@var{type}} (@pxref{Standard Symbols}) to be the
5704 size in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
5705 of 0.  If no @var{includes} are specified, the default includes are used
5706 (@pxref{Default Includes}).  If you provide @var{include}, be sure to
5707 include @file{stdio.h} which is required for this macro to run.
5709 This macro now works even when cross-compiling.  The @var{unused}
5710 argument was used when cross-compiling.
5712 For example, the call
5714 @example
5715 AC_CHECK_SIZEOF([int *])
5716 @end example
5718 @noindent
5719 defines @code{SIZEOF_INT_P} to be 8 on DEC Alpha AXP systems.
5720 @end defmac
5722 @defmac AC_CHECK_ALIGNOF (@var{type}, @dvar{includes, default-includes})
5723 @acindex{CHECK_ALIGNOF}
5724 Define @code{ALIGNOF_@var{type}} (@pxref{Standard Symbols}) to be the
5725 alignment in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
5726 of 0.  If no @var{includes} are specified, the default includes are used
5727 (@pxref{Default Includes}).  If you provide @var{include}, be sure to
5728 include @file{stddef.h} and @file{stdio.h} which are required for this
5729 macro to work correctly.
5730 @end defmac
5732 @defmac AC_LANG_WERROR
5733 @acindex{LANG_WERROR}
5734 Normally Autoconf ignores warnings generated by the compiler, linker, and
5735 preprocessor.  If this macro is used, warnings will be treated as fatal
5736 errors instead for the current language.  This macro is useful when the
5737 results of configuration will be used where warnings are unacceptable; for
5738 instance, if parts of a program are built with the GCC @samp{-Werror}
5739 option.  If the whole program will be built using @samp{-Werror} it is
5740 often simpler to put @samp{-Werror} in the compiler flags (@code{CFLAGS},
5741 etc.).
5742 @end defmac
5744 @node C Compiler
5745 @subsection C Compiler Characteristics
5747 The following macros provide ways to find and exercise a C Compiler.
5748 There are a few constructs that ought to be avoided, but do not deserve
5749 being checked for, since they can easily be worked around.
5751 @table @asis
5752 @item Don't use lines containing solitary backslashes
5753 They tickle a bug in the HP-UX C compiler (checked on HP-UX 10.20,
5754 11.00, and 11i).  When given the following source:
5756 @example
5757 #ifdef __STDC__
5759 * A comment with backslash-newlines in it.  %@{ %@} *\
5762 char str[] = "\\
5763 " A string with backslash-newlines in it %@{ %@} \\
5765 char apostrophe = '\\
5769 #endif
5770 @end example
5772 @noindent
5773 the compiler incorrectly fails with the diagnostics ``Non-terminating
5774 comment at end of file'' and ``Missing @samp{#endif} at end of file.''
5775 Removing the lines with solitary backslashes solves the problem.
5777 @item Don't compile several files at once if output matters to you
5778 Some compilers, such as the HP's, reports the name of the file it is
5779 compiling @emph{when} they are several.  For instance:
5781 @example
5782 $ @kbd{cc a.c b.c}
5783 a.c:
5784 b.c:
5785 @end example
5787 @noindent
5788 This can cause problems if you observe the output of the compiler to
5789 detect failures.  Invoking @samp{cc -c a.c && cc -c b.c && cc -o c a.o
5790 b.o} solves the issue.
5792 @item Don't rely on correct @code{#line} support
5793 On Solaris 8, @command{c89} (Sun WorkShop 6 update 2 C 5.3 Patch
5794 111679-08 2002/05/09)) diagnoses @code{#line} directives whose line
5795 numbers are greater than 32767.  In addition, nothing in Posix
5796 makes this invalid.  That is why Autoconf stopped issuing
5797 @code{#line} directives.
5798 @end table
5800 @defmac AC_PROG_CC (@ovar{compiler-search-list})
5801 @acindex{PROG_CC}
5802 @ovindex CC
5803 @ovindex CFLAGS
5804 Determine a C compiler to use.  If @code{CC} is not already set in the
5805 environment, check for @code{gcc} and @code{cc}, then for other C
5806 compilers.  Set output variable @code{CC} to the name of the compiler
5807 found.
5809 This macro may, however, be invoked with an optional first argument
5810 which, if specified, must be a blank-separated list of C compilers to
5811 search for.  This just gives the user an opportunity to specify an
5812 alternative search list for the C compiler.  For example, if you didn't
5813 like the default order, then you could invoke @code{AC_PROG_CC} like
5814 this:
5816 @example
5817 AC_PROG_CC([gcc cl cc])
5818 @end example
5820 If the C compiler does not handle function prototypes correctly by
5821 default, try to add an option to output variable @code{CC} to make it
5822 so.  This macro tries various options that select standard-conformance
5823 modes on various systems.
5825 After calling this macro you can check whether the C compiler has been
5826 set to accept @acronym{ANSI} C89 (@acronym{ISO} C90); if not, the shell
5827 variable
5828 @code{ac_cv_prog_cc_c89} is set to @samp{no}.  See also
5829 @code{AC_C_PROTOTYPES} below.
5831 If using the @acronym{GNU} C compiler, set shell variable @code{GCC} to
5832 @samp{yes}.  If output variable @code{CFLAGS} was not already set, set
5833 it to @option{-g -O2} for the @acronym{GNU} C compiler (@option{-O2} on systems
5834 where GCC does not accept @option{-g}), or @option{-g} for other compilers.
5835 @end defmac
5837 @defmac AC_PROG_CC_C_O
5838 @acindex{PROG_CC_C_O}
5839 @cvindex NO_MINUS_C_MINUS_O
5840 If the C compiler does not accept the @option{-c} and @option{-o} options
5841 simultaneously, define @code{NO_MINUS_C_MINUS_O}.  This macro actually
5842 tests both the compiler found by @code{AC_PROG_CC}, and, if different,
5843 the first @code{cc} in the path.  The test fails if one fails.  This
5844 macro was created for @acronym{GNU} Make to choose the default C compilation
5845 rule.
5846 @end defmac
5849 @defmac AC_PROG_CPP
5850 @acindex{PROG_CPP}
5851 @ovindex CPP
5852 Set output variable @code{CPP} to a command that runs the
5853 C preprocessor.  If @samp{$CC -E} doesn't work, @file{/lib/cpp} is used.
5854 It is only portable to run @code{CPP} on files with a @file{.c}
5855 extension.
5857 Some preprocessors don't indicate missing include files by the error
5858 status.  For such preprocessors an internal variable is set that causes
5859 other macros to check the standard error from the preprocessor and
5860 consider the test failed if any warnings have been reported.
5861 For most preprocessors, though, warnings do not cause include-file
5862 tests to fail unless @code{AC_PROG_CPP_WERROR} is also specified.
5863 @end defmac
5865 @defmac AC_PROG_CPP_WERROR
5866 @acindex{PROG_CPP_WERROR}
5867 @ovindex CPP
5868 This acts like @code{AC_PROG_CPP}, except it treats warnings from the
5869 preprocessor as errors even if the preprocessor exit status indicates
5870 success.  This is useful for avoiding headers that generate mandatory
5871 warnings, such as deprecation notices.
5872 @end defmac
5875 The following macros check for C compiler or machine architecture
5876 features.  To check for characteristics not listed here, use
5877 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
5878 @code{AC_RUN_IFELSE} (@pxref{Run Time}).
5880 @defmac AC_PROG_CC_STDC
5881 @acindex{PROG_CC_STDC}
5882 If the C compiler cannot compile @acronym{ISO} Standard C (currently
5883 C99), try to add an option to output variable @code{CC} to make it work.
5884 If the compiler does not support C99, fall back to supporting
5885 @acronym{ANSI} C89 (@acronym{ISO} C90).
5887 After calling this macro you can check whether the C compiler has been
5888 set to accept Standard C; if not, the shell variable
5889 @code{ac_cv_prog_cc_stdc} is set to @samp{no}.
5890 @end defmac
5892 @defmac AC_PROG_CC_C89
5893 @acindex{PROG_CC_C89}
5894 If the C compiler is not in @acronym{ANSI} C89 (@acronym{ISO} C90) mode by
5895 default, try to add an option to output variable @code{CC} to make it
5896 so.  This macro tries various options that select @acronym{ANSI} C89 on
5897 some system or another.  It considers the compiler to be in
5898 @acronym{ANSI} C89 mode if it handles function prototypes correctly.
5900 After calling this macro you can check whether the C compiler has been
5901 set to accept @acronym{ANSI} C89; if not, the shell variable
5902 @code{ac_cv_prog_cc_c89} is set to @samp{no}.
5904 This macro is called automatically by @code{AC_PROG_CC}.
5905 @end defmac
5907 @defmac AC_PROG_CC_C99
5908 @acindex{PROG_CC_C99}
5909 If the C compiler is not in C99 mode by default, try to add an
5910 option to output variable @code{CC} to make it so.  This macro tries
5911 various options that select C99 on some system or another.  It
5912 considers the compiler to be in C99 mode if it handles @code{_Bool},
5913 flexible arrays, @code{inline}, @code{long long int}, mixed code and
5914 declarations, named initialization of structs, @code{restrict}, varargs
5915 macros, variable declarations in @code{for} loops and variable length
5916 arrays.
5918 After calling this macro you can check whether the C compiler has been
5919 set to accept C99; if not, the shell variable
5920 @code{ac_cv_prog_cc_c99} is set to @samp{no}.
5921 @end defmac
5923 @defmac AC_C_BACKSLASH_A
5924 @acindex{HAVE_C_BACKSLASH_A}
5925 Define @samp{HAVE_C_BACKSLASH_A} to 1 if the C compiler understands
5926 @samp{\a}.
5927 @end defmac
5929 @defmac AC_C_BIGENDIAN (@ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-unknown})
5930 @acindex{C_BIGENDIAN}
5931 @cvindex WORDS_BIGENDIAN
5932 @cindex Endianness
5933 If words are stored with the most significant byte first (like Motorola
5934 and SPARC CPUs), execute @var{action-if-true}.  If words are stored with
5935 the least significant byte first (like Intel and VAX CPUs), execute
5936 @var{action-if-false}.
5938 This macro runs a test-case if endianness cannot be determined from the
5939 system header files.  When cross-compiling, the test-case is not run but
5940 grep'ed for some magic values.  @var{action-if-unknown} is executed if
5941 the latter case fails to determine the byte sex of the host system.
5943 The default for @var{action-if-true} is to define
5944 @samp{WORDS_BIGENDIAN}.  The default for @var{action-if-false} is to do
5945 nothing.  And finally, the default for @var{action-if-unknown} is to
5946 abort configure and tell the installer which variable he should preset
5947 to bypass this test.
5948 @end defmac
5950 @defmac AC_C_CONST
5951 @acindex{C_CONST}
5952 @cvindex const
5953 If the C compiler does not fully support the @code{const} keyword,
5954 define @code{const} to be empty.  Some C compilers that do
5955 not define @code{__STDC__} do support @code{const}; some compilers that
5956 define @code{__STDC__} do not completely support @code{const}.  Programs
5957 can simply use @code{const} as if every C compiler supported it; for
5958 those that don't, the @file{Makefile} or configuration header file will
5959 define it as empty.
5961 Occasionally installers use a C++ compiler to compile C code, typically
5962 because they lack a C compiler.  This causes problems with @code{const},
5963 because C and C++ treat @code{const} differently.  For example:
5965 @example
5966 const int foo;
5967 @end example
5969 @noindent
5970 is valid in C but not in C++.  These differences unfortunately cannot be
5971 papered over by defining @code{const} to be empty.
5973 If @command{autoconf} detects this situation, it leaves @code{const} alone,
5974 as this generally yields better results in practice.  However, using a
5975 C++ compiler to compile C code is not recommended or supported, and
5976 installers who run into trouble in this area should get a C compiler
5977 like GCC to compile their C code.
5978 @end defmac
5980 @defmac AC_C_RESTRICT
5981 @acindex{C_RESTRICT}
5982 @cvindex restrict
5983 If the C compiler recognizes the @code{restrict} keyword, don't do anything.
5984 If it recognizes only a variant spelling (@code{__restrict},
5985 @code{__restrict__}, or @code{_Restrict}), then define
5986 @code{restrict} to that.
5987 Otherwise, define @code{restrict} to be empty.
5988 Thus, programs may simply use @code{restrict} as if every C compiler
5989 supported it; for those that do not, the @file{Makefile}
5990 or configuration header defines it away.
5992 Although support in C++ for the @code{restrict} keyword is not
5993 required, several C++ compilers do accept the keyword.
5994 This macro works for them, too.
5995 @end defmac
5997 @defmac AC_C_VOLATILE
5998 @acindex{C_VOLATILE}
5999 @cvindex volatile
6000 If the C compiler does not understand the keyword @code{volatile},
6001 define @code{volatile} to be empty.  Programs can simply use
6002 @code{volatile} as if every C compiler supported it; for those that do
6003 not, the @file{Makefile} or configuration header will define it as
6004 empty.
6006 If the correctness of your program depends on the semantics of
6007 @code{volatile}, simply defining it to be empty does, in a sense, break
6008 your code.  However, given that the compiler does not support
6009 @code{volatile}, you are at its mercy anyway.  At least your
6010 program will compile, when it wouldn't before.
6012 In general, the @code{volatile} keyword is a standard C feature, so
6013 you might expect that @code{volatile} is available only when
6014 @code{__STDC__} is defined.  However, Ultrix 4.3's native compiler does
6015 support volatile, but does not define @code{__STDC__}.
6016 @end defmac
6018 @defmac AC_C_INLINE
6019 @acindex{C_INLINE}
6020 @cvindex inline
6021 If the C compiler supports the keyword @code{inline}, do nothing.
6022 Otherwise define @code{inline} to @code{__inline__} or @code{__inline}
6023 if it accepts one of those, otherwise define @code{inline} to be empty.
6024 @end defmac
6026 @defmac AC_C_CHAR_UNSIGNED
6027 @acindex{C_CHAR_UNSIGNED}
6028 @cvindex __CHAR_UNSIGNED__
6029 If the C type @code{char} is unsigned, define @code{__CHAR_UNSIGNED__},
6030 unless the C compiler predefines it.
6031 @end defmac
6033 @defmac AC_C_LONG_DOUBLE
6034 @acindex{C_LONG_DOUBLE}
6035 @cvindex HAVE_LONG_DOUBLE
6036 If the C compiler supports a working @code{long double} type with more
6037 range or precision than the @code{double} type, define
6038 @code{HAVE_LONG_DOUBLE}.
6039 @end defmac
6041 @defmac AC_C_STRINGIZE
6042 @acindex{C_STRINGIZE}
6043 @cvindex HAVE_STRINGIZE
6044 If the C preprocessor supports the stringizing operator, define
6045 @code{HAVE_STRINGIZE}.  The stringizing operator is @samp{#} and is
6046 found in macros such as this:
6048 @example
6049 #define x(y) #y
6050 @end example
6051 @end defmac
6053 @defmac AC_C_TYPEOF
6054 @acindex{C_TYPEOF}
6055 @cvindex HAVE_TYPEOF
6056 @cvindex typeof
6057 If the C compiler supports GCC's @code{typeof} syntax, define
6058 @code{HAVE_TYPEOF}.  If the support is available only via a different
6059 spelling of the keyword (e.g., @code{__typeof__}), define @code{typeof}
6060 to that spelling.
6061 @end defmac
6063 @defmac AC_C_PROTOTYPES
6064 @acindex{C_PROTOTYPES}
6065 @cvindex PROTOTYPES
6066 @cvindex __PROTOTYPES
6067 @cvindex PARAMS
6068 If function prototypes are understood by the compiler (as determined by
6069 @code{AC_PROG_CC}), define @code{PROTOTYPES} and @code{__PROTOTYPES}.
6070 Defining @code{__PROTOTYPES} is for the benefit of
6071 header files that cannot use macros that infringe on user name space.
6072 @end defmac
6074 @defmac AC_PROG_GCC_TRADITIONAL
6075 @acindex{PROG_GCC_TRADITIONAL}
6076 @ovindex CC
6077 Add @option{-traditional} to output variable @code{CC} if using the
6078 @acronym{GNU} C compiler and @code{ioctl} does not work properly without
6079 @option{-traditional}.  That usually happens when the fixed header files
6080 have not been installed on an old system.  Since recent versions of the
6081 @acronym{GNU} C compiler fix the header files automatically when installed,
6082 this macro is becoming obsolete.
6083 @end defmac
6086 @node C++ Compiler
6087 @subsection C++ Compiler Characteristics
6090 @defmac AC_PROG_CXX (@ovar{compiler-search-list})
6091 @acindex{PROG_CXX}
6092 @ovindex CXX
6093 @ovindex CXXFLAGS
6094 Determine a C++ compiler to use.  Check whether the environment variable
6095 @code{CXX} or @code{CCC} (in that order) is set; if so, then set output
6096 variable @code{CXX} to its value.
6098 Otherwise, if the macro is invoked without an argument, then search for
6099 a C++ compiler under the likely names (first @code{g++} and @code{c++}
6100 then other names).  If none of those checks succeed, then as a last
6101 resort set @code{CXX} to @code{g++}.
6103 This macro may, however, be invoked with an optional first argument
6104 which, if specified, must be a blank-separated list of C++ compilers to
6105 search for.  This just gives the user an opportunity to specify an
6106 alternative search list for the C++ compiler.  For example, if you
6107 didn't like the default order, then you could invoke @code{AC_PROG_CXX}
6108 like this:
6110 @example
6111 AC_PROG_CXX([gcc cl KCC CC cxx cc++ xlC aCC c++ g++])
6112 @end example
6114 If using the @acronym{GNU} C++ compiler, set shell variable @code{GXX} to
6115 @samp{yes}.  If output variable @code{CXXFLAGS} was not already set, set
6116 it to @option{-g -O2} for the @acronym{GNU} C++ compiler (@option{-O2} on
6117 systems where G++ does not accept @option{-g}), or @option{-g} for other
6118 compilers.
6119 @end defmac
6121 @defmac AC_PROG_CXXCPP
6122 @acindex{PROG_CXXCPP}
6123 @ovindex CXXCPP
6124 Set output variable @code{CXXCPP} to a command that runs the C++
6125 preprocessor.  If @samp{$CXX -E} doesn't work, @file{/lib/cpp} is used.
6126 It is portable to run @code{CXXCPP} only on files with a @file{.c},
6127 @file{.C}, @file{.cc}, or @file{.cpp} extension.
6129 Some preprocessors don't indicate missing include files by the error
6130 status.  For such preprocessors an internal variable is set that causes
6131 other macros to check the standard error from the preprocessor and
6132 consider the test failed if any warnings have been reported.  However,
6133 it is not known whether such broken preprocessors exist for C++.
6134 @end defmac
6137 @node Objective C Compiler
6138 @subsection Objective C Compiler Characteristics
6141 @defmac AC_PROG_OBJC (@ovar{compiler-search-list})
6142 @acindex{PROG_OBJC}
6143 @ovindex OBJC
6144 @ovindex OBJCFLAGS
6145 Determine an Objective C compiler to use.  If @code{OBJC} is not already
6146 set in the environment, check for Objective C compilers.  Set output
6147 variable @code{OBJC} to the name of the compiler found.
6149 This macro may, however, be invoked with an optional first argument
6150 which, if specified, must be a blank-separated list of Objective C compilers to
6151 search for.  This just gives the user an opportunity to specify an
6152 alternative search list for the Objective C compiler.  For example, if you
6153 didn't like the default order, then you could invoke @code{AC_PROG_OBJC}
6154 like this:
6156 @example
6157 AC_PROG_OBJC([gcc objcc objc])
6158 @end example
6160 If using the @acronym{GNU} Objective C compiler, set shell variable
6161 @code{GOBJC} to @samp{yes}.  If output variable @code{OBJCFLAGS} was not
6162 already set, set it to @option{-g -O2} for the @acronym{GNU} Objective C
6163 compiler (@option{-O2} on systems where @command{gcc} does not accept
6164 @option{-g}), or @option{-g} for other compilers.
6165 @end defmac
6167 @defmac AC_PROG_OBJCCPP
6168 @acindex{PROG_OBJCCPP}
6169 @ovindex OBJCCPP
6170 Set output variable @code{OBJCCPP} to a command that runs the Objective C
6171 preprocessor.  If @samp{$OBJC -E} doesn't work, @file{/lib/cpp} is used.
6172 @end defmac
6175 @node Erlang Compiler and Interpreter
6176 @subsection Erlang Compiler and Interpreter Characteristics
6177 @cindex Erlang
6179 Autoconf defines the following macros for determining paths to the essential
6180 Erlang/OTP programs:
6182 @defmac AC_ERLANG_PATH_ERLC (@ovar{value-if-not-found}, @ovar{path})
6183 @acindex{ERLANG_PATH_ERLC}
6184 @ovindex ERLC
6185 @ovindex ERLCFLAGS
6186 Determine an Erlang compiler to use.  If @code{ERLC} is not already set in the
6187 environment, check for @command{erlc}.  Set output variable @code{ERLC} to the
6188 complete path of the compiler command found.  In addition, if @code{ERLCFLAGS}
6189 is not set in the environment, set it to an empty value.
6191 The two optional arguments have the same meaning as the two last arguments of
6192 macro @code{AC_PROG_PATH} for looking for the @command{erlc} program.  For
6193 example, to look for @command{erlc} only in the @file{/usr/lib/erlang/bin}
6194 directory:
6196 @example
6197 AC_ERLANG_PATH_ERLC([not found], [/usr/lib/erlang/bin])
6198 @end example
6199 @end defmac
6201 @defmac AC_ERLANG_NEED_ERLC (@ovar{path})
6202 @acindex{ERLANG_NEED_ERLC}
6203 A simplified variant of the @code{AC_ERLANG_PATH_ERLC} macro, that prints an
6204 error message and exits the @command{configure} script if the @command{erlc}
6205 program is not found.
6206 @end defmac
6208 @defmac AC_ERLANG_PATH_ERL (@ovar{value-if-not-found}, @ovar{path})
6209 @acindex{ERLANG_PATH_ERL}
6210 @ovindex ERL
6211 Determine an Erlang interpreter to use.  If @code{ERL} is not already set in the
6212 environment, check for @command{erl}.  Set output variable @code{ERL} to the
6213 complete path of the interpreter command found.
6215 The two optional arguments have the same meaning as the two last arguments of
6216 macro @code{AC_PROG_PATH} for looking for the @command{erl} program.  For
6217 example, to look for @command{erl} only in the @file{/usr/lib/erlang/bin}
6218 directory:
6220 @example
6221 AC_ERLANG_PATH_ERL([not found], [/usr/lib/erlang/bin])
6222 @end example
6223 @end defmac
6225 @defmac AC_ERLANG_NEED_ERL (@ovar{path})
6226 @acindex{ERLANG_NEED_ERL}
6227 A simplified variant of the @code{AC_ERLANG_PATH_ERL} macro, that prints an
6228 error message and exits the @command{configure} script if the @command{erl}
6229 program is not found.
6230 @end defmac
6233 @node Fortran Compiler
6234 @subsection Fortran Compiler Characteristics
6235 @cindex Fortran
6236 @cindex F77
6238 The Autoconf Fortran support is divided into two categories: legacy
6239 Fortran 77 macros (@code{F77}), and modern Fortran macros (@code{FC}).
6240 The former are intended for traditional Fortran 77 code, and have output
6241 variables like @code{F77}, @code{FFLAGS}, and @code{FLIBS}.  The latter
6242 are for newer programs that can (or must) compile under the newer
6243 Fortran standards, and have output variables like @code{FC},
6244 @code{FCFLAGS}, and @code{FCLIBS}.
6246 Except for two new macros @code{AC_FC_SRCEXT} and
6247 @code{AC_FC_FREEFORM} (see below), the @code{FC} and @code{F77} macros
6248 behave almost identically, and so they are documented together in this
6249 section.
6252 @defmac AC_PROG_F77 (@ovar{compiler-search-list})
6253 @acindex{PROG_F77}
6254 @ovindex F77
6255 @ovindex FFLAGS
6256 Determine a Fortran 77 compiler to use.  If @code{F77} is not already
6257 set in the environment, then check for @code{g77} and @code{f77}, and
6258 then some other names.  Set the output variable @code{F77} to the name
6259 of the compiler found.
6261 This macro may, however, be invoked with an optional first argument
6262 which, if specified, must be a blank-separated list of Fortran 77
6263 compilers to search for.  This just gives the user an opportunity to
6264 specify an alternative search list for the Fortran 77 compiler.  For
6265 example, if you didn't like the default order, then you could invoke
6266 @code{AC_PROG_F77} like this:
6268 @example
6269 AC_PROG_F77([fl32 f77 fort77 xlf g77 f90 xlf90])
6270 @end example
6272 If using @code{g77} (the @acronym{GNU} Fortran 77 compiler), then
6273 @code{AC_PROG_F77} will set the shell variable @code{G77} to @samp{yes}.
6274 If the output variable @code{FFLAGS} was not already set in the
6275 environment, then set it to @option{-g -02} for @code{g77} (or @option{-O2}
6276 where @code{g77} does not accept @option{-g}).  Otherwise, set
6277 @code{FFLAGS} to @option{-g} for all other Fortran 77 compilers.
6278 @end defmac
6280 @defmac AC_PROG_FC (@ovar{compiler-search-list}, @ovar{dialect})
6281 @acindex{PROG_FC}
6282 @ovindex FC
6283 @ovindex FCFLAGS
6284 Determine a Fortran compiler to use.  If @code{FC} is not already set in
6285 the environment, then @code{dialect} is a hint to indicate what Fortran
6286 dialect to search for; the default is to search for the newest available
6287 dialect.  Set the output variable @code{FC} to the name of the compiler
6288 found.
6290 By default, newer dialects are preferred over older dialects, but if
6291 @code{dialect} is specified then older dialects are preferred starting
6292 with the specified dialect.  @code{dialect} can currently be one of
6293 Fortran 77, Fortran 90, or Fortran 95.  However, this is only a hint of
6294 which compiler @emph{name} to prefer (e.g., @code{f90} or @code{f95}),
6295 and no attempt is made to guarantee that a particular language standard
6296 is actually supported.  Thus, it is preferable that you avoid the
6297 @code{dialect} option, and use AC_PROG_FC only for code compatible with
6298 the latest Fortran standard.
6300 This macro may, alternatively, be invoked with an optional first argument
6301 which, if specified, must be a blank-separated list of Fortran
6302 compilers to search for, just as in @code{AC_PROG_F77}.
6304 If the output variable @code{FCFLAGS} was not already set in the
6305 environment, then set it to @option{-g -02} for @acronym{GNU} @code{g77} (or
6306 @option{-O2} where @code{g77} does not accept @option{-g}).  Otherwise,
6307 set @code{FCFLAGS} to @option{-g} for all other Fortran compilers.
6308 @end defmac
6310 @defmac AC_PROG_F77_C_O
6311 @defmacx AC_PROG_FC_C_O
6312 @acindex{PROG_F77_C_O}
6313 @acindex{PROG_FC_C_O}
6314 @cvindex F77_NO_MINUS_C_MINUS_O
6315 @cvindex FC_NO_MINUS_C_MINUS_O
6316 Test whether the Fortran compiler accepts the options @option{-c} and
6317 @option{-o} simultaneously, and define @code{F77_NO_MINUS_C_MINUS_O} or
6318 @code{FC_NO_MINUS_C_MINUS_O}, respectively, if it does not.
6319 @end defmac
6321 The following macros check for Fortran compiler characteristics.
6322 To check for characteristics not listed here, use
6323 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
6324 @code{AC_RUN_IFELSE} (@pxref{Run Time}), making sure to first set the
6325 current language to Fortran 77 or Fortran via @code{AC_LANG([Fortran 77])}
6326 or @code{AC_LANG(Fortran)} (@pxref{Language Choice}).
6329 @defmac AC_F77_LIBRARY_LDFLAGS
6330 @defmacx AC_FC_LIBRARY_LDFLAGS
6331 @acindex{F77_LIBRARY_LDFLAGS}
6332 @ovindex FLIBS
6333 @acindex{FC_LIBRARY_LDFLAGS}
6334 @ovindex FCLIBS
6335 Determine the linker flags (e.g., @option{-L} and @option{-l}) for the
6336 @dfn{Fortran intrinsic and run-time libraries} that are required to
6337 successfully link a Fortran program or shared library.  The output
6338 variable @code{FLIBS} or @code{FCLIBS} is set to these flags (which
6339 should be included after @code{LIBS} when linking).
6341 This macro is intended to be used in those situations when it is
6342 necessary to mix, e.g., C++ and Fortran source code in a single
6343 program or shared library (@pxref{Mixing Fortran 77 With C and C++, , ,
6344 automake, @acronym{GNU} Automake}).
6346 For example, if object files from a C++ and Fortran compiler must be
6347 linked together, then the C++ compiler/linker must be used for linking
6348 (since special C++-ish things need to happen at link time like calling
6349 global constructors, instantiating templates, enabling exception
6350 support, etc.).
6352 However, the Fortran intrinsic and run-time libraries must be linked in
6353 as well, but the C++ compiler/linker doesn't know by default how to add
6354 these Fortran 77 libraries.  Hence, this macro was created to determine
6355 these Fortran libraries.
6357 The macros @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
6358 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} will probably also be necessary to
6359 link C/C++ with Fortran; see below.
6360 @end defmac
6362 @defmac AC_F77_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
6363 @defmacx AC_FC_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
6364 @acindex{F77_DUMMY_MAIN}
6365 @cvindex F77_DUMMY_MAIN
6366 With many compilers, the Fortran libraries detected by
6367 @code{AC_F77_LIBRARY_LDFLAGS} or @code{AC_FC_LIBRARY_LDFLAGS} provide
6368 their own @code{main} entry function that initializes things like
6369 Fortran I/O, and which then calls a user-provided entry function named
6370 (say) @code{MAIN__} to run the user's program.  The
6371 @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
6372 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros figure out how to deal with
6373 this interaction.
6375 When using Fortran for purely numerical functions (no I/O, etc.)@: often
6376 one prefers to provide one's own @code{main} and skip the Fortran
6377 library initializations.  In this case, however, one may still need to
6378 provide a dummy @code{MAIN__} routine in order to prevent linking errors
6379 on some systems.  @code{AC_F77_DUMMY_MAIN} or @code{AC_FC_DUMMY_MAIN}
6380 detects whether any such routine is @emph{required} for linking, and
6381 what its name is; the shell variable @code{F77_DUMMY_MAIN} or
6382 @code{FC_DUMMY_MAIN} holds this name, @code{unknown} when no solution
6383 was found, and @code{none} when no such dummy main is needed.
6385 By default, @var{action-if-found} defines @code{F77_DUMMY_MAIN} or
6386 @code{FC_DUMMY_MAIN} to the name of this routine (e.g., @code{MAIN__})
6387 @emph{if} it is required.  @ovar{action-if-not-found} defaults to
6388 exiting with an error.
6390 In order to link with Fortran routines, the user's C/C++ program should
6391 then include the following code to define the dummy main if it is
6392 needed:
6394 @example
6395 #ifdef F77_DUMMY_MAIN
6396 #  ifdef __cplusplus
6397      extern "C"
6398 #  endif
6399    int F77_DUMMY_MAIN() @{ return 1; @}
6400 #endif
6401 @end example
6403 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
6405 Note that this macro is called automatically from @code{AC_F77_WRAPPERS}
6406 or @code{AC_FC_WRAPPERS}; there is generally no need to call it
6407 explicitly unless one wants to change the default actions.
6408 @end defmac
6410 @defmac AC_F77_MAIN
6411 @defmacx AC_FC_MAIN
6412 @acindex{F77_MAIN}
6413 @cvindex F77_MAIN
6414 @acindex{FC_MAIN}
6415 @cvindex FC_MAIN
6416 As discussed above, many Fortran libraries allow you to provide an entry
6417 point called (say) @code{MAIN__} instead of the usual @code{main}, which
6418 is then called by a @code{main} function in the Fortran libraries that
6419 initializes things like Fortran I/O@.  The
6420 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros detect whether it is
6421 @emph{possible} to utilize such an alternate main function, and defines
6422 @code{F77_MAIN} and @code{FC_MAIN} to the name of the function.  (If no
6423 alternate main function name is found, @code{F77_MAIN} and @code{FC_MAIN} are
6424 simply defined to @code{main}.)
6426 Thus, when calling Fortran routines from C that perform things like I/O,
6427 one should use this macro and name the "main" function
6428 @code{F77_MAIN} or @code{FC_MAIN} instead of @code{main}.
6429 @end defmac
6431 @defmac AC_F77_WRAPPERS
6432 @defmacx AC_FC_WRAPPERS
6433 @acindex{F77_WRAPPERS}
6434 @cvindex F77_FUNC
6435 @cvindex F77_FUNC_
6436 @acindex{FC_WRAPPERS}
6437 @cvindex FC_FUNC
6438 @cvindex FC_FUNC_
6439 Defines C macros @code{F77_FUNC (name, NAME)}, @code{FC_FUNC (name, NAME)},
6440 @code{F77_FUNC_(name, NAME)}, and @code{FC_FUNC_(name, NAME)} to properly
6441 mangle the names of C/C++ identifiers, and identifiers with underscores,
6442 respectively, so that they match the name-mangling scheme used by the
6443 Fortran compiler.
6445 Fortran is case-insensitive, and in order to achieve this the Fortran
6446 compiler converts all identifiers into a canonical case and format.  To
6447 call a Fortran subroutine from C or to write a C function that is
6448 callable from Fortran, the C program must explicitly use identifiers in
6449 the format expected by the Fortran compiler.  In order to do this, one
6450 simply wraps all C identifiers in one of the macros provided by
6451 @code{AC_F77_WRAPPERS} or @code{AC_FC_WRAPPERS}.  For example, suppose
6452 you have the following Fortran 77 subroutine:
6454 @example
6455       subroutine foobar (x, y)
6456       double precision x, y
6457       y = 3.14159 * x
6458       return
6459       end
6460 @end example
6462 You would then declare its prototype in C or C++ as:
6464 @example
6465 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
6466 #ifdef __cplusplus
6467 extern "C"  /* prevent C++ name mangling */
6468 #endif
6469 void FOOBAR_F77(double *x, double *y);
6470 @end example
6472 Note that we pass both the lowercase and uppercase versions of the
6473 function name to @code{F77_FUNC} so that it can select the right one.
6474 Note also that all parameters to Fortran 77 routines are passed as
6475 pointers (@pxref{Mixing Fortran 77 With C and C++, , , automake, @acronym{GNU}
6476 Automake}).
6478 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
6480 Although Autoconf tries to be intelligent about detecting the
6481 name-mangling scheme of the Fortran compiler, there may be Fortran
6482 compilers that it doesn't support yet.  In this case, the above code
6483 will generate a compile-time error, but some other behavior
6484 (e.g., disabling Fortran-related features) can be induced by checking
6485 whether @code{F77_FUNC} or @code{FC_FUNC} is defined.
6487 Now, to call that routine from a C program, we would do something like:
6489 @example
6491     double x = 2.7183, y;
6492     FOOBAR_F77 (&x, &y);
6494 @end example
6496 If the Fortran identifier contains an underscore (e.g., @code{foo_bar}),
6497 you should use @code{F77_FUNC_} or @code{FC_FUNC_} instead of
6498 @code{F77_FUNC} or @code{FC_FUNC} (with the same arguments).  This is
6499 because some Fortran compilers mangle names differently if they contain
6500 an underscore.
6501 @end defmac
6503 @defmac AC_F77_FUNC (@var{name}, @ovar{shellvar})
6504 @defmacx AC_FC_FUNC (@var{name}, @ovar{shellvar})
6505 @acindex{F77_FUNC}
6506 @acindex{FC_FUNC}
6507 Given an identifier @var{name}, set the shell variable @var{shellvar} to
6508 hold the mangled version @var{name} according to the rules of the
6509 Fortran linker (see also @code{AC_F77_WRAPPERS} or
6510 @code{AC_FC_WRAPPERS}).  @var{shellvar} is optional; if it is not
6511 supplied, the shell variable will be simply @var{name}.  The purpose of
6512 this macro is to give the caller a way to access the name-mangling
6513 information other than through the C preprocessor as above, for example,
6514 to call Fortran routines from some language other than C/C++.
6515 @end defmac
6517 @defmac AC_FC_SRCEXT (@var{ext}, @ovar{action-if-success}, @ovar{action-if-failure})
6518 @acindex{FC_SRCEXT}
6519 By default, the @code{FC} macros perform their tests using a @file{.f}
6520 extension for source-code files.  Some compilers, however, only enable
6521 newer language features for appropriately named files, e.g., Fortran 90
6522 features only for @file{.f90} files.  On the other hand, some other
6523 compilers expect all source files to end in @file{.f} and require
6524 special flags to support other file name extensions.  The
6525 @code{AC_FC_SRCEXT} macro deals with both of these issues.
6527 The @code{AC_FC_SRCEXT} tries to get the @code{FC} compiler to accept files
6528 ending with the extension .@var{ext} (i.e., @var{ext} does @emph{not}
6529 contain the dot).  If any special compiler flags are needed for this, it
6530 stores them in the output variable @code{FCFLAGS_}@var{ext}.  This
6531 extension and these flags are then used for all subsequent @code{FC} tests
6532 (until @code{AC_FC_SRCEXT} is called again).
6534 For example, you would use @code{AC_FC_SRCEXT(f90)} to employ the
6535 @file{.f90} extension in future tests, and it would set a
6536 @code{FCFLAGS_f90} output variable with any extra flags that are needed
6537 to compile such files.
6539 The @code{FCFLAGS_}@var{ext} can @emph{not} be simply absorbed into
6540 @code{FCFLAGS}, for two reasons based on the limitations of some
6541 compilers.  First, only one @code{FCFLAGS_}@var{ext} can be used at a
6542 time, so files with different extensions must be compiled separately.
6543 Second, @code{FCFLAGS_}@var{ext} must appear @emph{immediately} before
6544 the source-code file name when compiling.  So, continuing the example
6545 above, you might compile a @file{foo.f90} file in your Makefile with the
6546 command:
6548 @example
6549 foo.o: foo.f90
6550      $(FC) -c $(FCFLAGS) $(FCFLAGS_f90) foo.f90
6551 @end example
6553 If @code{AC_FC_SRCEXT} succeeds in compiling files with the @var{ext}
6554 extension, it calls @ovar{action-if-success} (defaults to nothing).  If
6555 it fails, and cannot find a way to make the @code{FC} compiler accept such
6556 files, it calls @ovar{action-if-failure} (defaults to exiting with an
6557 error message).
6559 @end defmac
6561 @defmac AC_FC_FREEFORM (@ovar{action-if-success}, @ovar{action-if-failure})
6562 @acindex{FC_FREEFORM}
6564 The @code{AC_FC_FREEFORM} tries to ensure that the Fortran compiler
6565 (@code{$FC}) allows free-format source code (as opposed to the older
6566 fixed-format style from Fortran 77).  If necessary, it may add some
6567 additional flags to @code{FCFLAGS}.
6569 This macro is most important if you are using the default @file{.f}
6570 extension, since many compilers interpret this extension as indicating
6571 fixed-format source unless an additional flag is supplied.  If you
6572 specify a different extension with @code{AC_FC_SRCEXT}, such as
6573 @file{.f90} or @file{.f95}, then @code{AC_FC_FREEFORM} will ordinarily
6574 succeed without modifying @code{FCFLAGS}.
6576 If @code{AC_FC_FREEFORM} succeeds in compiling free-form source, it
6577 calls @ovar{action-if-success} (defaults to nothing).  If it fails, it
6578 calls @ovar{action-if-failure} (defaults to exiting with an error
6579 message).
6580 @end defmac
6582 @node System Services
6583 @section System Services
6585 The following macros check for operating system services or capabilities.
6587 @defmac AC_PATH_X
6588 @acindex{PATH_X}
6589 @evindex XMKMF
6590 @cindex X Window System
6591 Try to locate the X Window System include files and libraries.  If the
6592 user gave the command line options @option{--x-includes=@var{dir}} and
6593 @option{--x-libraries=@var{dir}}, use those directories.
6595 If either or both were not given, get the missing values by running
6596 @code{xmkmf} (or an executable pointed to by the @code{XMKMF}
6597 environment variable) on a trivial @file{Imakefile} and examining the
6598 @file{Makefile} that it produces.  Setting @code{XMKMF} to @samp{false}
6599 will disable this method.
6601 If this method fails to find the X Window System, @command{configure}
6602 will look for the files in several directories where they often reside. 
6603 If either method is successful, set the shell variables
6604 @code{x_includes} and @code{x_libraries} to their locations, unless they
6605 are in directories the compiler searches by default.
6607 If both methods fail, or the user gave the command line option
6608 @option{--without-x}, set the shell variable @code{no_x} to @samp{yes};
6609 otherwise set it to the empty string.
6610 @end defmac
6612 @defmac AC_PATH_XTRA
6613 @acindex{PATH_XTRA}
6614 @ovindex X_CFLAGS
6615 @ovindex X_LIBS
6616 @ovindex X_EXTRA_LIBS
6617 @ovindex X_PRE_LIBS
6618 @cvindex X_DISPLAY_MISSING
6619 An enhanced version of @code{AC_PATH_X}.  It adds the C compiler flags
6620 that X needs to output variable @code{X_CFLAGS}, and the X linker flags
6621 to @code{X_LIBS}.  Define @code{X_DISPLAY_MISSING} if X is not
6622 available.
6624 This macro also checks for special libraries that some systems need in
6625 order to compile X programs.  It adds any that the system needs to
6626 output variable @code{X_EXTRA_LIBS}.  And it checks for special X11R6
6627 libraries that need to be linked with before @option{-lX11}, and adds
6628 any found to the output variable @code{X_PRE_LIBS}.
6630 @c This is an incomplete kludge.  Make a real way to do it.
6631 @c If you need to check for other X functions or libraries yourself, then
6632 @c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
6633 @c @code{LIBS} temporarily, like this: (FIXME - add example)
6634 @end defmac
6636 @defmac AC_SYS_INTERPRETER
6637 @acindex{SYS_INTERPRETER}
6638 Check whether the system supports starting scripts with a line of the
6639 form @samp{#!/bin/sh} to select the interpreter to use for the script.
6640 After running this macro, shell code in @file{configure.ac} can check
6641 the shell variable @code{interpval}; it will be set to @samp{yes}
6642 if the system supports @samp{#!}, @samp{no} if not.
6643 @end defmac
6645 @defmac AC_SYS_LARGEFILE
6646 @acindex{SYS_LARGEFILE}
6647 @cvindex _FILE_OFFSET_BITS
6648 @cvindex _LARGE_FILES
6649 @ovindex CC
6650 @cindex Large file support
6651 @cindex LFS
6652 Arrange for
6653 @uref{http://www.unix-systems.org/version2/whatsnew/lfs20mar.html,
6654 large-file support}.  On some hosts, one must use special compiler
6655 options to build programs that can access large files.  Append any such
6656 options to the output variable @code{CC}.  Define
6657 @code{_FILE_OFFSET_BITS} and @code{_LARGE_FILES} if necessary.
6659 Large-file support can be disabled by configuring with the
6660 @option{--disable-largefile} option.
6662 If you use this macro, check that your program works even when
6663 @code{off_t} is wider than @code{long int}, since this is common when
6664 large-file support is enabled.  For example, it is not correct to print
6665 an arbitrary @code{off_t} value @code{X} with @code{printf ("%ld",
6666 (long int) X)}.
6668 The LFS introduced the @code{fseeko} and @code{ftello} functions to
6669 replace their C counterparts @code{fseek} and @code{ftell} that do not
6670 use @code{off_t}.  Take care to use @code{AC_FUNC_FSEEKO} to make their
6671 prototypes available when using them and large-file support is
6672 enabled.
6673 @end defmac
6675 @defmac AC_SYS_LONG_FILE_NAMES
6676 @acindex{SYS_LONG_FILE_NAMES}
6677 @cvindex HAVE_LONG_FILE_NAMES
6678 If the system supports file names longer than 14 characters, define
6679 @code{HAVE_LONG_FILE_NAMES}.
6680 @end defmac
6682 @defmac AC_SYS_POSIX_TERMIOS
6683 @acindex{SYS_POSIX_TERMIOS}
6684 @cindex Posix termios headers
6685 @cindex termios Posix headers
6686 Check to see if the Posix termios headers and functions are available on the
6687 system.  If so, set the shell variable @code{ac_cv_sys_posix_termios} to
6688 @samp{yes}.  If not, set the variable to @samp{no}.
6689 @end defmac
6691 @node Posix Variants
6692 @section Posix Variants
6694 The following macros check for certain operating systems that need
6695 special treatment for some programs, due to exceptional oddities in
6696 their header files or libraries.  These macros are warts; they will be
6697 replaced by a more systematic approach, based on the functions they make
6698 available or the environments they provide.
6700 @defmac AC_AIX
6701 @acindex{AIX}
6702 @cvindex _ALL_SOURCE
6703 If on @acronym{AIX}, define @code{_ALL_SOURCE}.
6704 Allows the use of some @acronym{BSD}
6705 functions.  Should be called before any macros that run the C compiler.
6706 @end defmac
6708 @defmac AC_GNU_SOURCE
6709 @acindex{GNU_SOURCE}
6710 @cvindex _GNU_SOURCE
6711 If using the @acronym{GNU} C library, define @code{_GNU_SOURCE}.
6712 Allows the use of some @acronym{GNU} functions.  Should be called
6713 before any macros that run the C compiler.
6714 @end defmac
6716 @defmac AC_ISC_POSIX
6717 @acindex{ISC_POSIX}
6718 @ovindex LIBS
6719 For @sc{interactive} Systems Corporation Unix, add @option{-lcposix} to output
6720 variable @code{LIBS} if necessary for Posix facilities.  Call this
6721 after @code{AC_PROG_CC} and before any other macros that use Posix
6722 interfaces.  @sc{interactive} Unix is no longer sold, and Sun says that
6723 they will drop support for it on 2006-07-23, so this macro is becoming
6724 obsolescent.
6725 @end defmac
6727 @defmac AC_MINIX
6728 @acindex{MINIX}
6729 @cvindex _MINIX
6730 @cvindex _POSIX_SOURCE
6731 @cvindex _POSIX_1_SOURCE
6732 If on Minix, define @code{_MINIX} and @code{_POSIX_SOURCE} and define
6733 @code{_POSIX_1_SOURCE} to be 2.  This allows the use of Posix
6734 facilities.  Should be called before any macros that run the C compiler.
6735 @end defmac
6738 @node Erlang Libraries
6739 @section Erlang Libraries
6740 @cindex Erlang, Library, checking
6742 The following macros check for an installation of Erlang/OTP, and for the
6743 presence of certain Erlang libraries.  All those macros require the
6744 configuration of an Erlang interpreter and an Erlang compiler
6745 (@pxref{Erlang Compiler and Interpreter}).
6747 @defmac AC_ERLANG_SUBST_ROOT_DIR
6748 @acindex{ERLANG_SUBST_ROOT_DIR}
6749 @ovindex ERLANG_ROOT_DIR
6751 Set the output variable @code{ERLANG_ROOT_DIR} to the path to the base directory
6752 in which Erlang/OTP is installed (as returned by Erlang's @code{code:root_dir/0}
6753 function).  The result of this test is cached if caching is enabled when running
6754 @command{configure}.
6755 @end defmac
6757 @defmac AC_ERLANG_SUBST_LIB_DIR
6758 @acindex{ERLANG_SUBST_LIB_DIR}
6759 @ovindex ERLANG_LIB_DIR
6761 Set the output variable @code{ERLANG_LIB_DIR} to the path of the library
6762 directory of Erlang/OTP (as returned by Erlang's
6763 @code{code:lib_dir/0} function), which subdirectories each contain an installed
6764 Erlang/OTP library.  The result of this test is cached if caching is enabled
6765 when running @command{configure}.
6766 @end defmac
6768 @defmac AC_ERLANG_CHECK_LIB (@var{library}, @ovar{action-if-found}, @ovar{action-if-not-found})
6769 @acindex{ERLANG_CHECK_LIB}
6770 @ovindex ERLANG_LIB_DIR_@var{library}
6772 Test whether the Erlang/OTP library @var{library} is installed by calling
6773 Erlang's @code{code:lib_dir/1} function.  The result of this test is cached if
6774 caching is enabled when running @command{configure}.  @var{action-if-found} is a
6775 list of shell commands to run if the library is installed;
6776 @var{action-if-not-found} is a list of shell commands to run if it is not.
6777 Additionally, if the library is installed, the output variable
6778 @samp{ERLANG_LIB_DIR_@var{library}} is set to the path to the library
6779 installation directory.  For example, to check if library @code{stdlib} is
6780 installed:
6782 @example
6783 AC_ERLANG_CHECK_LIB([stdlib],
6784   [echo "stdlib is installed in $ERLANG_LIB_DIR_stdlib"],
6785   [AC_MSG_ERROR([stdlib was not found!])])
6786 @end example
6787 @end defmac
6789 In addition to the above macros, which test installed Erlang libraries, the
6790 following macros determine the paths to the directories into which newly built
6791 Erlang libraries are to be installed:
6793 @defmac AC_ERLANG_SUBST_INSTALL_LIB_DIR
6794 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
6795 @ovindex ERLANG_INSTALL_LIB_DIR
6797 Set the @code{ERLANG_INSTALL_LIB_DIR} output variable to the directory into
6798 which every built Erlang library should be installed in a separate subdirectory.
6799 If this variable is not set in the environment when @command{configure} runs,
6800 its default value is @code{$ERLANG_LIB_DIR}, which value is set by the
6801 @code{AC_ERLANG_SUBST_LIB_DIR} macro.
6802 @end defmac
6804 @defmac AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR (@var{library}, @var{version})
6805 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
6806 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
6808 Set the @samp{ERLANG_INSTALL_LIB_DIR_@var{library}} output variable to the
6809 directory into which the built Erlang library @var{library} version
6810 @var{version} should be installed.  If this variable is not set in the
6811 environment when @command{configure} runs, its default value is
6812 @samp{$ERLANG_INSTALL_LIB_DIR/@var{library}-@var{version}}, the value of the
6813 @code{ERLANG_INSTALL_LIB_DIR} variable being set by the
6814 @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR} macro.
6815 @end defmac
6821 @c ========================================================= Writing Tests
6823 @node Writing Tests
6824 @chapter Writing Tests
6826 If the existing feature tests don't do something you need, you have to
6827 write new ones.  These macros are the building blocks.  They provide
6828 ways for other macros to check whether various kinds of features are
6829 available and report the results.
6831 This chapter contains some suggestions and some of the reasons why the
6832 existing tests are written the way they are.  You can also learn a lot
6833 about how to write Autoconf tests by looking at the existing ones.  If
6834 something goes wrong in one or more of the Autoconf tests, this
6835 information can help you understand the assumptions behind them, which
6836 might help you figure out how to best solve the problem.
6838 These macros check the output of the compiler system of the current
6839 language (@pxref{Language Choice}).  They do not cache the results of
6840 their tests for future use (@pxref{Caching Results}), because they don't
6841 know enough about the information they are checking for to generate a
6842 cache variable name.  They also do not print any messages, for the same
6843 reason.  The checks for particular kinds of features call these macros
6844 and do cache their results and print messages about what they're
6845 checking for.
6847 When you write a feature test that could be applicable to more than one
6848 software package, the best thing to do is encapsulate it in a new macro.
6849 @xref{Writing Autoconf Macros}, for how to do that.
6851 @menu
6852 * Language Choice::             Selecting which language to use for testing
6853 * Writing Test Programs::       Forging source files for compilers
6854 * Running the Preprocessor::    Detecting preprocessor symbols
6855 * Running the Compiler::        Detecting language or header features
6856 * Running the Linker::          Detecting library features
6857 * Run Time::                    Testing for run-time features
6858 * Systemology::                 A zoology of operating systems
6859 * Multiple Cases::              Tests for several possible values
6860 @end menu
6862 @node Language Choice
6863 @section Language Choice
6864 @cindex Language
6866 Autoconf-generated @command{configure} scripts check for the C compiler and
6867 its features by default.  Packages that use other programming languages
6868 (maybe more than one, e.g., C and C++) need to test features of the
6869 compilers for the respective languages.  The following macros determine
6870 which programming language is used in the subsequent tests in
6871 @file{configure.ac}.
6873 @defmac AC_LANG (@var{language})
6874 Do compilation tests using the compiler, preprocessor, and file
6875 extensions for the specified @var{language}.
6877 Supported languages are:
6879 @table @samp
6880 @item C
6881 Do compilation tests using @code{CC} and @code{CPP} and use extension
6882 @file{.c} for test programs.  Use compilation flags: @code{CPPFLAGS} with
6883 @code{CPP}, and both @code{CPPFLAGS} and @code{CFLAGS} with @code{CC}.
6885 @item C++
6886 Do compilation tests using @code{CXX} and @code{CXXCPP} and use
6887 extension @file{.C} for test programs.  Use compilation flags:
6888 @code{CPPFLAGS} with @code{CXXPP}, and both @code{CPPFLAGS} and
6889 @code{CXXFLAGS} with @code{CXX}.
6891 @item Fortran 77
6892 Do compilation tests using @code{F77} and use extension @file{.f} for
6893 test programs.  Use compilation flags: @code{FFLAGS}.
6895 @item Fortran
6896 Do compilation tests using @code{FC} and use extension @file{.f} (or
6897 whatever has been set by @code{AC_FC_SRCEXT}) for test programs.  Use
6898 compilation flags: @code{FCFLAGS}.
6900 @item Erlang
6901 @ovindex ERLC
6902 @ovindex ERL
6903 @ovindex ERLCFLAGS
6904 Compile and execute tests using @code{ERLC} and @code{ERL} and use extension
6905 @file{.erl} for test Erlang modules.  Use compilation flags: @code{ERLCFLAGS}.
6907 @item Objective C
6908 Do compilation tests using @code{OBJC} and @code{OBJCCPP} and use
6909 extension @file{.m} for test programs.  Use compilation flags:
6910 @code{CPPFLAGS} with @code{OBJCPP}, and both @code{CPPFLAGS} and
6911 @code{OBJCFLAGS} with @code{OBJC}.
6912 @end table
6913 @end defmac
6915 @defmac AC_LANG_PUSH (@var{language})
6916 @acindex{LANG_PUSH}
6917 Remember the current language (as set by @code{AC_LANG}) on a stack, and
6918 then select the @var{language}.  Use this macro and @code{AC_LANG_POP}
6919 in macros that need to temporarily switch to a particular language.
6920 @end defmac
6922 @defmac AC_LANG_POP (@ovar{language})
6923 @acindex{LANG_POP}
6924 Select the language that is saved on the top of the stack, as set by
6925 @code{AC_LANG_PUSH}, and remove it from the stack.
6927 If given, @var{language} specifies the language we just @emph{quit}.  It
6928 is a good idea to specify it when it's known (which should be the
6929 case@dots{}), since Autoconf will detect inconsistencies.
6931 @example
6932 AC_LANG_PUSH([Fortran 77])
6933 # Perform some tests on Fortran 77.
6934 # @dots{}
6935 AC_LANG_POP([Fortran 77])
6936 @end example
6937 @end defmac
6939 @defmac AC_LANG_ASSERT (@var{language})
6940 @acindex{LANG_ASSERT} Check statically that the current language is
6941 @var{language}.  You should use this in your language specific macros
6942 to avoid that they be called with an inappropriate language.
6944 This macro runs only at @command{autoconf} time, and incurs no cost at
6945 @command{configure} time.  Sadly enough and because Autoconf is a two
6946 layer language @footnote{Because M4 is not aware of Sh code,
6947 especially conditionals, some optimizations that look nice statically
6948 may produce incorrect results at runtime.}, the macros
6949 @code{AC_LANG_PUSH} and @code{AC_LANG_POP} cannot be ``optimizing'',
6950 therefore as much as possible you ought to avoid using them to wrap
6951 your code, rather, require from the user to run the macro with a
6952 correct current language, and check it with @code{AC_LANG_ASSERT}.
6953 And anyway, that may help the user understand she is running a Fortran
6954 macro while expecting a result about her Fortran 77 compiler@dots{}
6955 @end defmac
6958 @defmac AC_REQUIRE_CPP
6959 @acindex{REQUIRE_CPP}
6960 Ensure that whichever preprocessor would currently be used for tests has
6961 been found.  Calls @code{AC_REQUIRE} (@pxref{Prerequisite Macros}) with an
6962 argument of either @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP},
6963 depending on which language is current.
6964 @end defmac
6967 @node Writing Test Programs
6968 @section Writing Test Programs
6970 Autoconf tests follow is common scheme: feeding some program with some
6971 input, and most of the time, feeding a compiler with some source file.
6972 This section is dedicated to these source samples.
6974 @menu
6975 * Guidelines::                  General rules for writing test programs
6976 * Test Functions::              Avoiding pitfalls in test programs
6977 * Generating Sources::          Source program boilerplate
6978 @end menu
6980 @node Guidelines
6981 @subsection Guidelines for Test Programs
6983 The most important rule to follow when writing testing samples is:
6985 @center @emph{Look for realism.}
6987 This motto means that testing samples must be written with the same
6988 strictness as real programs are written.  In particular, you should
6989 avoid ``shortcuts'' and simplifications.
6991 Don't just play with the preprocessor if you want to prepare a
6992 compilation.  For instance, using @command{cpp} to check whether a header is
6993 functional might let your @command{configure} accept a header which will
6994 cause some @emph{compiler} error.  Do not hesitate checking header with
6995 other headers included before, especially required headers.
6997 Make sure the symbols you use are properly defined, i.e., refrain for
6998 simply declaring a function yourself instead of including the proper
6999 header.
7001 Test programs should not write anything to the standard output.  They
7002 should return 0 if the test succeeds, nonzero otherwise, so that success
7003 can be distinguished easily from a core dump or other failure;
7004 segmentation violations and other failures produce a nonzero exit
7005 status.  Test programs should @code{exit}, not @code{return}, from
7006 @code{main}, because on some systems (old Suns, at least) the argument
7007 to @code{return} in @code{main} is ignored.
7009 Test programs can use @code{#if} or @code{#ifdef} to check the values of
7010 preprocessor macros defined by tests that have already run.  For
7011 example, if you call @code{AC_HEADER_STDBOOL}, then later on in
7012 @file{configure.ac} you can have a test program that includes
7013 @file{stdbool.h} conditionally:
7015 @example
7016 @group
7017 #if HAVE_STDBOOL_H
7018 # include <stdbool.h>
7019 #endif
7020 @end group
7021 @end example
7023 If a test program needs to use or create a data file, give it a name
7024 that starts with @file{conftest}, such as @file{conftest.data}.  The
7025 @command{configure} script cleans up by running @samp{rm -f -r conftest*}
7026 after running test programs and if the script is interrupted.
7028 @node Test Functions
7029 @subsection Test Functions
7031 These days it's safe to assume support for function prototypes
7032 (introduced in C89).
7034 Functions that test programs declare should also be conditionalized for
7035 C++, which requires @samp{extern "C"} prototypes.  Make sure to not
7036 include any header files containing clashing prototypes.
7038 @example
7039 #ifdef __cplusplus
7040 extern "C"
7041 #endif
7042 void *valloc (size_t);
7043 @end example
7045 If a test program calls a function with invalid parameters (just to see
7046 whether it exists), organize the program to ensure that it never invokes
7047 that function.  You can do this by calling it in another function that is
7048 never invoked.  You can't do it by putting it after a call to
7049 @code{exit}, because GCC version 2 knows that @code{exit} never returns
7050 and optimizes out any code that follows it in the same block.
7052 If you include any header files, be sure to call the functions
7053 relevant to them with the correct number of arguments, even if they are
7054 just 0, to avoid compilation errors due to prototypes.  GCC version 2
7055 has internal prototypes for several functions that it automatically
7056 inlines; for example, @code{memcpy}.  To avoid errors when checking for
7057 them, either pass them the correct number of arguments or redeclare them
7058 with a different return type (such as @code{char}).
7061 @node Generating Sources
7062 @subsection Generating Sources
7064 Autoconf provides a set of macros that can be used to generate test
7065 source files.  They are written to be language generic, i.e., they
7066 actually depend on the current language (@pxref{Language Choice}) to
7067 ``format'' the output properly.
7070 @defmac AC_LANG_CONFTEST (@var{source})
7071 @acindex{LANG_CONFTEST}
7072 Save the @var{source} text in the current test source file:
7073 @file{conftest.@var{extension}} where the @var{extension} depends on the
7074 current language.
7076 Note that the @var{source} is evaluated exactly once, like regular
7077 Autoconf macro arguments, and therefore (i) you may pass a macro
7078 invocation, (ii) if not, be sure to double quote if needed.
7079 @end defmac
7081 @defmac AC_LANG_SOURCE (@var{source})
7082 @acindex{LANG_SOURCE}
7083 Expands into the @var{source}, with the definition of
7084 all the @code{AC_DEFINE} performed so far.
7085 @end defmac
7087 For instance executing (observe the double quotation!):
7089 @example
7090 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7091 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7092   [Greetings string.])
7093 AC_LANG(C)
7094 AC_LANG_CONFTEST(
7095    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])])
7096 gcc -E -dD -o - conftest.c
7097 @end example
7099 @noindent
7100 results in:
7102 @example
7103 @dots{}
7104 # 1 "conftest.c"
7106 #define PACKAGE_NAME "Hello"
7107 #define PACKAGE_TARNAME "hello"
7108 #define PACKAGE_VERSION "1.0"
7109 #define PACKAGE_STRING "Hello 1.0"
7110 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
7111 #define HELLO_WORLD "Hello, World\n"
7113 const char hw[] = "Hello, World\n";
7114 @end example
7116 When the test language is Fortran or Erlang, the @code{AC_DEFINE} definitions
7117 are not automatically translated into constants in the source code by this
7118 macro.
7120 @defmac AC_LANG_PROGRAM (@var{prologue}, @var{body})
7121 @acindex{LANG_PROGRAM}
7122 Expands into a source file which consists of the @var{prologue}, and
7123 then @var{body} as body of the main function (e.g., @code{main} in
7124 C).  Since it uses @code{AC_LANG_SOURCE}, the features of the latter are
7125 available.
7126 @end defmac
7128 For instance:
7130 @example
7131 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7132 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7133   [Greetings string.])
7134 AC_LANG_CONFTEST(
7135 [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
7136                  [[fputs (hw, stdout);]])])
7137 gcc -E -dD -o - conftest.c
7138 @end example
7140 @noindent
7141 results in:
7143 @example
7144 @dots{}
7145 # 1 "conftest.c"
7147 #define PACKAGE_NAME "Hello"
7148 #define PACKAGE_TARNAME "hello"
7149 #define PACKAGE_VERSION "1.0"
7150 #define PACKAGE_STRING "Hello 1.0"
7151 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
7152 #define HELLO_WORLD "Hello, World\n"
7154 const char hw[] = "Hello, World\n";
7156 main ()
7158 fputs (hw, stdout);
7159   ;
7160   return 0;
7162 @end example
7164 In Erlang tests, the created source file is that of an Erlang module called
7165 @code{conftest} (@file{conftest.erl}).  This module defines and exports at least
7166 one @code{start/0} function, which is called to perform the test.  The
7167 @var{prologue} is optional code that is inserted between the module header and
7168 the @code{start/0} function definition.  @var{body} is the body of the
7169 @code{start/0} function without the final period (@pxref{Run Time}, about
7170 constraints on this function's behaviour).
7172 For instance:
7174 @example
7175 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7176 AC_LANG(Erlang)
7177 AC_LANG_CONFTEST(
7178 [AC_LANG_PROGRAM([[-define(HELLO_WORLD, "Hello, world!").]],
7179                  [[io:format("~s~n", [?HELLO_WORLD])]])])
7180 cat conftest.erl
7181 @end example
7183 @noindent
7184 results in:
7186 @example
7187 -module(conftest).
7188 -export([start/0]).
7189 -define(HELLO_WORLD, "Hello, world!").
7190 start() ->
7191 io:format("~s~n", [?HELLO_WORLD])
7193 @end example
7195 @defmac AC_LANG_CALL (@var{prologue}, @var{function})
7196 @acindex{LANG_CALL}
7197 Expands into a source file which consists of the @var{prologue}, and
7198 then a call to the @var{function} as body of the main function (e.g.,
7199 @code{main} in C).  Since it uses @code{AC_LANG_PROGRAM}, the feature
7200 of the latter are available.
7202 This function will probably be replaced in the future by a version
7203 which would enable specifying the arguments.  The use of this macro is
7204 not encouraged, as it violates strongly the typing system.
7206 This macro cannot be used for Erlang tests.
7207 @end defmac
7209 @defmac AC_LANG_FUNC_LINK_TRY (@var{function})
7210 @acindex{LANG_FUNC_LINK_TRY}
7211 Expands into a source file which uses the @var{function} in the body of
7212 the main function (e.g., @code{main} in C).  Since it uses
7213 @code{AC_LANG_PROGRAM}, the features of the latter are available.
7215 As @code{AC_LANG_CALL}, this macro is documented only for completeness.
7216 It is considered to be severely broken, and in the future will be
7217 removed in favor of actual function calls (with properly typed
7218 arguments).
7220 This macro cannot be used for Erlang tests.
7221 @end defmac
7223 @node Running the Preprocessor
7224 @section Running the Preprocessor
7226 Sometimes one might need to run the preprocessor on some source file.
7227 @emph{Usually it is a bad idea}, as you typically need to @emph{compile}
7228 your project, not merely run the preprocessor on it; therefore you
7229 certainly want to run the compiler, not the preprocessor.  Resist the
7230 temptation of following the easiest path.
7232 Nevertheless, if you need to run the preprocessor, then use
7233 @code{AC_PREPROC_IFELSE}.
7235 The macros described in this section cannot be used for tests in Erlang or
7236 Fortran, since those languages require no preprocessor.
7238 @defmac AC_PREPROC_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7239 @acindex{PREPROC_IFELSE}
7240 Run the preprocessor of the current language (@pxref{Language Choice})
7241 on the @var{input}, run the shell commands @var{action-if-true} on
7242 success, @var{action-if-false} otherwise.  The @var{input} can be made
7243 by @code{AC_LANG_PROGRAM} and friends.
7245 This macro uses @code{CPPFLAGS}, but not @code{CFLAGS}, because
7246 @option{-g}, @option{-O}, etc.@: are not valid options to many C
7247 preprocessors.
7249 It is customary to report unexpected failures with
7250 @code{AC_MSG_FAILURE}.
7251 @end defmac
7253 For instance:
7255 @example
7256 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7257 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7258   [Greetings string.])
7259 AC_PREPROC_IFELSE(
7260    [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
7261                     [[fputs (hw, stdout);]])],
7262    [AC_MSG_RESULT([OK])],
7263    [AC_MSG_FAILURE([unexpected preprocessor failure])])
7264 @end example
7266 @noindent
7267 results in:
7269 @example
7270 checking for gcc... gcc
7271 checking for C compiler default output file name... a.out
7272 checking whether the C compiler works... yes
7273 checking whether we are cross compiling... no
7274 checking for suffix of executables...
7275 checking for suffix of object files... o
7276 checking whether we are using the GNU C compiler... yes
7277 checking whether gcc accepts -g... yes
7278 checking for gcc option to accept ISO C89... none needed
7279 checking how to run the C preprocessor... gcc -E
7281 @end example
7283 @sp 1
7285 The macro @code{AC_TRY_CPP} (@pxref{Obsolete Macros}) used to play the
7286 role of @code{AC_PREPROC_IFELSE}, but double quotes its argument, making
7287 it impossible to use it to elaborate sources.  You are encouraged to
7288 get rid of your old use of the macro @code{AC_TRY_CPP} in favor of
7289 @code{AC_PREPROC_IFELSE}, but, in the first place, are you sure you need
7290 to run the @emph{preprocessor} and not the compiler?
7292 @defmac AC_EGREP_HEADER (@var{pattern}, @var{header-file}, @var{action-if-found}, @ovar{action-if-not-found})
7293 @acindex{EGREP_HEADER}
7294 If the output of running the preprocessor on the system header file
7295 @var{header-file} matches the extended regular expression
7296 @var{pattern}, execute shell commands @var{action-if-found}, otherwise
7297 execute @var{action-if-not-found}.
7298 @end defmac
7300 @defmac AC_EGREP_CPP (@var{pattern}, @var{program}, @ovar{action-if-found}, @ovar{action-if-not-found})
7301 @acindex{EGREP_CPP}
7302 @var{program} is the text of a C or C++ program, on which shell
7303 variable, back quote, and backslash substitutions are performed.  If the
7304 output of running the preprocessor on @var{program} matches the
7305 extended regular expression @var{pattern}, execute shell commands
7306 @var{action-if-found}, otherwise execute @var{action-if-not-found}.
7307 @end defmac
7311 @node Running the Compiler
7312 @section Running the Compiler
7314 To check for a syntax feature of the current language's (@pxref{Language
7315 Choice}) compiler, such as whether it recognizes a certain keyword, or
7316 simply to try some library feature, use @code{AC_COMPILE_IFELSE} to try
7317 to compile a small program that uses that feature.
7319 @defmac AC_COMPILE_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7320 @acindex{COMPILE_IFELSE}
7321 Run the compiler and compilation flags of the current language
7322 (@pxref{Language Choice}) on the @var{input}, run the shell commands
7323 @var{action-if-true} on success, @var{action-if-false} otherwise.  The
7324 @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
7326 It is customary to report unexpected failures with
7327 @code{AC_MSG_FAILURE}.  This macro does not try to link; use
7328 @code{AC_LINK_IFELSE} if you need to do that (@pxref{Running the
7329 Linker}).
7330 @end defmac
7332 @ovindex ERL
7333 For tests in Erlang, the @var{input} must be the source code of a module named
7334 @code{conftest}.  @code{AC_COMPILE_IFELSE} generates a @file{conftest.beam}
7335 file that can be interpreted by the Erlang virtual machine (@code{ERL}).  It is
7336 recommended to use @code{AC_LANG_PROGRAM} to specify the test program, to ensure
7337 that the Erlang module has the right name.
7339 @node Running the Linker
7340 @section Running the Linker
7342 To check for a library, a function, or a global variable, Autoconf
7343 @command{configure} scripts try to compile and link a small program that
7344 uses it.  This is unlike Metaconfig, which by default uses @code{nm} or
7345 @code{ar} on the C library to try to figure out which functions are
7346 available.  Trying to link with the function is usually a more reliable
7347 approach because it avoids dealing with the variations in the options
7348 and output formats of @code{nm} and @code{ar} and in the location of the
7349 standard libraries.  It also allows configuring for cross-compilation or
7350 checking a function's run-time behavior if needed.  On the other hand,
7351 it can be slower than scanning the libraries once, but accuracy is more
7352 important than speed.
7354 @code{AC_LINK_IFELSE} is used to compile test programs to test for
7355 functions and global variables.  It is also used by @code{AC_CHECK_LIB}
7356 to check for libraries (@pxref{Libraries}), by adding the library being
7357 checked for to @code{LIBS} temporarily and trying to link a small
7358 program.
7361 @defmac AC_LINK_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7362 @acindex{LINK_IFELSE}
7363 Run the compiler (and compilation flags) and the linker of the current
7364 language (@pxref{Language Choice}) on the @var{input}, run the shell
7365 commands @var{action-if-true} on success, @var{action-if-false}
7366 otherwise.  The @var{input} can be made by @code{AC_LANG_PROGRAM} and
7367 friends.
7369 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
7370 current compilation flags.
7372 It is customary to report unexpected failures with
7373 @code{AC_MSG_FAILURE}.  This macro does not try to execute the program;
7374 use @code{AC_RUN_IFELSE} if you need to do that (@pxref{Run Time}).
7375 @end defmac
7377 The @code{AC_LINK_IFELSE} macro cannot be used for Erlang tests, since Erlang
7378 programs are interpreted and do not require linking.
7382 @node Run Time
7383 @section Checking Run Time Behavior
7385 Sometimes you need to find out how a system performs at run time, such
7386 as whether a given function has a certain capability or bug.  If you
7387 can, make such checks when your program runs instead of when it is
7388 configured.  You can check for things like the machine's endianness when
7389 your program initializes itself.
7391 If you really need to test for a run-time behavior while configuring,
7392 you can write a test program to determine the result, and compile and
7393 run it using @code{AC_RUN_IFELSE}.  Avoid running test programs if
7394 possible, because this prevents people from configuring your package for
7395 cross-compiling.
7397 @defmac AC_RUN_IFELSE (@var{input}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{action-if-cross-compiling})
7398 @acindex{RUN_IFELSE}
7399 If @var{program} compiles and links successfully and returns an exit
7400 status of 0 when executed, run shell commands @var{action-if-true}.
7401 Otherwise, run shell commands @var{action-if-false}.
7403 The @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
7404 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
7405 compilation flags of the current language (@pxref{Language Choice}).
7407 If the compiler being used does not produce executables that run on the
7408 system where @command{configure} is being run, then the test program is
7409 not run.  If the optional shell commands @var{action-if-cross-compiling}
7410 are given, they are run instead.  Otherwise, @command{configure} prints
7411 an error message and exits.
7413 In the @var{action-if-false} section, the exit status of the program is
7414 available in the shell variable @samp{$?}, but be very careful to limit
7415 yourself to positive values smaller than 127; bigger values should be
7416 saved into a file by the @var{program}.  Note also that you have simply
7417 no guarantee that this exit status is issued by the @var{program}, or by
7418 the failure of its compilation.  In other words, use this feature if
7419 sadist only, it was reestablished because the Autoconf maintainers grew
7420 tired of receiving ``bug reports''.
7422 It is customary to report unexpected failures with
7423 @code{AC_MSG_FAILURE}.
7424 @end defmac
7426 Try to provide a pessimistic default value to use when cross-compiling
7427 makes run-time tests impossible.  You do this by passing the optional
7428 last argument to @code{AC_RUN_IFELSE}.  @command{autoconf} prints a
7429 warning message when creating @command{configure} each time it
7430 encounters a call to @code{AC_RUN_IFELSE} with no
7431 @var{action-if-cross-compiling} argument given.  You may ignore the
7432 warning, though users will not be able to configure your package for
7433 cross-compiling.  A few of the macros distributed with Autoconf produce
7434 this warning message.
7436 To configure for cross-compiling you can also choose a value for those
7437 parameters based on the canonical system name (@pxref{Manual
7438 Configuration}).  Alternatively, set up a test results cache file with
7439 the correct values for the host system (@pxref{Caching Results}).
7441 @ovindex cross_compiling
7442 To provide a default for calls of @code{AC_RUN_IFELSE} that are embedded
7443 in other macros, including a few of the ones that come with Autoconf,
7444 you can test whether the shell variable @code{cross_compiling} is set to
7445 @samp{yes}, and then use an alternate method to get the results instead
7446 of calling the macros.
7448 Erlang tests must exit themselves the Erlang VM by calling the @code{halt/1}
7449 function: the given status code is used to determine the success of the test
7450 (status is @code{0}) or its failure (status is different than @code{0}), as
7451 explained above.  It must be noted that data output through the standard output
7452 (e.g. using @code{io:format/2}) may be truncated when halting the VM.
7453 Therefore, if a test must output configuration information, it is recommended
7454 to create and to output data into the temporary file named @file{conftest.out},
7455 using the functions of module @code{file}.  The @code{conftest.out} file is
7456 automatically deleted by the @code{AC_RUN_IFELSE} macro.  For instance, a
7457 simplified implementation of Autoconf's @code{AC_ERLANG_SUBST_LIB_DIR} macro is:
7459 @example
7460 AC_INIT([LibdirTest], [1.0], [bug-libdirtest@@example.org])
7461 AC_ERLANG_NEED_ERL
7462 AC_LANG(Erlang)
7463 AC_RUN_IFELSE(
7464   [AC_LANG_PROGRAM([], [dnl
7465     file:write_file("conftest.out", code:lib_dir()),
7466     halt(0)])],
7467   [echo "code:lib_dir() returned: `cat conftest.out`"],
7468   [AC_MSG_FAILURE([test Erlang program execution failed])])
7469 @end example
7472 @node Systemology
7473 @section Systemology
7474 @cindex Systemology
7476 This section aims at presenting some systems and pointers to
7477 documentation.  It may help you addressing particular problems reported
7478 by users.
7480 The @uref{http://bhami.com/rosetta.html, Rosetta Stone for Unix}
7481 contains a lot of interesting crossed information on various
7482 Posix-conforming systems.
7484 @table @asis
7485 @item Darwin
7486 @cindex Darwin
7487 Darwin is also known as Mac OS X@.  Beware that the file system @emph{can} be
7488 case-preserving, but case insensitive.  This can cause nasty problems,
7489 since for instance the installation attempt for a package having an
7490 @file{INSTALL} file can result in @samp{make install} report that
7491 nothing was to be done!
7493 That's all dependent on whether the file system is a UFS (case
7494 sensitive) or HFS+ (case preserving).  By default Apple wants you to
7495 install the OS on HFS+.  Unfortunately, there are some pieces of
7496 software which really need to be built on UFS@.  We may want to rebuild
7497 Darwin to have both UFS and HFS+ available (and put the /local/build
7498 tree on the UFS).
7500 @item @acronym{QNX} 4.25
7501 @cindex @acronym{QNX} 4.25
7502 @c FIXME: Please, if you feel like writing something more precise,
7503 @c it'd be great.  In particular, I can't understand the difference with
7504 @c QNX Neutrino.
7505 @acronym{QNX} is a realtime operating system running on Intel architecture
7506 meant to be scalable from the small embedded systems to the hundred
7507 processor super-computer.  It claims to be Posix certified.  More
7508 information is available on the
7509 @uref{http://www.qnx.com/, @acronym{QNX} home page}.
7511 @item Tru64
7512 @cindex Tru64
7513 @uref{http://h30097.www3.hp.com/docs/,
7514 Documentation of several versions of Tru64} is available in different
7515 formats.
7517 @item Unix version 7
7518 @cindex Unix version 7
7519 @cindex V7
7520 Officially this was called the ``Seventh Edition'' of ``the @sc{unix}
7521 time-sharing system'' but we use the more-common name ``Unix version 7''.
7522 Documentation is available in the
7523 @uref{http://plan9.bell-labs.com/7thEdMan/, V7 Manual}.
7524 Previous versions of Unix are called ``Unix version 6'', etc., but
7525 they were not as widely used.
7526 @end table
7529 @node Multiple Cases
7530 @section Multiple Cases
7532 Some operations are accomplished in several possible ways, depending on
7533 the OS variant.  Checking for them essentially requires a ``case
7534 statement''.  Autoconf does not directly provide one; however, it is
7535 easy to simulate by using a shell variable to keep track of whether a
7536 way to perform the operation has been found yet.
7538 Here is an example that uses the shell variable @code{fstype} to keep
7539 track of whether the remaining cases need to be checked.
7541 @example
7542 @group
7543 AC_MSG_CHECKING([how to get file system type])
7544 fstype=no
7545 # The order of these tests is important.
7546 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statvfs.h>
7547 #include <sys/fstyp.h>]])],
7548                   [AC_DEFINE([FSTYPE_STATVFS], [1],
7549                      [Define if statvfs exists.])
7550                    fstype=SVR4])
7551 if test $fstype = no; then
7552   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
7553 #include <sys/fstyp.h>]])],
7554                   [AC_DEFINE([FSTYPE_USG_STATFS], [1],
7555                      [Define if USG statfs.])
7556                    fstype=SVR3])
7558 if test $fstype = no; then
7559   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
7560 #include <sys/vmount.h>]])]),
7561                   [AC_DEFINE([FSTYPE_AIX_STATFS], [1],
7562                      [Define if AIX statfs.])
7563                    fstype=AIX])
7565 # (more cases omitted here)
7566 AC_MSG_RESULT([$fstype])
7567 @end group
7568 @end example
7570 @c ====================================================== Results of Tests.
7572 @node Results
7573 @chapter Results of Tests
7575 Once @command{configure} has determined whether a feature exists, what can
7576 it do to record that information?  There are four sorts of things it can
7577 do: define a C preprocessor symbol, set a variable in the output files,
7578 save the result in a cache file for future @command{configure} runs, and
7579 print a message letting the user know the result of the test.
7581 @menu
7582 * Defining Symbols::            Defining C preprocessor symbols
7583 * Setting Output Variables::    Replacing variables in output files
7584 * Caching Results::             Speeding up subsequent @command{configure} runs
7585 * Printing Messages::           Notifying @command{configure} users
7586 @end menu
7588 @node Defining Symbols
7589 @section Defining C Preprocessor Symbols
7591 A common action to take in response to a feature test is to define a C
7592 preprocessor symbol indicating the results of the test.  That is done by
7593 calling @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}.
7595 By default, @code{AC_OUTPUT} places the symbols defined by these macros
7596 into the output variable @code{DEFS}, which contains an option
7597 @option{-D@var{symbol}=@var{value}} for each symbol defined.  Unlike in
7598 Autoconf version 1, there is no variable @code{DEFS} defined while
7599 @command{configure} is running.  To check whether Autoconf macros have
7600 already defined a certain C preprocessor symbol, test the value of the
7601 appropriate cache variable, as in this example:
7603 @example
7604 AC_CHECK_FUNC([vprintf], [AC_DEFINE([HAVE_VPRINTF], [1],
7605                           [Define if vprintf exists.])])
7606 if test "$ac_cv_func_vprintf" != yes; then
7607   AC_CHECK_FUNC([_doprnt], [AC_DEFINE([HAVE_DOPRNT], [1],
7608                             [Define if _doprnt exists.])])
7610 @end example
7612 If @code{AC_CONFIG_HEADERS} has been called, then instead of creating
7613 @code{DEFS}, @code{AC_OUTPUT} creates a header file by substituting the
7614 correct values into @code{#define} statements in a template file.
7615 @xref{Configuration Headers}, for more information about this kind of
7616 output.
7618 @defmac AC_DEFINE (@var{variable}, @var{value}, @ovar{description})
7619 @defmacx AC_DEFINE (@var{variable})
7620 @acindex{DEFINE}
7621 Define the C preprocessor variable @var{variable} to @var{value} (verbatim).
7622 @var{value} should not contain literal newlines, and if you are not
7623 using @code{AC_CONFIG_HEADERS} it should not contain any @samp{#}
7624 characters, as @command{make} tends to eat them.  To use a shell variable,
7625 use @code{AC_DEFINE_UNQUOTED} instead.
7626 @var{description} is only useful if you are using
7627 @code{AC_CONFIG_HEADERS}.  In this case, @var{description} is put into
7628 the generated @file{config.h.in} as the comment before the macro define.
7629 The following example defines the C preprocessor variable
7630 @code{EQUATION} to be the string constant @samp{"$a > $b"}:
7632 @example
7633 AC_DEFINE([EQUATION], ["$a > $b"],
7634   [Equation string.])
7635 @end example
7637 If neither @var{value} nor @var{description} are given, then
7638 @var{value} defaults to 1 instead of to the empty string.  This is for
7639 backwards compatibility with older versions of Autoconf, but this usage
7640 is obsolescent and may be withdrawn in future versions of Autoconf.
7641 @end defmac
7643 @defmac AC_DEFINE_UNQUOTED (@var{variable}, @var{value}, @ovar{description})
7644 @defmacx AC_DEFINE_UNQUOTED (@var{variable})
7645 @acindex{DEFINE_UNQUOTED}
7646 Like @code{AC_DEFINE}, but three shell expansions are
7647 performed---once---on @var{variable} and @var{value}: variable expansion
7648 (@samp{$}), command substitution (@samp{`}), and backslash escaping
7649 (@samp{\}).  Single and double quote characters in the value have no
7650 special meaning.  Use this macro instead of @code{AC_DEFINE} when
7651 @var{variable} or @var{value} is a shell variable.  Examples:
7653 @example
7654 AC_DEFINE_UNQUOTED([config_machfile], ["$machfile"],
7655   [Configuration machine file.])
7656 AC_DEFINE_UNQUOTED([GETGROUPS_T], [$ac_cv_type_getgroups],
7657   [getgroups return type.])
7658 AC_DEFINE_UNQUOTED([$ac_tr_hdr], [1],
7659   [Translated header name.])
7660 @end example
7661 @end defmac
7663 Due to a syntactical bizarreness of the Bourne shell, do not use
7664 semicolons to separate @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}
7665 calls from other macro calls or shell code; that can cause syntax errors
7666 in the resulting @command{configure} script.  Use either blanks or
7667 newlines.  That is, do this:
7669 @example
7670 AC_CHECK_HEADER([elf.h],
7671   [AC_DEFINE([SVR4], [1], [System V Release 4]) LIBS="-lelf $LIBS"])
7672 @end example
7674 @noindent
7675 or this:
7677 @example
7678 AC_CHECK_HEADER([elf.h],
7679   [AC_DEFINE([SVR4], [1], [System V Release 4])
7680    LIBS="-lelf $LIBS"])
7681 @end example
7683 @noindent
7684 instead of this:
7686 @example
7687 AC_CHECK_HEADER([elf.h],
7688   [AC_DEFINE([SVR4], [1], [System V Release 4]); LIBS="-lelf $LIBS"])
7689 @end example
7691 @node Setting Output Variables
7692 @section Setting Output Variables
7693 @cindex Output variables
7695 Another way to record the results of tests is to set @dfn{output
7696 variables}, which are shell variables whose values are substituted into
7697 files that @command{configure} outputs.  The two macros below create new
7698 output variables.  @xref{Preset Output Variables}, for a list of output
7699 variables that are always available.
7701 @defmac AC_SUBST (@var{variable}, @ovar{value})
7702 @acindex{SUBST}
7703 Create an output variable from a shell variable.  Make @code{AC_OUTPUT}
7704 substitute the variable @var{variable} into output files (typically one
7705 or more @file{Makefile}s).  This means that @code{AC_OUTPUT} will
7706 replace instances of @samp{@@@var{variable}@@} in input files with the
7707 value that the shell variable @var{variable} has when @code{AC_OUTPUT}
7708 is called.  The value can contain newlines.
7709 The substituted value is not rescanned for more output variables;
7710 occurrences of @samp{@@@var{variable}@@} in the value are inserted
7711 literally into the output file.  (The algorithm uses the special marker
7712 @code{|#_!!_#|} internally, so the substituted value cannot contain
7713 @code{|#_!!_#|}.)
7715 If @var{value} is given, in addition assign it to @var{variable}.
7717 The string @var{variable} is passed to @code{m4_pattern_allow}
7718 (@pxref{Forbidden Patterns}).
7719 @end defmac
7721 @defmac AC_SUBST_FILE (@var{variable})
7722 @acindex{SUBST_FILE}
7723 Another way to create an output variable from a shell variable.  Make
7724 @code{AC_OUTPUT} insert (without substitutions) the contents of the file
7725 named by shell variable @var{variable} into output files.  This means
7726 that @code{AC_OUTPUT} will replace instances of
7727 @samp{@@@var{variable}@@} in output files (such as @file{Makefile.in})
7728 with the contents of the file that the shell variable @var{variable}
7729 names when @code{AC_OUTPUT} is called.  Set the variable to
7730 @file{/dev/null} for cases that do not have a file to insert.
7731 This substitution occurs only when the @samp{@@@var{variable}@@} is on a
7732 line by itself, optionally surrounded by spaces and tabs.  The
7733 substitution replaces the whole line, including the spaces, tabs, and
7734 the terminating newline.
7736 This macro is useful for inserting @file{Makefile} fragments containing
7737 special dependencies or other @code{make} directives for particular host
7738 or target types into @file{Makefile}s.  For example, @file{configure.ac}
7739 could contain:
7741 @example
7742 AC_SUBST_FILE([host_frag])
7743 host_frag=$srcdir/conf/sun4.mh
7744 @end example
7746 @noindent
7747 and then a @file{Makefile.in} could contain:
7749 @example
7750 @@host_frag@@
7751 @end example
7753 The string @var{variable} is passed to @code{m4_pattern_allow}
7754 (@pxref{Forbidden Patterns}).
7755 @end defmac
7757 @cindex Previous Variable
7758 @cindex Variable, Precious
7759 Running @command{configure} in varying environments can be extremely
7760 dangerous.  If for instance the user runs @samp{CC=bizarre-cc
7761 ./configure}, then the cache, @file{config.h}, and many other output
7762 files will depend upon @command{bizarre-cc} being the C compiler.  If
7763 for some reason the user runs @command{./configure} again, or if it is
7764 run via @samp{./config.status --recheck}, (@xref{Automatic Remaking},
7765 and @pxref{config.status Invocation}), then the configuration can be
7766 inconsistent, composed of results depending upon two different
7767 compilers.
7769 Environment variables that affect this situation, such as @samp{CC}
7770 above, are called @dfn{precious variables}, and can be declared as such
7771 by @code{AC_ARG_VAR}.
7773 @defmac AC_ARG_VAR (@var{variable}, @var{description})
7774 @acindex{ARG_VAR}
7775 Declare @var{variable} is a precious variable, and include its
7776 @var{description} in the variable section of @samp{./configure --help}.
7778 Being precious means that
7779 @itemize @minus
7780 @item
7781 @var{variable} is @code{AC_SUBST}'d.
7783 @item
7784 The value of @var{variable} when @command{configure} was launched is
7785 saved in the cache, including if it was not specified on the command
7786 line but via the environment.  Indeed, while @command{configure} can
7787 notice the definition of @code{CC} in @samp{./configure CC=bizarre-cc},
7788 it is impossible to notice it in @samp{CC=bizarre-cc ./configure},
7789 which, unfortunately, is what most users do.
7791 We emphasize that it is the @emph{initial} value of @var{variable} which
7792 is saved, not that found during the execution of @command{configure}.
7793 Indeed, specifying @samp{./configure FOO=foo} and letting
7794 @samp{./configure} guess that @code{FOO} is @code{foo} can be two very
7795 different runs.
7797 @item
7798 @var{variable} is checked for consistency between two
7799 @command{configure} runs.  For instance:
7801 @example
7802 $ @kbd{./configure --silent --config-cache}
7803 $ @kbd{CC=cc ./configure --silent --config-cache}
7804 configure: error: `CC' was not set in the previous run
7805 configure: error: changes in the environment can compromise \
7806 the build
7807 configure: error: run `make distclean' and/or \
7808 `rm config.cache' and start over
7809 @end example
7811 @noindent
7812 and similarly if the variable is unset, or if its content is changed.
7815 @item
7816 @var{variable} is kept during automatic reconfiguration
7817 (@pxref{config.status Invocation}) as if it had been passed as a command
7818 line argument, including when no cache is used:
7820 @example
7821 $ @kbd{CC=/usr/bin/cc ./configure undeclared_var=raboof --silent}
7822 $ @kbd{./config.status --recheck}
7823 running /bin/sh ./configure undeclared_var=raboof --silent \
7824   CC=/usr/bin/cc  --no-create --no-recursion
7825 @end example
7826 @end itemize
7827 @end defmac
7830 @node Caching Results
7831 @section Caching Results
7832 @cindex Cache
7834 To avoid checking for the same features repeatedly in various
7835 @command{configure} scripts (or in repeated runs of one script),
7836 @command{configure} can optionally save the results of many checks in a
7837 @dfn{cache file} (@pxref{Cache Files}).  If a @command{configure} script
7838 runs with caching enabled and finds a cache file, it reads the results
7839 of previous runs from the cache and avoids rerunning those checks.  As a
7840 result, @command{configure} can then run much faster than if it had to
7841 perform all of the checks every time.
7843 @defmac AC_CACHE_VAL (@var{cache-id}, @var{commands-to-set-it})
7844 @acindex{CACHE_VAL}
7845 Ensure that the results of the check identified by @var{cache-id} are
7846 available.  If the results of the check were in the cache file that was
7847 read, and @command{configure} was not given the @option{--quiet} or
7848 @option{--silent} option, print a message saying that the result was
7849 cached; otherwise, run the shell commands @var{commands-to-set-it}.  If
7850 the shell commands are run to determine the value, the value will be
7851 saved in the cache file just before @command{configure} creates its output
7852 files.  @xref{Cache Variable Names}, for how to choose the name of the
7853 @var{cache-id} variable.
7855 The @var{commands-to-set-it} @emph{must have no side effects} except for
7856 setting the variable @var{cache-id}, see below.
7857 @end defmac
7859 @defmac AC_CACHE_CHECK (@var{message}, @var{cache-id}, @var{commands-to-set-it})
7860 @acindex{CACHE_CHECK}
7861 A wrapper for @code{AC_CACHE_VAL} that takes care of printing the
7862 messages.  This macro provides a convenient shorthand for the most
7863 common way to use these macros.  It calls @code{AC_MSG_CHECKING} for
7864 @var{message}, then @code{AC_CACHE_VAL} with the @var{cache-id} and
7865 @var{commands} arguments, and @code{AC_MSG_RESULT} with @var{cache-id}.
7867 The @var{commands-to-set-it} @emph{must have no side effects} except for
7868 setting the variable @var{cache-id}, see below.
7869 @end defmac
7871 It is very common to find buggy macros using @code{AC_CACHE_VAL} or
7872 @code{AC_CACHE_CHECK}, because people are tempted to call
7873 @code{AC_DEFINE} in the @var{commands-to-set-it}.  Instead, the code that
7874 @emph{follows} the call to @code{AC_CACHE_VAL} should call
7875 @code{AC_DEFINE}, by examining the value of the cache variable.  For
7876 instance, the following macro is broken:
7878 @example
7879 @group
7880 AC_DEFUN([AC_SHELL_TRUE],
7881 [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
7882                 [ac_cv_shell_true_works=no
7883                  (true) 2>/dev/null && ac_cv_shell_true_works=yes
7884                  if test "$ac_cv_shell_true_works" = yes; then
7885                    AC_DEFINE([TRUE_WORKS], [1],
7886                              [Define if `true(1)' works properly.])
7887                  fi])
7889 @end group
7890 @end example
7892 @noindent
7893 This fails if the cache is enabled: the second time this macro is run,
7894 @code{TRUE_WORKS} @emph{will not be defined}.  The proper implementation
7897 @example
7898 @group
7899 AC_DEFUN([AC_SHELL_TRUE],
7900 [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
7901                 [ac_cv_shell_true_works=no
7902                  (true) 2>/dev/null && ac_cv_shell_true_works=yes])
7903  if test "$ac_cv_shell_true_works" = yes; then
7904    AC_DEFINE([TRUE_WORKS], [1],
7905              [Define if `true(1)' works properly.])
7906  fi
7908 @end group
7909 @end example
7911 Also, @var{commands-to-set-it} should not print any messages, for
7912 example with @code{AC_MSG_CHECKING}; do that before calling
7913 @code{AC_CACHE_VAL}, so the messages are printed regardless of whether
7914 the results of the check are retrieved from the cache or determined by
7915 running the shell commands.
7917 @menu
7918 * Cache Variable Names::        Shell variables used in caches
7919 * Cache Files::                 Files @command{configure} uses for caching
7920 * Cache Checkpointing::         Loading and saving the cache file
7921 @end menu
7923 @node Cache Variable Names
7924 @subsection Cache Variable Names
7925 @cindex Cache variable
7927 The names of cache variables should have the following format:
7929 @example
7930 @var{package-prefix}_cv_@var{value-type}_@var{specific-value}_@ovar{additional-options}
7931 @end example
7933 @noindent
7934 for example, @samp{ac_cv_header_stat_broken} or
7935 @samp{ac_cv_prog_gcc_traditional}.  The parts of the variable name are:
7937 @table @asis
7938 @item @var{package-prefix}
7939 An abbreviation for your package or organization; the same prefix you
7940 begin local Autoconf macros with, except lowercase by convention.
7941 For cache values used by the distributed Autoconf macros, this value is
7942 @samp{ac}.
7944 @item @code{_cv_}
7945 Indicates that this shell variable is a cache value.  This string
7946 @emph{must} be present in the variable name, including the leading
7947 underscore.
7949 @item @var{value-type}
7950 A convention for classifying cache values, to produce a rational naming
7951 system.  The values used in Autoconf are listed in @ref{Macro Names}.
7953 @item @var{specific-value}
7954 Which member of the class of cache values this test applies to.
7955 For example, which function (@samp{alloca}), program (@samp{gcc}), or
7956 output variable (@samp{INSTALL}).
7958 @item @var{additional-options}
7959 Any particular behavior of the specific member that this test applies to.
7960 For example, @samp{broken} or @samp{set}.  This part of the name may
7961 be omitted if it does not apply.
7962 @end table
7964 The values assigned to cache variables may not contain newlines.
7965 Usually, their values will be Boolean (@samp{yes} or @samp{no}) or the
7966 names of files or functions; so this is not an important restriction.
7968 @node Cache Files
7969 @subsection Cache Files
7971 A cache file is a shell script that caches the results of configure
7972 tests run on one system so they can be shared between configure scripts
7973 and configure runs.  It is not useful on other systems.  If its contents
7974 are invalid for some reason, the user may delete or edit it.
7976 By default, @command{configure} uses no cache file,
7977 to avoid problems caused by accidental
7978 use of stale cache files.
7980 To enable caching, @command{configure} accepts @option{--config-cache} (or
7981 @option{-C}) to cache results in the file @file{config.cache}.
7982 Alternatively, @option{--cache-file=@var{file}} specifies that
7983 @var{file} be the cache file.  The cache file is created if it does not
7984 exist already.  When @command{configure} calls @command{configure} scripts in
7985 subdirectories, it uses the @option{--cache-file} argument so that they
7986 share the same cache.  @xref{Subdirectories}, for information on
7987 configuring subdirectories with the @code{AC_CONFIG_SUBDIRS} macro.
7989 @file{config.status} only pays attention to the cache file if it is
7990 given the @option{--recheck} option, which makes it rerun
7991 @command{configure}.
7993 It is wrong to try to distribute cache files for particular system types.
7994 There is too much room for error in doing that, and too much
7995 administrative overhead in maintaining them.  For any features that
7996 can't be guessed automatically, use the standard method of the canonical
7997 system type and linking files (@pxref{Manual Configuration}).
7999 The site initialization script can specify a site-wide cache file to
8000 use, instead of the usual per-program cache.  In this case, the cache
8001 file will gradually accumulate information whenever someone runs a new
8002 @command{configure} script.  (Running @command{configure} merges the new cache
8003 results with the existing cache file.)  This may cause problems,
8004 however, if the system configuration (e.g., the installed libraries or
8005 compilers) changes and the stale cache file is not deleted.
8007 @node Cache Checkpointing
8008 @subsection Cache Checkpointing
8010 If your configure script, or a macro called from @file{configure.ac}, happens
8011 to abort the configure process, it may be useful to checkpoint the cache
8012 a few times at key points using @code{AC_CACHE_SAVE}.  Doing so will
8013 reduce the amount of time it takes to re-run the configure script with
8014 (hopefully) the error that caused the previous abort corrected.
8016 @c FIXME: Do we really want to document this guy?
8017 @defmac AC_CACHE_LOAD
8018 @acindex{CACHE_LOAD}
8019 Loads values from existing cache file, or creates a new cache file if a
8020 cache file is not found.  Called automatically from @code{AC_INIT}.
8021 @end defmac
8023 @defmac AC_CACHE_SAVE
8024 @acindex{CACHE_SAVE}
8025 Flushes all cached values to the cache file.  Called automatically from
8026 @code{AC_OUTPUT}, but it can be quite useful to call
8027 @code{AC_CACHE_SAVE} at key points in @file{configure.ac}.
8028 @end defmac
8030 For instance:
8032 @example
8033 @r{ @dots{} AC_INIT, etc. @dots{}}
8034 @group
8035 # Checks for programs.
8036 AC_PROG_CC
8037 AC_PROG_GCC_TRADITIONAL
8038 @r{ @dots{} more program checks @dots{}}
8039 AC_CACHE_SAVE
8040 @end group
8042 @group
8043 # Checks for libraries.
8044 AC_CHECK_LIB([nsl], [gethostbyname])
8045 AC_CHECK_LIB([socket], [connect])
8046 @r{ @dots{} more lib checks @dots{}}
8047 AC_CACHE_SAVE
8048 @end group
8050 @group
8051 # Might abort@dots{}
8052 AM_PATH_GTK([1.0.2], [], [AC_MSG_ERROR([GTK not in path])])
8053 AM_PATH_GTKMM([0.9.5], [], [AC_MSG_ERROR([GTK not in path])])
8054 @end group
8055 @r{ @dots{} AC_OUTPUT, etc. @dots{}}
8056 @end example
8058 @node Printing Messages
8059 @section Printing Messages
8060 @cindex Messages, from @command{configure}
8062 @command{configure} scripts need to give users running them several kinds
8063 of information.  The following macros print messages in ways appropriate
8064 for each kind.  The arguments to all of them get enclosed in shell
8065 double quotes, so the shell performs variable and back-quote
8066 substitution on them.
8068 These macros are all wrappers around the @command{echo} shell command,
8069 and will direct output to the appropriate file descriptor (@pxref{File
8070 Descriptor Macros}).
8071 @command{configure} scripts should rarely need to run @command{echo} directly
8072 to print messages for the user.  Using these macros makes it easy to
8073 change how and when each kind of message is printed; such changes need
8074 only be made to the macro definitions and all the callers will change
8075 automatically.
8077 To diagnose static issues, i.e., when @command{autoconf} is run, see
8078 @ref{Reporting Messages}.
8080 @defmac AC_MSG_CHECKING (@var{feature-description})
8081 @acindex{MSG_CHECKING}
8082 Notify the user that @command{configure} is checking for a particular
8083 feature.  This macro prints a message that starts with @samp{checking }
8084 and ends with @samp{...} and no newline.  It must be followed by a call
8085 to @code{AC_MSG_RESULT} to print the result of the check and the
8086 newline.  The @var{feature-description} should be something like
8087 @samp{whether the Fortran compiler accepts C++ comments} or @samp{for
8088 c89}.
8090 This macro prints nothing if @command{configure} is run with the
8091 @option{--quiet} or @option{--silent} option.
8092 @end defmac
8094 @defmac AC_MSG_RESULT (@var{result-description})
8095 @acindex{MSG_RESULT}
8096 Notify the user of the results of a check.  @var{result-description} is
8097 almost always the value of the cache variable for the check, typically
8098 @samp{yes}, @samp{no}, or a file name.  This macro should follow a call
8099 to @code{AC_MSG_CHECKING}, and the @var{result-description} should be
8100 the completion of the message printed by the call to
8101 @code{AC_MSG_CHECKING}.
8103 This macro prints nothing if @command{configure} is run with the
8104 @option{--quiet} or @option{--silent} option.
8105 @end defmac
8107 @defmac AC_MSG_NOTICE (@var{message})
8108 @acindex{MSG_NOTICE}
8109 Deliver the @var{message} to the user.  It is useful mainly to print a
8110 general description of the overall purpose of a group of feature checks,
8111 e.g.,
8113 @example
8114 AC_MSG_NOTICE([checking if stack overflow is detectable])
8115 @end example
8117 This macro prints nothing if @command{configure} is run with the
8118 @option{--quiet} or @option{--silent} option.
8119 @end defmac
8121 @defmac AC_MSG_ERROR (@var{error-description}, @ovar{exit-status})
8122 @acindex{MSG_ERROR}
8123 Notify the user of an error that prevents @command{configure} from
8124 completing.  This macro prints an error message to the standard error
8125 output and exits @command{configure} with @var{exit-status} (1 by default).
8126 @var{error-description} should be something like @samp{invalid value
8127 $HOME for \$HOME}.
8129 The @var{error-description} should start with a lower-case letter, and
8130 ``cannot'' is preferred to ``can't''.
8131 @end defmac
8133 @defmac AC_MSG_FAILURE (@var{error-description}, @ovar{exit-status})
8134 @acindex{MSG_FAILURE}
8135 This @code{AC_MSG_ERROR} wrapper notifies the user of an error that
8136 prevents @command{configure} from completing @emph{and} that additional
8137 details are provided in @file{config.log}.  This is typically used when
8138 abnormal results are found during a compilation.
8139 @end defmac
8141 @defmac AC_MSG_WARN (@var{problem-description})
8142 @acindex{MSG_WARN}
8143 Notify the @command{configure} user of a possible problem.  This macro
8144 prints the message to the standard error output; @command{configure}
8145 continues running afterward, so macros that call @code{AC_MSG_WARN} should
8146 provide a default (back-up) behavior for the situations they warn about.
8147 @var{problem-description} should be something like @samp{ln -s seems to
8148 make hard links}.
8149 @end defmac
8153 @c ====================================================== Programming in M4.
8155 @node Programming in M4
8156 @chapter Programming in M4
8157 @cindex M4
8159 Autoconf is written on top of two layers: @dfn{M4sugar}, which provides
8160 convenient macros for pure M4 programming, and @dfn{M4sh}, which
8161 provides macros dedicated to shell script generation.
8163 As of this version of Autoconf, these two layers are still experimental,
8164 and their interface might change in the future.  As a matter of fact,
8165 @emph{anything that is not documented must not be used}.
8167 @menu
8168 * M4 Quotation::                Protecting macros from unwanted expansion
8169 * Using autom4te::              The Autoconf executables backbone
8170 * Programming in M4sugar::      Convenient pure M4 macros
8171 * Programming in M4sh::         Common shell Constructs
8172 * File Descriptor Macros::      File descriptor macros for input and output
8173 @end menu
8175 @node M4 Quotation
8176 @section M4 Quotation
8177 @cindex M4 quotation
8178 @cindex quotation
8180 @c FIXME: Grmph, yet another quoting myth: quotation has *never*
8181 @c prevented `expansion' of $1.  Unless it refers to the expansion
8182 @c of the value of $1?  Anyway, we need a rewrite here@enddots{}
8184 The most common problem with existing macros is an improper quotation.
8185 This section, which users of Autoconf can skip, but which macro writers
8186 @emph{must} read, first justifies the quotation scheme that was chosen
8187 for Autoconf and then ends with a rule of thumb.  Understanding the
8188 former helps one to follow the latter.
8190 @menu
8191 * Active Characters::           Characters that change the behavior of M4
8192 * One Macro Call::              Quotation and one macro call
8193 * Quotation and Nested Macros::  Macros calling macros
8194 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
8195 * Quadrigraphs::                Another way to escape special characters
8196 * Quotation Rule Of Thumb::     One parenthesis, one quote
8197 @end menu
8199 @node Active Characters
8200 @subsection Active Characters
8202 To fully understand where proper quotation is important, you first need
8203 to know what the special characters are in Autoconf: @samp{#} introduces
8204 a comment inside which no macro expansion is performed, @samp{,}
8205 separates arguments, @samp{[} and @samp{]} are the quotes themselves,
8206 and finally @samp{(} and @samp{)} (which M4 tries to match by
8207 pairs).
8209 In order to understand the delicate case of macro calls, we first have
8210 to present some obvious failures.  Below they are ``obvious-ified'',
8211 but when you find them in real life, they are usually in disguise.
8213 Comments, introduced by a hash and running up to the newline, are opaque
8214 tokens to the top level: active characters are turned off, and there is
8215 no macro expansion:
8217 @example
8218 # define([def], ine)
8219 @result{}# define([def], ine)
8220 @end example
8222 Each time there can be a macro expansion, there is a quotation
8223 expansion, i.e., one level of quotes is stripped:
8225 @example
8226 int tab[10];
8227 @result{}int tab10;
8228 [int tab[10];]
8229 @result{}int tab[10];
8230 @end example
8232 Without this in mind, the reader will try hopelessly to use her macro
8233 @code{array}:
8235 @example
8236 define([array], [int tab[10];])
8237 array
8238 @result{}int tab10;
8239 [array]
8240 @result{}array
8241 @end example
8243 @noindent
8244 How can you correctly output the intended results@footnote{Using
8245 @code{defn}.}?
8248 @node One Macro Call
8249 @subsection One Macro Call
8251 Let's proceed on the interaction between active characters and macros
8252 with this small macro, which just returns its first argument:
8254 @example
8255 define([car], [$1])
8256 @end example
8258 @noindent
8259 The two pairs of quotes above are not part of the arguments of
8260 @code{define}; rather, they are understood by the top level when it
8261 tries to find the arguments of @code{define}.  Therefore, assuming
8262 @code{car} is not already defined, it is equivalent to write:
8264 @example
8265 define(car, $1)
8266 @end example
8268 @noindent
8269 But, while it is acceptable for a @file{configure.ac} to avoid unnecessary
8270 quotes, it is bad practice for Autoconf macros which must both be more
8271 robust and also advocate perfect style.
8273 At the top level, there are only two possibilities: either you
8274 quote or you don't:
8276 @example
8277 car(foo, bar, baz)
8278 @result{}foo
8279 [car(foo, bar, baz)]
8280 @result{}car(foo, bar, baz)
8281 @end example
8283 Let's pay attention to the special characters:
8285 @example
8286 car(#)
8287 @error{}EOF in argument list
8288 @end example
8290 The closing parenthesis is hidden in the comment; with a hypothetical
8291 quoting, the top level understood it this way:
8293 @example
8294 car([#)]
8295 @end example
8297 @noindent
8298 Proper quotation, of course, fixes the problem:
8300 @example
8301 car([#])
8302 @result{}#
8303 @end example
8305 Here are more examples:
8307 @example
8308 car(foo, bar)
8309 @result{}foo
8310 car([foo, bar])
8311 @result{}foo, bar
8312 car((foo, bar))
8313 @result{}(foo, bar)
8314 car([(foo], [bar)])
8315 @result{}(foo
8316 define([a], [b])
8317 @result{}
8318 car(a)
8319 @result{}b
8320 car([a])
8321 @result{}b
8322 car([[a]])
8323 @result{}a
8324 car([[[a]]])
8325 @result{}[a]
8326 @end example
8328 With this in mind, we can explore the cases where macros invoke
8329 macros@enddots{}
8332 @node Quotation and Nested Macros
8333 @subsection Quotation and Nested Macros
8335 The examples below use the following macros:
8337 @example
8338 define([car], [$1])
8339 define([active], [ACT, IVE])
8340 define([array], [int tab[10]])
8341 @end example
8343 Each additional embedded macro call introduces other possible
8344 interesting quotations:
8346 @example
8347 car(active)
8348 @result{}ACT
8349 car([active])
8350 @result{}ACT, IVE
8351 car([[active]])
8352 @result{}active
8353 @end example
8355 In the first case, the top level looks for the arguments of @code{car},
8356 and finds @samp{active}.  Because M4 evaluates its arguments
8357 before applying the macro, @samp{active} is expanded, which results in:
8359 @example
8360 car(ACT, IVE)
8361 @result{}ACT
8362 @end example
8364 @noindent
8365 In the second case, the top level gives @samp{active} as first and only
8366 argument of @code{car}, which results in:
8368 @example
8369 active
8370 @result{}ACT, IVE
8371 @end example
8373 @noindent
8374 i.e., the argument is evaluated @emph{after} the macro that invokes it.
8375 In the third case, @code{car} receives @samp{[active]}, which results in:
8377 @example
8378 [active]
8379 @result{}active
8380 @end example
8382 @noindent
8383 exactly as we already saw above.
8385 The example above, applied to a more realistic example, gives:
8387 @example
8388 car(int tab[10];)
8389 @result{}int tab10;
8390 car([int tab[10];])
8391 @result{}int tab10;
8392 car([[int tab[10];]])
8393 @result{}int tab[10];
8394 @end example
8396 @noindent
8397 Huh?  The first case is easily understood, but why is the second wrong,
8398 and the third right?  To understand that, you must know that after
8399 M4 expands a macro, the resulting text is immediately subjected
8400 to macro expansion and quote removal.  This means that the quote removal
8401 occurs twice---first before the argument is passed to the @code{car}
8402 macro, and second after the @code{car} macro expands to the first
8403 argument.
8405 As the author of the Autoconf macro @code{car}, you then consider it to
8406 be incorrect that your users have to double-quote the arguments of
8407 @code{car}, so you ``fix'' your macro.  Let's call it @code{qar} for
8408 quoted car:
8410 @example
8411 define([qar], [[$1]])
8412 @end example
8414 @noindent
8415 and check that @code{qar} is properly fixed:
8417 @example
8418 qar([int tab[10];])
8419 @result{}int tab[10];
8420 @end example
8422 @noindent
8423 Ahhh!  That's much better.
8425 But note what you've done: now that the arguments are literal strings,
8426 if the user wants to use the results of expansions as arguments, she has
8427 to use an @emph{unquoted} macro call:
8429 @example
8430 qar(active)
8431 @result{}ACT
8432 @end example
8434 @noindent
8435 where she wanted to reproduce what she used to do with @code{car}:
8437 @example
8438 car([active])
8439 @result{}ACT, IVE
8440 @end example
8442 @noindent
8443 Worse yet: she wants to use a macro that produces a set of @code{cpp}
8444 macros:
8446 @example
8447 define([my_includes], [#include <stdio.h>])
8448 car([my_includes])
8449 @result{}#include <stdio.h>
8450 qar(my_includes)
8451 @error{}EOF in argument list
8452 @end example
8454 This macro, @code{qar}, because it double quotes its arguments, forces
8455 its users to leave their macro calls unquoted, which is dangerous.
8456 Commas and other active symbols are interpreted by M4 before
8457 they are given to the macro, often not in the way the users expect.
8458 Also, because @code{qar} behaves differently from the other macros,
8459 it's an exception that should be avoided in Autoconf.
8461 @node Changequote is Evil
8462 @subsection @code{changequote} is Evil
8463 @cindex @code{changequote}
8465 The temptation is often high to bypass proper quotation, in particular
8466 when it's late at night.  Then, many experienced Autoconf hackers
8467 finally surrender to the dark side of the force and use the ultimate
8468 weapon: @code{changequote}.
8470 The M4 builtin @code{changequote} belongs to a set of primitives that
8471 allow one to adjust the syntax of the language to adjust it to one's
8472 needs.  For instance, by default M4 uses @samp{`} and @samp{'} as
8473 quotes, but in the context of shell programming (and actually of most
8474 programming languages), that's about the worst choice one can make:
8475 because of strings and back-quoted expressions in shell code (such as
8476 @samp{'this'} and @samp{`that`}), because of literal characters in usual
8477 programming languages (as in @samp{'0'}), there are many unbalanced
8478 @samp{`} and @samp{'}.  Proper M4 quotation then becomes a nightmare, if
8479 not impossible.  In order to make M4 useful in such a context, its
8480 designers have equipped it with @code{changequote}, which makes it
8481 possible to choose another pair of quotes.  M4sugar, M4sh, Autoconf, and
8482 Autotest all have chosen to use @samp{[} and @samp{]}.  Not especially
8483 because they are unlikely characters, but @emph{because they are
8484 characters unlikely to be unbalanced}.
8486 There are other magic primitives, such as @code{changecom} to specify
8487 what syntactic forms are comments (it is common to see
8488 @samp{changecom(<!--, -->)} when M4 is used to produce HTML pages),
8489 @code{changeword} and @code{changesyntax} to change other syntactic
8490 details (such as the character to denote the @var{n}th argument, @samp{$} by
8491 default, the parenthesis around arguments, etc.).
8493 These primitives are really meant to make M4 more useful for specific
8494 domains: they should be considered like command line options:
8495 @option{--quotes}, @option{--comments}, @option{--words}, and
8496 @code{--syntax}.  Nevertheless, they are implemented as M4 builtins, as
8497 it makes M4 libraries self contained (no need for additional options).
8499 There lies the problem@enddots{}
8501 @sp 1
8503 The problem is that it is then tempting to use them in the middle of an
8504 M4 script, as opposed to its initialization.  This, if not carefully
8505 thought out, can lead to disastrous effects: @emph{you are changing the
8506 language in the middle of the execution}.  Changing and restoring the
8507 syntax is often not enough: if you happened to invoke macros in between,
8508 these macros will be lost, as the current syntax will probably not be
8509 the one they were implemented with.
8511 @c FIXME: I've been looking for a short, real case example, but I
8512 @c lost them all :(
8515 @node Quadrigraphs
8516 @subsection Quadrigraphs
8517 @cindex quadrigraphs
8518 @cindex @samp{@@S|@@}
8519 @cindex @samp{@@&t@@}
8520 @c Info cannot handle `:' in index entries.
8521 @c @cindex @samp{@@<:@@}
8522 @c @cindex @samp{@@:>@@}
8523 @c @cindex @samp{@@%:@@}
8525 When writing an Autoconf macro you may occasionally need to generate
8526 special characters that are difficult to express with the standard
8527 Autoconf quoting rules.  For example, you may need to output the regular
8528 expression @samp{[^[]}, which matches any character other than @samp{[}.
8529 This expression contains unbalanced brackets so it cannot be put easily
8530 into an M4 macro.
8532 You can work around this problem by using one of the following
8533 @dfn{quadrigraphs}:
8535 @table @samp
8536 @item @@<:@@
8537 @samp{[}
8538 @item @@:>@@
8539 @samp{]}
8540 @item @@S|@@
8541 @samp{$}
8542 @item @@%:@@
8543 @samp{#}
8544 @item @@&t@@
8545 Expands to nothing.
8546 @end table
8548 Quadrigraphs are replaced at a late stage of the translation process,
8549 after @command{m4} is run, so they do not get in the way of M4 quoting.
8550 For example, the string @samp{^@@<:@@}, independently of its quotation,
8551 will appear as @samp{^[} in the output.
8553 The empty quadrigraph can be used:
8555 @itemize @minus
8556 @item to mark trailing spaces explicitly
8558 Trailing spaces are smashed by @command{autom4te}.  This is a feature.
8560 @item to produce other quadrigraphs
8562 For instance @samp{@@<@@&t@@:@@} produces @samp{@@<:@@}.
8564 @item to escape @emph{occurrences} of forbidden patterns
8566 For instance you might want to mention @code{AC_FOO} in a comment, while
8567 still being sure that @command{autom4te} will still catch unexpanded
8568 @samp{AC_*}.  Then write @samp{AC@@&t@@_FOO}.
8569 @end itemize
8571 The name @samp{@@&t@@} was suggested by Paul Eggert:
8573 @quotation
8574 I should give some credit to the @samp{@@&t@@} pun.  The @samp{&} is my
8575 own invention, but the @samp{t} came from the source code of the
8576 @sc{algol68c} compiler, written by Steve Bourne (of Bourne shell fame),
8577 and which used @samp{mt} to denote the empty string.  In C, it would
8578 have looked like something like:
8580 @example
8581 char const mt[] = "";
8582 @end example
8584 @noindent
8585 but of course the source code was written in Algol 68.
8587 I don't know where he got @samp{mt} from: it could have been his own
8588 invention, and I suppose it could have been a common pun around the
8589 Cambridge University computer lab at the time.
8590 @end quotation
8592 @node Quotation Rule Of Thumb
8593 @subsection Quotation Rule Of Thumb
8595 To conclude, the quotation rule of thumb is:
8597 @center @emph{One pair of quotes per pair of parentheses.}
8599 Never over-quote, never under-quote, in particular in the definition of
8600 macros.  In the few places where the macros need to use brackets
8601 (usually in C program text or regular expressions), properly quote
8602 @emph{the arguments}!
8604 It is common to read Autoconf programs with snippets like:
8606 @example
8607 AC_TRY_LINK(
8608 changequote(<<, >>)dnl
8609 <<#include <time.h>
8610 #ifndef tzname /* For SGI.  */
8611 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
8612 #endif>>,
8613 changequote([, ])dnl
8614 [atoi (*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)
8615 @end example
8617 @noindent
8618 which is incredibly useless since @code{AC_TRY_LINK} is @emph{already}
8619 double quoting, so you just need:
8621 @example
8622 AC_TRY_LINK(
8623 [#include <time.h>
8624 #ifndef tzname /* For SGI.  */
8625 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
8626 #endif],
8627             [atoi (*tzname);],
8628             [ac_cv_var_tzname=yes],
8629             [ac_cv_var_tzname=no])
8630 @end example
8632 @noindent
8633 The M4-fluent reader will note that these two examples are rigorously
8634 equivalent, since M4 swallows both the @samp{changequote(<<, >>)}
8635 and @samp{<<} @samp{>>} when it @dfn{collects} the arguments: these
8636 quotes are not part of the arguments!
8638 Simplified, the example above is just doing this:
8640 @example
8641 changequote(<<, >>)dnl
8642 <<[]>>
8643 changequote([, ])dnl
8644 @end example
8646 @noindent
8647 instead of simply:
8649 @example
8650 [[]]
8651 @end example
8653 With macros that do not double quote their arguments (which is the
8654 rule), double-quote the (risky) literals:
8656 @example
8657 AC_LINK_IFELSE([AC_LANG_PROGRAM(
8658 [[#include <time.h>
8659 #ifndef tzname /* For SGI.  */
8660 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
8661 #endif]],
8662                                 [atoi (*tzname);])],
8663                [ac_cv_var_tzname=yes],
8664                [ac_cv_var_tzname=no])
8665 @end example
8667 Please note that the macro @code{AC_TRY_LINK} is obsolete, so you really
8668 should be using @code{AC_LINK_IFELSE} instead.
8670 @xref{Quadrigraphs}, for what to do if you run into a hopeless case
8671 where quoting does not suffice.
8673 When you create a @command{configure} script using newly written macros,
8674 examine it carefully to check whether you need to add more quotes in
8675 your macros.  If one or more words have disappeared in the M4
8676 output, you need more quotes.  When in doubt, quote.
8678 However, it's also possible to put on too many layers of quotes.  If
8679 this happens, the resulting @command{configure} script may contain
8680 unexpanded macros.  The @command{autoconf} program checks for this problem
8681 by looking for the string @samp{AC_} in @file{configure}.  However, this
8682 heuristic does not work in general: for example, it does not catch
8683 overquoting in @code{AC_DEFINE} descriptions.
8686 @c ---------------------------------------- Using autom4te
8688 @node Using autom4te
8689 @section Using @command{autom4te}
8691 The Autoconf suite, including M4sugar, M4sh, and Autotest, in addition
8692 to Autoconf per se, heavily rely on M4.  All these different uses
8693 revealed common needs factored into a layer over @command{m4}:
8694 @command{autom4te}@footnote{
8696 Yet another great name from Lars J. Aas.
8700 @command{autom4te} is a preprocessor that is like @command{m4}.
8701 It supports M4 extensions designed for use in tools like Autoconf.
8703 @menu
8704 * autom4te Invocation::         A @acronym{GNU} M4 wrapper
8705 * Customizing autom4te::        Customizing the Autoconf package
8706 @end menu
8708 @node autom4te Invocation
8709 @subsection Invoking @command{autom4te}
8711 The command line arguments are modeled after M4's:
8713 @example
8714 autom4te @var{options} @var{files}
8715 @end example
8717 @noindent
8718 where the @var{files} are directly passed to @command{m4}.  In addition
8719 to the regular expansion, it handles the replacement of the quadrigraphs
8720 (@pxref{Quadrigraphs}), and of @samp{__oline__}, the current line in the
8721 output.  It supports an extended syntax for the @var{files}:
8723 @table @file
8724 @item @var{file}.m4f
8725 This file is an M4 frozen file.  Note that @emph{all the previous files
8726 are ignored}.  See the option @option{--melt} for the rationale.
8728 @item @var{file}?
8729 If found in the library path, the @var{file} is included for expansion,
8730 otherwise it is ignored instead of triggering a failure.
8731 @end table
8733 @sp 1
8735 Of course, it supports the Autoconf common subset of options:
8737 @table @option
8738 @item --help
8739 @itemx -h
8740 Print a summary of the command line options and exit.
8742 @item --version
8743 @itemx -V
8744 Print the version number of Autoconf and exit.
8746 @item --verbose
8747 @itemx -v
8748 Report processing steps.
8750 @item --debug
8751 @itemx -d
8752 Don't remove the temporary files and be even more verbose.
8754 @item --include=@var{dir}
8755 @itemx -I @var{dir}
8756 Also look for input files in @var{dir}.  Multiple invocations
8757 accumulate.
8759 @item --output=@var{file}
8760 @itemx -o @var{file}
8761 Save output (script or trace) to @var{file}.  The file @option{-} stands
8762 for the standard output.
8763 @end table
8765 @sp 1
8767 As an extension of @command{m4}, it includes the following options:
8769 @table @option
8770 @item --warnings=@var{category}
8771 @itemx -W @var{category}
8772 @evindex WARNINGS
8773 @c FIXME: Point to the M4sugar macros, not Autoconf's.
8774 Report the warnings related to @var{category} (which can actually be a
8775 comma separated list).  @xref{Reporting Messages}, macro
8776 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
8777 values include:
8779 @table @samp
8780 @item all
8781 report all the warnings
8783 @item none
8784 report none
8786 @item error
8787 treats warnings as errors
8789 @item no-@var{category}
8790 disable warnings falling into @var{category}
8791 @end table
8793 Warnings about @samp{syntax} are enabled by default, and the environment
8794 variable @env{WARNINGS}, a comma separated list of categories, is
8795 honored.  @command{autom4te -W @var{category}} will actually
8796 behave as if you had run:
8798 @example
8799 autom4te --warnings=syntax,$WARNINGS,@var{category}
8800 @end example
8802 @noindent
8803 For example, if you want to disable @command{autom4te}'s defaults and
8804 @env{WARNINGS}, but enable the warnings about obsolete
8805 constructs, you would use @option{-W none,obsolete}.
8807 @cindex Back trace
8808 @cindex Macro invocation stack
8809 @command{autom4te} displays a back trace for errors, but not for
8810 warnings; if you want them, just pass @option{-W error}.
8812 @item --melt
8813 @itemx -m
8814 Do not use frozen files.  Any argument @code{@var{file}.m4f} will be
8815 replaced with @code{@var{file}.m4}.  This helps tracing the macros which
8816 are executed only when the files are frozen, typically
8817 @code{m4_define}.  For instance, running:
8819 @example
8820 autom4te --melt 1.m4 2.m4f 3.m4 4.m4f input.m4
8821 @end example
8823 @noindent
8824 is roughly equivalent to running:
8826 @example
8827 m4 1.m4 2.m4 3.m4 4.m4 input.m4
8828 @end example
8830 @noindent
8831 while
8833 @example
8834 autom4te 1.m4 2.m4f 3.m4 4.m4f input.m4
8835 @end example
8837 @noindent
8838 is equivalent to:
8840 @example
8841 m4 --reload-state=4.m4f input.m4
8842 @end example
8844 @item --freeze
8845 @itemx -f
8846 Produce a frozen state file.  @command{autom4te} freezing is stricter
8847 than M4's: it must produce no warnings, and no output other than empty
8848 lines (a line with white space is @emph{not} empty) and comments
8849 (starting with @samp{#}).  Please, note that contrary to @command{m4},
8850 this options takes no argument:
8852 @example
8853 autom4te 1.m4 2.m4 3.m4 --freeze --output=3.m4f
8854 @end example
8856 @noindent
8857 corresponds to
8859 @example
8860 m4 1.m4 2.m4 3.m4 --freeze-state=3.m4f
8861 @end example
8863 @item --mode=@var{octal-mode}
8864 @itemx -m @var{octal-mode}
8865 Set the mode of the non-traces output to @var{octal-mode}; by default
8866 @samp{0666}.
8867 @end table
8869 @sp 1
8871 @cindex @file{autom4te.cache}
8872 As another additional feature over @command{m4}, @command{autom4te}
8873 caches its results.  @acronym{GNU} M4 is able to produce a regular
8874 output and traces at the same time.  Traces are heavily used in the
8875 @acronym{GNU} Build System: @command{autoheader} uses them to build
8876 @file{config.h.in}, @command{autoreconf} to determine what
8877 @acronym{GNU} Build System components are used, @command{automake} to
8878 ``parse'' @file{configure.ac} etc.  To save the long runs of
8879 @command{m4}, traces are cached while performing regular expansion,
8880 and conversely.  This cache is (actually, the caches are) stored in
8881 the directory @file{autom4te.cache}.  @emph{It can safely be removed}
8882 at any moment (especially if for some reason @command{autom4te}
8883 considers it is trashed).
8885 @table @option
8886 @item --cache=@var{directory}
8887 @itemx -C @var{directory}
8888 Specify the name of the directory where the result should be cached.
8889 Passing an empty value disables caching.  Be sure to pass a relative
8890 file name, as for the time being, global caches are not supported.
8892 @item --no-cache
8893 Don't cache the results.
8895 @item --force
8896 @itemx -f
8897 If a cache is used, consider it obsolete (but update it anyway).
8898 @end table
8900 @sp 1
8902 Because traces are so important to the @acronym{GNU} Build System,
8903 @command{autom4te} provides high level tracing features as compared to
8904 M4, and helps exploiting the cache:
8906 @table @option
8907 @item --trace=@var{macro}[:@var{format}]
8908 @itemx -t @var{macro}[:@var{format}]
8909 Trace the invocations of @var{macro} according to the @var{format}.
8910 Multiple @option{--trace} arguments can be used to list several macros.
8911 Multiple @option{--trace} arguments for a single macro are not
8912 cumulative; instead, you should just make @var{format} as long as
8913 needed.
8915 The @var{format} is a regular string, with newlines if desired, and
8916 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}.  It can
8917 use the following special escapes:
8919 @table @samp
8920 @item $$
8921 The character @samp{$}.
8923 @item $f
8924 The file name from which @var{macro} is called.
8926 @item $l
8927 The line number from which @var{macro} is called.
8929 @item $d
8930 The depth of the @var{macro} call.  This is an M4 technical detail that
8931 you probably don't want to know about.
8933 @item $n
8934 The name of the @var{macro}.
8936 @item $@var{num}
8937 The @var{num}th argument of the call to @var{macro}.
8939 @item $@@
8940 @itemx $@var{sep}@@
8941 @itemx $@{@var{separator}@}@@
8942 All the arguments passed to @var{macro}, separated by the character
8943 @var{sep} or the string @var{separator} (@samp{,} by default).  Each
8944 argument is quoted, i.e., enclosed in a pair of square brackets.
8946 @item $*
8947 @itemx $@var{sep}*
8948 @itemx $@{@var{separator}@}*
8949 As above, but the arguments are not quoted.
8951 @item $%
8952 @itemx $@var{sep}%
8953 @itemx $@{@var{separator}@}%
8954 As above, but the arguments are not quoted, all new line characters in
8955 the arguments are smashed, and the default separator is @samp{:}.
8957 The escape @samp{$%} produces single-line trace outputs (unless you put
8958 newlines in the @samp{separator}), while @samp{$@@} and @samp{$*} do
8959 not.
8960 @end table
8962 @xref{autoconf Invocation}, for examples of trace uses.
8964 @item --preselect=@var{macro}
8965 @itemx -p @var{macro}
8966 Cache the traces of @var{macro}, but do not enable traces.  This is
8967 especially important to save CPU cycles in the future.  For instance,
8968 when invoked, @command{autoconf} preselects all the macros that
8969 @command{autoheader}, @command{automake}, @command{autoreconf} etc.@: will
8970 trace, so that running @command{m4} is not needed to trace them: the
8971 cache suffices.  This results in a huge speed-up.
8972 @end table
8974 @sp 1
8976 @cindex Autom4te Library
8977 Finally, @command{autom4te} introduces the concept of @dfn{Autom4te
8978 libraries}.  They consists in a powerful yet extremely simple feature:
8979 sets of combined command line arguments:
8981 @table @option
8982 @item --language=@var{language}
8983 @itemx -l @var{language}
8984 Use the @var{language} Autom4te library.  Current languages include:
8986 @table @code
8987 @item M4sugar
8988 create M4sugar output.
8990 @item M4sh
8991 create M4sh executable shell scripts.
8993 @item Autotest
8994 create Autotest executable test suites.
8996 @item Autoconf-without-aclocal-m4
8997 create Autoconf executable configure scripts without
8998 reading @file{aclocal.m4}.
9000 @item Autoconf
9001 create Autoconf executable configure scripts.  This language inherits
9002 all the characteristics of @code{Autoconf-without-aclocal-m4} and will
9003 additionally read @file{aclocal.m4}.
9004 @end table
9006 @item --prepend-include=@var{dir}
9007 @item -B @var{dir}
9008 Prepend directory @var{dir} to the search path.  This is used to include
9009 the language-specific files before any third-party macros.
9011 @end table
9013 @cindex @file{autom4te.cfg}
9014 As an example, if Autoconf is installed in its default location,
9015 @file{/usr/local}, the command @samp{autom4te -l m4sugar foo.m4} is
9016 strictly equivalent to the command:
9018 @example
9019 autom4te --prepend-include /usr/local/share/autoconf \
9020   m4sugar/m4sugar.m4f --warnings syntax foo.m4
9021 @end example
9023 @noindent
9024 Recursive expansion applies here: the command @samp{autom4te -l m4sh foo.m4}
9025 is the same as @samp{autom4te --language M4sugar m4sugar/m4sh.m4f
9026 foo.m4}, i.e.:
9028 @example
9029 autom4te --prepend-include /usr/local/share/autoconf \
9030   m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4
9031 @end example
9033 @noindent
9034 The definition of the languages is stored in @file{autom4te.cfg}.
9036 @node Customizing autom4te
9037 @subsection Customizing @command{autom4te}
9039 One can customize @command{autom4te} via @file{~/.autom4te.cfg} (i.e.,
9040 as found in the user home directory), and @file{./.autom4te.cfg} (i.e.,
9041 as found in the directory from which @command{autom4te} is run).  The
9042 order is first reading @file{autom4te.cfg}, then @file{~/.autom4te.cfg},
9043 then @file{./.autom4te.cfg}, and finally the command line arguments.
9045 In these text files, comments are introduced with @code{#}, and empty
9046 lines are ignored.  Customization is performed on a per-language basis,
9047 wrapped in between a @samp{begin-language: "@var{language}"},
9048 @samp{end-language: "@var{language}"} pair.
9050 Customizing a language stands for appending options (@pxref{autom4te
9051 Invocation}) to the current definition of the language.  Options, and
9052 more generally arguments, are introduced by @samp{args:
9053 @var{arguments}}.  You may use the traditional shell syntax to quote the
9054 @var{arguments}.
9056 As an example, to disable Autoconf caches (@file{autom4te.cache})
9057 globally, include the following lines in @file{~/.autom4te.cfg}:
9059 @verbatim
9060 ## ------------------ ##
9061 ## User Preferences.  ##
9062 ## ------------------ ##
9064 begin-language: "Autoconf-without-aclocal-m4"
9065 args: --no-cache
9066 end-language: "Autoconf-without-aclocal-m4"
9067 @end verbatim
9070 @node Programming in M4sugar
9071 @section Programming in M4sugar
9073 @cindex M4sugar
9074 M4 by itself provides only a small, but sufficient, set of all-purpose
9075 macros.  M4sugar introduces additional generic macros.  Its name was
9076 coined by Lars J. Aas: ``Readability And Greater Understanding Stands 4
9077 M4sugar''.
9079 @menu
9080 * Redefined M4 Macros::         M4 builtins changed in M4sugar
9081 * Looping constructs::          Iteration in M4
9082 * Evaluation Macros::           More quotation and evaluation control
9083 * Text processing Macros::      String manipulation in M4
9084 * Forbidden Patterns::          Catching unexpanded macros
9085 @end menu
9087 @node Redefined M4 Macros
9088 @subsection Redefined M4 Macros
9090 @msindex{builtin}
9091 @msindex{decr}
9092 @msindex{define}
9093 @msindex{dumpdef}
9094 @msindex{errprint}
9095 @msindex{esyscmd}
9096 @msindex{eval}
9097 @msindex{format}
9098 @msindex{ifdef}
9099 @msindex{incr}
9100 @msindex{index}
9101 @msindex{indir}
9102 @msindex{len}
9103 @msindex{maketemp}
9104 @msindex{pushdef}
9105 @msindex{shift}
9106 @msindex{substr}
9107 @msindex{syscmd}
9108 @msindex{sysval}
9109 @msindex{translit}
9110 @msindex{undefine}
9111 With a few exceptions, all the M4 native macros are moved in the
9112 @samp{m4_} pseudo-namespace, e.g., M4sugar renames @code{define} as
9113 @code{m4_define} etc.
9115 Some M4 macros are redefined, and are slightly incompatible with their
9116 native equivalent.
9118 @defmac dnl
9119 @msindex{dnl}
9120 This macro kept its original name: no @code{m4_dnl} is defined.
9121 @end defmac
9123 @defmac m4_defn (@var{macro})
9124 @msindex{defn}
9125 Contrary to the M4 builtin, this macro fails if @var{macro} is not
9126 defined.  See @code{m4_undefine}.
9127 @end defmac
9129 @defmac m4_exit (@var{exit-status})
9130 @msindex{exit}
9131 This macro corresponds to @code{m4exit}.
9132 @end defmac
9134 @defmac m4_if (@var{comment})
9135 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @ovar{not-equal})
9136 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @dots{})
9137 @msindex{if}
9138 This macro corresponds to @code{ifelse}.
9139 @end defmac
9141 @defmac m4_include (@var{file})
9142 @defmacx m4_sinclude (@var{file})
9143 @msindex{include}
9144 @msindex{sinclude}
9145 Like the M4 builtins, but warn against multiple inclusions of @var{file}.
9146 @end defmac
9148 @defmac m4_bpatsubst (@var{string}, @var{regexp}, @ovar{replacement})
9149 @msindex{bpatsubst}
9150 This macro corresponds to @code{patsubst}.  The name @code{m4_patsubst}
9151 is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
9152 provide extended regular expression syntax via @code{epatsubst}.
9153 @end defmac
9155 @defmac m4_popdef (@var{macro})
9156 @msindex{popdef}
9157 Contrary to the M4 builtin, this macro fails if @var{macro} is not
9158 defined.  See @code{m4_undefine}.
9159 @end defmac
9161 @defmac m4_bregexp (@var{string}, @var{regexp}, @ovar{replacement})
9162 @msindex{bregexp}
9163 This macro corresponds to @code{regexp}.  The name @code{m4_regexp}
9164 is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
9165 provide extended regular expression syntax via @code{eregexp}.
9166 @end defmac
9168 @defmac m4_wrap (@var{text})
9169 @msindex{wrap}
9170 This macro corresponds to @code{m4wrap}.
9172 You are encouraged to end @var{text} with @samp{[]}, so that there are
9173 no risks that two consecutive invocations of @code{m4_wrap} result in an
9174 unexpected pasting of tokens, as in
9176 @example
9177 m4_define([foo], [Foo])
9178 m4_define([bar], [Bar])
9179 m4_define([foobar], [FOOBAR])
9180 m4_wrap([bar])
9181 m4_wrap([foo])
9182 @result{}FOOBAR
9183 @end example
9184 @end defmac
9186 @defmac m4_undefine (@var{macro})
9187 @msindex{undefine}
9188 Contrary to the M4 builtin, this macro fails if @var{macro} is not
9189 defined.  Use
9191 @example
9192 m4_ifdef([@var{macro}], [m4_undefine([@var{macro}])])
9193 @end example
9195 @noindent
9196 to recover the behavior of the builtin.
9197 @end defmac
9201 @node Looping constructs
9202 @subsection Looping constructs
9204 The following macros implement loops in M4.
9206 @defmac m4_for (@var{var}, @var{first}, @var{last}, @ovar{step}, @var{expression})
9207 @msindex{for}
9208 Loop over the numeric values between @var{first} and @var{last}
9209 including bounds by increments of @var{step}.  For each iteration,
9210 expand @var{expression} with the numeric value assigned to @var{var}.
9211 If @var{step} is omitted, it defaults to @samp{1} or @samp{-1} depending
9212 on the order of the limits.  If given, @var{step} has to match this
9213 order.
9214 @end defmac
9216 @defmac m4_foreach (@var{var}, @var{list}, @var{expression})
9217 @msindex{foreach}
9218 Loop over the comma-separated m4 list @var{list}, assigning each value
9219 to @var{var}, and expand @var{expression}.  The following example will
9220 output two lines:
9222 @example
9223 m4_foreach([myvar], [[foo], [bar, baz]],
9224            [echo myvar
9227 @end example
9228 @end defmac
9230 @defmac m4_foreach_w (@var{var}, @var{list}, @var{expression})
9231 @msindex{foreach_w}
9232 Loop over the whitespace-separated list @var{list}, assigning each value
9233 to @var{var}, and expand @var{expression}.
9235 The deprecated macro @code{AC_FOREACH} is an alias of
9236 @code{m4_foreach_w}.
9237 @end defmac
9241 @node Evaluation Macros
9242 @subsection Evaluation Macros
9244 The following macros give some control over the order of the evaluation
9245 by adding or removing levels of quotes.  They are meant for hard-core M4
9246 programmers.
9248 @defmac m4_dquote (@var{arg1}, @dots{})
9249 @msindex{dquote}
9250 Return the arguments as a quoted list of quoted arguments.
9251 @end defmac
9253 @defmac m4_quote (@var{arg1}, @dots{})
9254 @msindex{quote}
9255 Return the arguments as a single entity, i.e., wrap them into a pair of
9256 quotes.
9257 @end defmac
9259 The following example aims at emphasizing the difference between (i), not
9260 using these macros, (ii), using @code{m4_quote}, and (iii), using
9261 @code{m4_dquote}.
9263 @example
9264 $ @kbd{cat example.m4}
9265 # Overquote, so that quotes are visible.
9266 m4_define([show], [$[]1 = [$1], $[]@@ = [$@@]])
9267 m4_divert(0)dnl
9268 show(a, b)
9269 show(m4_quote(a, b))
9270 show(m4_dquote(a, b))
9271 $ @kbd{autom4te -l m4sugar example.m4}
9272 $1 = a, $@@ = [a],[b]
9273 $1 = a,b, $@@ = [a,b]
9274 $1 = [a],[b], $@@ = [[a],[b]]
9275 @end example
9279 @node Text processing Macros
9280 @subsection Text processing Macros
9282 The following macros may be used to manipulate strings in M4.
9283 They are not intended for casual use.
9285 @defmac m4_re_escape (@var{string})
9286 @msindex{re_escape}
9287 Backslash-escape all characters in @var{string} that are active in
9288 regexps.
9289 @end defmac
9291 @defmac m4_tolower (@var{string})
9292 @defmacx m4_toupper (@var{string})
9293 @msindex{tolower}
9294 @msindex{toupper}
9295 Return @var{string} with letters converted to upper or lower case,
9296 respectively.
9297 @end defmac
9299 @defmac m4_split (@var{string}, @ovar{regexp})
9300 @msindex{split}
9301 Split @var{string} into an M4 list of elements quoted by @samp{[} and
9302 @samp{]}, while keeping white space at the beginning and at the end.
9303 If @var{regexp} is given, use it instead of @samp{[\t ]+} for splitting.
9304 If @var{string} is empty, the result is an empty list.
9305 @end defmac
9307 @defmac m4_normalize (@var{string})
9308 @msindex{normalize}
9309 Remove leading and trailing spaces and tabs, sequences of
9310 backslash-then-newline, and replace multiple spaces and tabs with a
9311 single space.
9312 @end defmac
9314 @defmac m4_append (@var{macro-name}, @var{string}, @ovar{separator})
9315 @defmacx m4_append_uniq (@var{macro-name}, @var{string}, @ovar{separator})
9316 @msindex{append}
9317 @msindex{append_uniq}
9318 Redefine @var{macro-name} to its former contents with @var{separator}
9319 and @var{string} added at the end.  If @var{macro-name} was undefined
9320 before (but not if it was defined but empty), then no @var{separator} is
9321 added.  @code{m4_append} can be used to grow strings, and
9322 @code{m4_append_uniq} to grow strings without duplicating substrings.
9323 @end defmac
9327 @node Forbidden Patterns
9328 @subsection Forbidden Patterns
9329 @cindex Forbidden patterns
9330 @cindex Patterns, forbidden
9332 M4sugar provides a means to define suspicious patterns, patterns
9333 describing tokens which should not be found in the output.  For
9334 instance, if an Autoconf @file{configure} script includes tokens such as
9335 @samp{AC_DEFINE}, or @samp{dnl}, then most probably something went
9336 wrong (typically a macro was not evaluated because of overquotation).
9338 M4sugar forbids all the tokens matching @samp{^m4_} and @samp{^dnl$}.
9340 @defmac m4_pattern_forbid (@var{pattern})
9341 @msindex{pattern_forbid}
9342 Declare that no token matching @var{pattern} must be found in the output.
9343 Comments are not checked; this can be a problem if, for instance, you
9344 have some macro left unexpanded after an @samp{#include}.  No consensus
9345 is currently found in the Autoconf community, as some people consider it
9346 should be valid to name macros in comments (which doesn't make sense to
9347 the author of this documentation, as @samp{#}-comments should document
9348 the output, not the input, documented by @samp{dnl} comments).
9349 @end defmac
9351 Of course, you might encounter exceptions to these generic rules, for
9352 instance you might have to refer to @samp{$m4_flags}.
9354 @defmac m4_pattern_allow (@var{pattern})
9355 @msindex{pattern_allow}
9356 Any token matching @var{pattern} is allowed, including if it matches an
9357 @code{m4_pattern_forbid} pattern.
9358 @end defmac
9360 @node Programming in M4sh
9361 @section Programming in M4sh
9363 @c FIXME: Eventually will become a chapter, as it is not related to
9364 @c programming in M4 per se.
9366 M4sh, pronounced ``mash'', is aiming at producing portable Bourne shell
9367 scripts.  This name was coined by Lars J. Aas, who notes that,
9368 according to the Webster's Revised Unabridged Dictionary (1913):
9370 @quotation
9371 Mash \Mash\, n.  [Akin to G. meisch, maisch, meische, maische, mash,
9372 wash, and prob.@: to AS. miscian to mix.  See ``Mix''.]
9374 @enumerate 1
9375 @item
9376 A mass of mixed ingredients reduced to a soft pulpy state by beating or
9377 pressure@enddots{}
9379 @item
9380 A mixture of meal or bran and water fed to animals.
9382 @item
9383 A mess; trouble.  [Obs.] --Beau.@: & Fl.
9384 @end enumerate
9385 @end quotation
9388 For the time being, it is not mature enough to be widely used.
9390 M4sh provides portable alternatives for some common shell constructs
9391 that unfortunately are not portable in practice.
9393 @defmac AS_BASENAME (@var{file-name})
9394 @asindex{BASENAME}
9395 Output the non-directory portion of @var{file-name}.  For example,
9396 if @code{$file} is @samp{/one/two/three}, the command
9397 @code{base=`AS_BASENAME(["$file"])`} sets @code{base} to @samp{three}.
9398 @end defmac
9400 @defmac AS_BOURNE_COMPATIBLE
9401 @asindex{BOURNE_COMPATIBLE}
9402 Set up the shell to be more compatible with the Bourne shell as
9403 standardized by Posix, if possible.  This may involve setting
9404 environment variables, or setting options, or similar
9405 implementation-specific actions.
9406 @end defmac
9408 @defmac AS_CASE (@var{word}, @ovar{pattern1}, @ovar{if-matched1}, @dots{}, @ovar{default})
9409 @asindex{CASE}
9410 Expand into a shell @samp{case} statement, where @var{word} is matched
9411 against one or more patterns.  @var{if-matched} is run if the
9412 corresponding pattern matched @var{word}, else @var{default} is run.
9413 @end defmac
9415 @defmac AS_DIRNAME (@var{file-name})
9416 @asindex{DIRNAME}
9417 Output the directory portion of @var{file-name}.  For example,
9418 if @code{$file} is @samp{/one/two/three}, the command
9419 @code{dir=`AS_DIRNAME(["$file"])`} sets @code{dir} to @samp{/one/two}.
9420 @end defmac
9422 @defmac AS_IF (@var{test1}, @ovar{run-if-true1}, @dots{}, @ovar{run-if-false})
9423 @asindex{IF}
9424 Run shell code @var{test1}.  If @var{test1} exits with a zero status then
9425 run shell code @var{run-if-true1}, else examine further tests.  If no test
9426 exits with a zero status, run shell code @var{run-if-false}, with
9427 simplifications if either @var{run-if-true1} or @var{run-if-false1}
9428 is empty.  For example,
9430 @example
9431 AS_IF([test "$foo" = yes], [HANDLE_FOO([yes])],
9432       [test "$foo" != no], [HANDLE_FOO([maybe])],
9433       [echo foo not specified])
9434 @end example
9436 @noindent
9437 will make sure any @code{AC_REQUIRE}'s macros of @code{HANDLE_FOO} will
9438 be expanded before the first test.
9439 @end defmac
9441 @defmac AS_MKDIR_P (@var{file-name})
9442 @asindex{MKDIR_P}
9443 Make the directory @var{file-name}, including intervening directories
9444 as necessary.  This is equivalent to @samp{mkdir -p @var{file-name}},
9445 except that it is portable to older versions of @command{mkdir} that
9446 lack support for the @option{-p} option.  Also, @code{AS_MKDIR_P}
9447 succeeds if @var{file-name} is a symbolic link to an existing directory,
9448 even though Posix is unclear whether @samp{mkdir -p} should
9449 succeed in that case.
9450 @end defmac
9452 @defmac AS_SHELL_SANITIZE
9453 @asindex{SHELL_SANITIZE}
9454 Initialize the shell suitably for @code{configure} scripts.  This has
9455 the effect of @code{AS_BOURNE_COMPATIBLE}, and sets some other
9456 environment variables for predictable results from configuration tests.
9457 For example, it sets @env{LC_ALL} to change to the default C locale.
9458 @xref{Special Shell Variables}.
9459 @end defmac
9461 @defmac AS_TR_CPP (@var{expression})
9462 @asindex{TR_CPP}
9463 Transform @var{expression} into a valid right-hand side for a C @code{#define}.
9464 For example:
9466 @example
9467 $ type="char *"
9468 $ echo "#define AS_TR_CPP([HAVE_$type]) 1"
9469 #define HAVE_CHAR_P 1
9470 @end example
9471 @end defmac
9473 @defmac AS_TR_SH (@var{expression})
9474 @asindex{TR_SH}
9475 Transform @var{expression} into a valid shell variable name.  For example:
9477 @example
9478 $ header="sys/some file.h"
9479 $ AS_TR_SH([HAVE_$header])=yes
9480 $ if test "$HAVE_sys_some_file_h" = yes; then echo "Have it!"; fi
9481 Have it!
9482 @end example
9483 @end defmac
9485 @defmac AS_SET_CATFILE (@var{var}, @var{dir}, @var{file})
9486 @asindex{SET_CATFILE}
9487 Set the shell variable @var{var} to @var{dir}/@var{file}, but
9488 optimizing the common cases (@var{dir} or @var{file} is @samp{.},
9489 @var{file} is absolute, etc.).
9490 @end defmac
9493 @node File Descriptor Macros
9494 @section File Descriptor Macros
9495 @cindex input
9496 @cindex standard input
9497 @cindex file descriptors
9498 @cindex descriptors
9499 @cindex low-level output
9500 @cindex output, low-level
9502 The following macros define file descriptors used to output messages
9503 (or input values) from @file{configure} scripts.
9504 For example:
9506 @example
9507 echo "$wombats found" >&AS_MESSAGE_LOG_FD
9508 echo 'Enter desired kangaroo count:' >&AS_MESSAGE_FD
9509 read kangaroos <&AS_ORIGINAL_STDIN_FD`
9510 @end example
9512 @noindent
9513 However doing so is seldom needed, because Autoconf provides higher
9514 level macros as described below.
9516 @defmac AS_MESSAGE_FD
9517 @asindex{MESSAGE_FD}
9518 The file descriptor for @samp{checking for...}  messages and results.
9519 Normally this directs messages to the standard output, however when
9520 @command{configure} is run with the @code{-q} option, messages sent to
9521 @code{AS_MESSAGE_FD} will be discarded.
9523 If you want to display some messages, consider using one of the printing
9524 macros (@pxref{Printing Messages}) instead.  Copies of messages output
9525 via these macros will additionally be recorded in @file{config.log}.
9526 @end defmac
9528 @defmac AS_MESSAGE_LOG_FD
9529 @asindex{MESSAGE_LOG_FD}
9531 The file descriptor for messages logged to @file{config.log}.  Macros
9532 that run tools, like @code{AC_COMPILE_IFELSE} (@pxref{Running the
9533 Compiler}), redirect all output to this descriptor.  You may want to do
9534 so if you develop such a low-level macro.
9535 @end defmac
9537 @defmac AS_ORIGINAL_STDIN_FD
9538 @asindex{ORIGINAL_STDIN_FD}
9539 The file descriptor for the original standard input.
9541 When @command{configure} runs, it may accidentally execute an
9542 interactive command that has the same name as the non-interactive meant
9543 to be used or checked.  If the standard input was the terminal, such
9544 interactive programs would cause @command{configure} to stop, pending
9545 some user input.  Therefore @command{configure} redirects its standard
9546 input from @file{/dev/null} during its initialization.  This is not
9547 normally a problem, since @command{configure} normally does not need
9548 user input.
9550 In the extreme case where your @file{configure} script really needs to
9551 obtain some values from the original standard input, you can read them
9552 explicitly from @code{AS_ORIGINAL_STDIN_FD}.
9553 @end defmac
9556 @c =================================================== Writing Autoconf Macros.
9558 @node Writing Autoconf Macros
9559 @chapter Writing Autoconf Macros
9561 When you write a feature test that could be applicable to more than one
9562 software package, the best thing to do is encapsulate it in a new macro.
9563 Here are some instructions and guidelines for writing Autoconf macros.
9565 @menu
9566 * Macro Definitions::           Basic format of an Autoconf macro
9567 * Macro Names::                 What to call your new macros
9568 * Reporting Messages::          Notifying @command{autoconf} users
9569 * Dependencies Between Macros::  What to do when macros depend on other macros
9570 * Obsoleting Macros::           Warning about old ways of doing things
9571 * Coding Style::                Writing Autoconf macros @`a la Autoconf
9572 @end menu
9574 @node Macro Definitions
9575 @section Macro Definitions
9577 @acindex{DEFUN}
9578 Autoconf macros are defined using the @code{AC_DEFUN} macro, which is
9579 similar to the M4 builtin @code{m4_define} macro.  In addition to
9580 defining a macro, @code{AC_DEFUN} adds to it some code that is used to
9581 constrain the order in which macros are called (@pxref{Prerequisite
9582 Macros}).
9584 An Autoconf macro definition looks like this:
9586 @example
9587 AC_DEFUN(@var{macro-name}, @var{macro-body})
9588 @end example
9590 You can refer to any arguments passed to the macro as @samp{$1},
9591 @samp{$2}, etc.  @xref{Definitions, , How to define new macros, m4.info,
9592 @acronym{GNU} m4}, for more complete information on writing M4 macros.
9594 Be sure to properly quote both the @var{macro-body} @emph{and} the
9595 @var{macro-name} to avoid any problems if the macro happens to have
9596 been previously defined.
9598 Each macro should have a header comment that gives its prototype, and a
9599 brief description.  When arguments have default values, display them in
9600 the prototype.  For example:
9602 @example
9603 # AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
9604 # --------------------------------------
9605 m4_define([AC_MSG_ERROR],
9606   [@{ AS_MESSAGE([error: $1], [2])
9607      exit m4_default([$2], [1]); @}])
9608 @end example
9610 Comments about the macro should be left in the header comment.  Most
9611 other comments will make their way into @file{configure}, so just keep
9612 using @samp{#} to introduce comments.
9614 @cindex @code{dnl}
9615 If you have some very special comments about pure M4 code, comments
9616 that make no sense in @file{configure} and in the header comment, then
9617 use the builtin @code{dnl}: it causes M4 to discard the text
9618 through the next newline.
9620 Keep in mind that @code{dnl} is rarely needed to introduce comments;
9621 @code{dnl} is more useful to get rid of the newlines following macros
9622 that produce no output, such as @code{AC_REQUIRE}.
9625 @node Macro Names
9626 @section Macro Names
9628 All of the Autoconf macros have all-uppercase names starting with
9629 @samp{AC_} to prevent them from accidentally conflicting with other
9630 text.  All shell variables that they use for internal purposes have
9631 mostly-lowercase names starting with @samp{ac_}.  To ensure that your
9632 macros don't conflict with present or future Autoconf macros, you should
9633 prefix your own macro names and any shell variables they use with some
9634 other sequence.  Possibilities include your initials, or an abbreviation
9635 for the name of your organization or software package.
9637 Most of the Autoconf macros' names follow a structured naming convention
9638 that indicates the kind of feature check by the name.  The macro names
9639 consist of several words, separated by underscores, going from most
9640 general to most specific.  The names of their cache variables use the
9641 same convention (@pxref{Cache Variable Names}, for more information on
9642 them).
9644 The first word of the name after @samp{AC_} usually tells the category
9645 of the feature being tested.  Here are the categories used in Autoconf for
9646 specific test macros, the kind of macro that you are more likely to
9647 write.  They are also used for cache variables, in all-lowercase.  Use
9648 them where applicable; where they're not, invent your own categories.
9650 @table @code
9651 @item C
9652 C language builtin features.
9653 @item DECL
9654 Declarations of C variables in header files.
9655 @item FUNC
9656 Functions in libraries.
9657 @item GROUP
9658 Posix group owners of files.
9659 @item HEADER
9660 Header files.
9661 @item LIB
9662 C libraries.
9663 @item PATH
9664 Absolute names of files, including programs.
9665 @item PROG
9666 The base names of programs.
9667 @item MEMBER
9668 Members of aggregates.
9669 @item SYS
9670 Operating system features.
9671 @item TYPE
9672 C builtin or declared types.
9673 @item VAR
9674 C variables in libraries.
9675 @end table
9677 After the category comes the name of the particular feature being
9678 tested.  Any further words in the macro name indicate particular aspects
9679 of the feature.  For example, @code{AC_FUNC_UTIME_NULL} checks the
9680 behavior of the @code{utime} function when called with a @code{NULL}
9681 pointer.
9683 An internal macro should have a name that starts with an underscore;
9684 Autoconf internals should therefore start with @samp{_AC_}.
9685 Additionally, a macro that is an internal subroutine of another macro
9686 should have a name that starts with an underscore and the name of that
9687 other macro, followed by one or more words saying what the internal
9688 macro does.  For example, @code{AC_PATH_X} has internal macros
9689 @code{_AC_PATH_X_XMKMF} and @code{_AC_PATH_X_DIRECT}.
9691 @node Reporting Messages
9692 @section Reporting Messages
9693 @cindex Messages, from @command{autoconf}
9695 When macros statically diagnose abnormal situations, benign or fatal,
9696 they should report them using these macros.  For dynamic issues, i.e.,
9697 when @command{configure} is run, see @ref{Printing Messages}.
9699 @defmac AC_DIAGNOSE (@var{category}, @var{message})
9700 @acindex{DIAGNOSE}
9701 Report @var{message} as a warning (or as an error if requested by the
9702 user) if warnings of the @var{category} are turned on.  You are
9703 encouraged to use standard categories, which currently include:
9705 @table @samp
9706 @item all
9707 messages that don't fall into one of the following categories.  Use of an
9708 empty @var{category} is equivalent.
9710 @item cross
9711 related to cross compilation issues.
9713 @item obsolete
9714 use of an obsolete construct.
9716 @item syntax
9717 dubious syntactic constructs, incorrectly ordered macro calls.
9718 @end table
9719 @end defmac
9721 @defmac AC_WARNING (@var{message})
9722 @acindex{WARNING}
9723 Equivalent to @samp{AC_DIAGNOSE([syntax], @var{message})}, but you are
9724 strongly encouraged to use a finer grained category.
9725 @end defmac
9727 @defmac AC_FATAL (@var{message})
9728 @acindex{FATAL}
9729 Report a severe error @var{message}, and have @command{autoconf} die.
9730 @end defmac
9732 When the user runs @samp{autoconf -W error}, warnings from
9733 @code{AC_DIAGNOSE} and @code{AC_WARNING} are reported as error, see
9734 @ref{autoconf Invocation}.
9736 @node Dependencies Between Macros
9737 @section Dependencies Between Macros
9738 @cindex Dependencies between macros
9740 Some Autoconf macros depend on other macros having been called first in
9741 order to work correctly.  Autoconf provides a way to ensure that certain
9742 macros are called if needed and a way to warn the user if macros are
9743 called in an order that might cause incorrect operation.
9745 @menu
9746 * Prerequisite Macros::         Ensuring required information
9747 * Suggested Ordering::          Warning about possible ordering problems
9748 * One-Shot Macros::             Ensuring a macro is called only once
9749 @end menu
9751 @node Prerequisite Macros
9752 @subsection Prerequisite Macros
9753 @cindex Prerequisite macros
9754 @cindex Macros, prerequisites
9756 A macro that you write might need to use values that have previously
9757 been computed by other macros.  For example, @code{AC_DECL_YYTEXT}
9758 examines the output of @code{flex} or @code{lex}, so it depends on
9759 @code{AC_PROG_LEX} having been called first to set the shell variable
9760 @code{LEX}.
9762 Rather than forcing the user of the macros to keep track of the
9763 dependencies between them, you can use the @code{AC_REQUIRE} macro to do
9764 it automatically.  @code{AC_REQUIRE} can ensure that a macro is only
9765 called if it is needed, and only called once.
9767 @defmac AC_REQUIRE (@var{macro-name})
9768 @acindex{REQUIRE}
9769 If the M4 macro @var{macro-name} has not already been called, call it
9770 (without any arguments).  Make sure to quote @var{macro-name} with
9771 square brackets.  @var{macro-name} must have been defined using
9772 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
9773 that it has been called.
9775 @code{AC_REQUIRE} must be used inside an @code{AC_DEFUN}'d macro; it
9776 must not be called from the top level.
9777 @end defmac
9779 @code{AC_REQUIRE} is often misunderstood.  It really implements
9780 dependencies between macros in the sense that if one macro depends upon
9781 another, the latter will be expanded @emph{before} the body of the
9782 former.  To be more precise, the required macro will be expanded before
9783 the outermost @code{AC_DEFUN}'d macro in the current expansion stack.
9784 In particular, @samp{AC_REQUIRE([FOO])} is not replaced with the body of
9785 @code{FOO}.  For instance, this definition of macros:
9787 @example
9788 @group
9789 AC_DEFUN([TRAVOLTA],
9790 [test "$body_temperature_in_celsius" -gt "38" &&
9791   dance_floor=occupied])
9792 AC_DEFUN([NEWTON_JOHN],
9793 [test "$hair_style" = "curly" &&
9794   dance_floor=occupied])
9795 @end group
9797 @group
9798 AC_DEFUN([RESERVE_DANCE_FLOOR],
9799 [if date | grep '^Sat.*pm' >/dev/null 2>&1; then
9800   AC_REQUIRE([TRAVOLTA])
9801   AC_REQUIRE([NEWTON_JOHN])
9802 fi])
9803 @end group
9804 @end example
9806 @noindent
9807 with this @file{configure.ac}
9809 @example
9810 AC_INIT([Dance Manager], [1.0], [bug-dance@@example.org])
9811 RESERVE_DANCE_FLOOR
9812 if test "$dance_floor" = occupied; then
9813   AC_MSG_ERROR([cannot pick up here, let's move])
9815 @end example
9817 @noindent
9818 will not leave you with a better chance to meet a kindred soul at
9819 other times than Saturday night since it expands into:
9821 @example
9822 @group
9823 test "$body_temperature_in_Celsius" -gt "38" &&
9824   dance_floor=occupied
9825 test "$hair_style" = "curly" &&
9826   dance_floor=occupied
9828 if date | grep '^Sat.*pm' >/dev/null 2>&1; then
9832 @end group
9833 @end example
9835 This behavior was chosen on purpose: (i) it prevents messages in
9836 required macros from interrupting the messages in the requiring macros;
9837 (ii) it avoids bad surprises when shell conditionals are used, as in:
9839 @example
9840 @group
9841 if @dots{}; then
9842   AC_REQUIRE([SOME_CHECK])
9844 @dots{}
9845 SOME_CHECK
9846 @end group
9847 @end example
9849 The helper macros @code{AS_IF} and @code{AS_CASE} may be used to
9850 enforce expansion of required macros outside of shell conditional
9851 constructs.  You are furthermore encouraged to put all @code{AC_REQUIRE}s
9852 at the beginning of a macro.  You can use @code{dnl} to avoid the empty
9853 lines they leave.
9855 @node Suggested Ordering
9856 @subsection Suggested Ordering
9857 @cindex Macros, ordering
9858 @cindex Ordering macros
9860 Some macros should be run before another macro if both are called, but
9861 neither @emph{requires} that the other be called.  For example, a macro
9862 that changes the behavior of the C compiler should be called before any
9863 macros that run the C compiler.  Many of these dependencies are noted in
9864 the documentation.
9866 Autoconf provides the @code{AC_BEFORE} macro to warn users when macros
9867 with this kind of dependency appear out of order in a
9868 @file{configure.ac} file.  The warning occurs when creating
9869 @command{configure} from @file{configure.ac}, not when running
9870 @command{configure}.
9872 For example, @code{AC_PROG_CPP} checks whether the C compiler
9873 can run the C preprocessor when given the @option{-E} option.  It should
9874 therefore be called after any macros that change which C compiler is
9875 being used, such as @code{AC_PROG_CC}.  So @code{AC_PROG_CC} contains:
9877 @example
9878 AC_BEFORE([$0], [AC_PROG_CPP])dnl
9879 @end example
9881 @noindent
9882 This warns the user if a call to @code{AC_PROG_CPP} has already occurred
9883 when @code{AC_PROG_CC} is called.
9885 @defmac AC_BEFORE (@var{this-macro-name}, @var{called-macro-name})
9886 @acindex{BEFORE}
9887 Make M4 print a warning message to the standard error output if
9888 @var{called-macro-name} has already been called.  @var{this-macro-name}
9889 should be the name of the macro that is calling @code{AC_BEFORE}.  The
9890 macro @var{called-macro-name} must have been defined using
9891 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
9892 that it has been called.
9893 @end defmac
9895 @node One-Shot Macros
9896 @subsection One-Shot Macros
9897 @cindex One-shot macros
9898 @cindex Macros, called once
9900 Some macros should be called only once, either because calling them
9901 multiple time is unsafe, or because it is bad style.  For instance
9902 Autoconf ensures that @code{AC_CANONICAL_BUILD} and cousins
9903 (@pxref{Canonicalizing}) are evaluated only once, because it makes no
9904 sense to run these expensive checks more than once.  Such one-shot
9905 macros can be defined using @code{AC_DEFUN_ONCE}.
9907 @defmac AC_DEFUN_ONCE (@var{macro-name}, @var{macro-body})
9908 @acindex{DEFUN_ONCE}
9910 Declare macro @var{macro-name} like @code{AC_DEFUN} would (@pxref{Macro
9911 Definitions}), and emit a warning any time the macro is called more than
9912 once.
9913 @end defmac
9915 Obviously it is not sensible to evaluate a macro defined by
9916 @code{AC_DEFUN_ONCE} in a macro defined by @code{AC_DEFUN}, most of the
9917 times you will want to use @code{AC_REQUIRE} (@pxref{Prerequisite
9918 Macros}).
9920 @node Obsoleting Macros
9921 @section Obsoleting Macros
9922 @cindex Obsoleting macros
9923 @cindex Macros, obsoleting
9925 Configuration and portability technology has evolved over the years.
9926 Often better ways of solving a particular problem are developed, or
9927 ad-hoc approaches are systematized.  This process has occurred in many
9928 parts of Autoconf.  One result is that some of the macros are now
9929 considered @dfn{obsolete}; they still work, but are no longer considered
9930 the best thing to do, hence they should be replaced with more modern
9931 macros.  Ideally, @command{autoupdate} should replace the old macro calls
9932 with their modern implementation.
9934 Autoconf provides a simple means to obsolete a macro.
9936 @defmac AU_DEFUN (@var{old-macro}, @var{implementation}, @ovar{message})
9937 @auindex{DEFUN}
9938 Define @var{old-macro} as @var{implementation}.  The only difference
9939 with @code{AC_DEFUN} is that the user will be warned that
9940 @var{old-macro} is now obsolete.
9942 If she then uses @command{autoupdate}, the call to @var{old-macro} will be
9943 replaced by the modern @var{implementation}.  @var{message} should
9944 include information on what to do after running @command{autoupdate};
9945 @command{autoupdate} will print it as a warning, and include it
9946 in the updated @file{configure.ac} file.
9948 The details of this macro are hairy: if @command{autoconf} encounters an
9949 @code{AU_DEFUN}ed macro, all macros inside its second argument are expanded
9950 as usual.  However, when @command{autoupdate} is run, only M4 and M4sugar
9951 macros will be expanded here, while all other macros are disabled and will
9952 appear literally in the updated @file{configure.ac}.
9953 @end defmac
9955 @defmac AU_ALIAS (@var{old-name}, @var{new-name})
9956 @auindex{ALIAS}
9957 Used if the @var{old-name} is to be replaced by a call to @var{new-macro}
9958 with the same parameters.  This happens for example if the macro was renamed.
9959 @end defmac
9961 @node Coding Style
9962 @section Coding Style
9963 @cindex Coding style
9965 The Autoconf macros follow a strict coding style.  You are encouraged to
9966 follow this style, especially if you intend to distribute your macro,
9967 either by contributing it to Autoconf itself, or via other means.
9969 The first requirement is to pay great attention to the quotation.  For
9970 more details, see @ref{Autoconf Language}, and @ref{M4 Quotation}.
9972 Do not try to invent new interfaces.  It is likely that there is a macro
9973 in Autoconf that resembles the macro you are defining: try to stick to
9974 this existing interface (order of arguments, default values, etc.).  We
9975 @emph{are} conscious that some of these interfaces are not perfect;
9976 nevertheless, when harmless, homogeneity should be preferred over
9977 creativity.
9979 Be careful about clashes both between M4 symbols and between shell
9980 variables.
9982 If you stick to the suggested M4 naming scheme (@pxref{Macro Names}),
9983 you are unlikely to generate conflicts.  Nevertheless, when you need to
9984 set a special value, @emph{avoid using a regular macro name}; rather,
9985 use an ``impossible'' name.  For instance, up to version 2.13, the macro
9986 @code{AC_SUBST} used to remember what @var{symbol}s were already defined
9987 by setting @code{AC_SUBST_@var{symbol}}, which is a regular macro name.
9988 But since there is a macro named @code{AC_SUBST_FILE}, it was just
9989 impossible to @samp{AC_SUBST(FILE)}!  In this case,
9990 @code{AC_SUBST(@var{symbol})} or @code{_AC_SUBST(@var{symbol})} should
9991 have been used (yes, with the parentheses)@dots{}or better yet, high-level
9992 macros such as @code{AC_EXPAND_ONCE}.
9994 No Autoconf macro should ever enter the user-variable name space; i.e.,
9995 except for the variables that are the actual result of running the
9996 macro, all shell variables should start with @code{ac_}.  In
9997 addition, small macros or any macro that is likely to be embedded in
9998 other macros should be careful not to use obvious names.
10000 @cindex @code{dnl}
10001 Do not use @code{dnl} to introduce comments: most of the comments you
10002 are likely to write are either header comments which are not output
10003 anyway, or comments that should make their way into @file{configure}.
10004 There are exceptional cases where you do want to comment special M4
10005 constructs, in which case @code{dnl} is right, but keep in mind that it
10006 is unlikely.
10008 M4 ignores the leading blanks and newlines before each argument.
10009 Use this feature to
10010 indent in such a way that arguments are (more or less) aligned with the
10011 opening parenthesis of the macro being called.  For instance, instead of
10013 @example
10014 AC_CACHE_CHECK(for EMX OS/2 environment,
10015 ac_cv_emxos2,
10016 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __EMX__;])],
10017 [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
10018 @end example
10020 @noindent
10021 write
10023 @example
10024 AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10025 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10026                    [ac_cv_emxos2=yes],
10027                    [ac_cv_emxos2=no])])
10028 @end example
10030 @noindent
10031 or even
10033 @example
10034 AC_CACHE_CHECK([for EMX OS/2 environment],
10035                [ac_cv_emxos2],
10036                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
10037                                                    [return __EMX__;])],
10038                                   [ac_cv_emxos2=yes],
10039                                   [ac_cv_emxos2=no])])
10040 @end example
10042 When using @code{AC_RUN_IFELSE} or any macro that cannot work when
10043 cross-compiling, provide a pessimistic value (typically @samp{no}).
10045 Feel free to use various tricks to prevent auxiliary tools, such as
10046 syntax-highlighting editors, from behaving improperly.  For instance,
10047 instead of:
10049 @example
10050 m4_bpatsubst([$1], [$"])
10051 @end example
10053 @noindent
10056 @example
10057 m4_bpatsubst([$1], [$""])
10058 @end example
10060 @noindent
10061 so that Emacsen do not open an endless ``string'' at the first quote.
10062 For the same reasons, avoid:
10064 @example
10065 test $[#] != 0
10066 @end example
10068 @noindent
10069 and use:
10071 @example
10072 test $[@@%:@@] != 0
10073 @end example
10075 @noindent
10076 Otherwise, the closing bracket would be hidden inside a @samp{#}-comment,
10077 breaking the bracket-matching highlighting from Emacsen.  Note the
10078 preferred style to escape from M4: @samp{$[1]}, @samp{$[@@]}, etc.  Do
10079 not escape when it is unnecessary.  Common examples of useless quotation
10080 are @samp{[$]$1} (write @samp{$$1}), @samp{[$]var} (use @samp{$var}),
10081 etc.  If you add portability issues to the picture, you'll prefer
10082 @samp{$@{1+"$[@@]"@}} to @samp{"[$]@@"}, and you'll prefer do something
10083 better than hacking Autoconf @code{:-)}.
10085 When using @command{sed}, don't use @option{-e} except for indenting
10086 purposes.  With the @code{s} and @code{y} commands, the preferred
10087 separator is @samp{/} unless @samp{/} itself might appear in the pattern
10088 or replacement, in which case you should use @samp{|}, or optionally
10089 @samp{,} if you know the pattern and replacement cannot contain a file
10090 name.  If none of these characters will do, choose a printable character
10091 that cannot appear in the pattern or replacement.  Characters from the
10092 set @samp{"#$&'()*;<=>?`|~} are good choices if the pattern or
10093 replacement might contain a file name, since they have special meaning
10094 to the shell and are less likely to occur in file names.
10096 @xref{Macro Definitions}, for details on how to define a macro.  If a
10097 macro doesn't use @code{AC_REQUIRE}, is expected to never be the object
10098 of an @code{AC_REQUIRE} directive, and macros required by other macros
10099 inside arguments will not need to be expanded before this macro, then
10100 use @code{m4_define}.  In case of doubt, use @code{AC_DEFUN}.
10101 All the @code{AC_REQUIRE} statements should be at the beginning of the
10102 macro, @code{dnl}'ed.
10104 You should not rely on the number of arguments: instead of checking
10105 whether an argument is missing, test that it is not empty.  It provides
10106 both a simpler and a more predictable interface to the user, and saves
10107 room for further arguments.
10109 Unless the macro is short, try to leave the closing @samp{])} at the
10110 beginning of a line, followed by a comment that repeats the name of the
10111 macro being defined.  This introduces an additional newline in
10112 @command{configure}; normally, that is not a problem, but if you want to
10113 remove it you can use @samp{[]dnl} on the last line.  You can similarly
10114 use @samp{[]dnl} after a macro call to remove its newline.  @samp{[]dnl}
10115 is recommended instead of @samp{dnl} to ensure that M4 does not
10116 interpret the @samp{dnl} as being attached to the preceding text or
10117 macro output.  For example, instead of:
10119 @example
10120 AC_DEFUN([AC_PATH_X],
10121 [AC_MSG_CHECKING([for X])
10122 AC_REQUIRE_CPP()
10123 @r{# @dots{}omitted@dots{}}
10124   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10125 fi])
10126 @end example
10128 @noindent
10129 you would write:
10131 @example
10132 AC_DEFUN([AC_PATH_X],
10133 [AC_REQUIRE_CPP()[]dnl
10134 AC_MSG_CHECKING([for X])
10135 @r{# @dots{}omitted@dots{}}
10136   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10137 fi[]dnl
10138 ])# AC_PATH_X
10139 @end example
10141 If the macro is long, try to split it into logical chunks.  Typically,
10142 macros that check for a bug in a function and prepare its
10143 @code{AC_LIBOBJ} replacement should have an auxiliary macro to perform
10144 this setup.  Do not hesitate to introduce auxiliary macros to factor
10145 your code.
10147 In order to highlight the recommended coding style, here is a macro
10148 written the old way:
10150 @example
10151 dnl Check for EMX on OS/2.
10152 dnl _AC_EMXOS2
10153 AC_DEFUN(_AC_EMXOS2,
10154 [AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2,
10155 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, return __EMX__;)],
10156 ac_cv_emxos2=yes, ac_cv_emxos2=no)])
10157 test "$ac_cv_emxos2" = yes && EMXOS2=yes])
10158 @end example
10160 @noindent
10161 and the new way:
10163 @example
10164 # _AC_EMXOS2
10165 # ----------
10166 # Check for EMX on OS/2.
10167 m4_define([_AC_EMXOS2],
10168 [AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10169 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10170                    [ac_cv_emxos2=yes],
10171                    [ac_cv_emxos2=no])])
10172 test "$ac_cv_emxos2" = yes && EMXOS2=yes[]dnl
10173 ])# _AC_EMXOS2
10174 @end example
10179 @c ============================================= Portable Shell Programming
10181 @node Portable Shell
10182 @chapter Portable Shell Programming
10183 @cindex Portable shell programming
10185 When writing your own checks, there are some shell-script programming
10186 techniques you should avoid in order to make your code portable.  The
10187 Bourne shell and upward-compatible shells like the Korn shell and Bash
10188 have evolved over the years, but to prevent trouble, do not take
10189 advantage of features that were added after Unix version 7, circa
10190 1977 (@pxref{Systemology}).
10192 You should not use shell functions, aliases, negated character
10193 classes, or other features that are not found in all Bourne-compatible
10194 shells; restrict yourself to the lowest common denominator.  Even
10195 @code{unset} is not supported by all shells!
10197 Some old systems have quite
10198 small limits on the length of the @samp{#!} line; for instance, 32
10199 bytes (not including the newline) on SunOS 4.
10200 A few ancient 4.2@acronym{BSD} based systems (such as Dynix circa 1984)
10201 required a single space between the @samp{#!} and the @samp{/}, but
10202 these are no longer of practical concern.
10204 The set of external programs you should run in a @command{configure} script
10205 is fairly small.  @xref{Utilities in Makefiles, , Utilities in
10206 Makefiles, standards, @acronym{GNU} Coding Standards}, for the list.  This
10207 restriction allows users to start out with a fairly small set of
10208 programs and build the rest, avoiding too many interdependencies between
10209 packages.
10211 Some of these external utilities have a portable subset of features; see
10212 @ref{Limitations of Usual Tools}.
10214 There are other sources of documentation about shells.  See for instance
10215 @uref{http://www.faqs.org/faqs/unix-faq/shell/, the Shell FAQs}.
10217 @menu
10218 * Shellology::                  A zoology of shells
10219 * Here-Documents::              Quirks and tricks
10220 * File Descriptors::            FDs and redirections
10221 * File System Conventions::     File names
10222 * Shell Substitutions::         Variable and command expansions
10223 * Assignments::                 Varying side effects of assignments
10224 * Parentheses::                 Parentheses in shell scripts
10225 * Slashes::                     Slashes in shell scripts
10226 * Special Shell Variables::     Variables you should not change
10227 * Limitations of Builtins::     Portable use of not so portable /bin/sh
10228 * Limitations of Usual Tools::  Portable use of portable tools
10229 * Limitations of Make::         Portable Makefiles
10230 @end menu
10232 @node Shellology
10233 @section Shellology
10234 @cindex Shellology
10236 There are several families of shells, most prominently the Bourne family
10237 and the C shell family which are deeply incompatible.  If you want to
10238 write portable shell scripts, avoid members of the C shell family.  The
10239 @uref{http://www.faqs.org/faqs/unix-faq/shell/shell-differences/, the
10240 Shell difference FAQ} includes a small history of Posix shells, and a
10241 comparison between several of them.
10243 Below we describe some of the members of the Bourne shell family.
10245 @table @asis
10246 @item Ash
10247 @cindex Ash
10248 Ash is often used on @acronym{GNU}/Linux and @acronym{BSD}
10249 systems as a light-weight Bourne-compatible shell.  Ash 0.2 has some
10250 bugs that are fixed in the 0.3.x series, but portable shell scripts
10251 should work around them, since version 0.2 is still shipped with many
10252 @acronym{GNU}/Linux distributions.
10254 To be compatible with Ash 0.2:
10256 @itemize @minus
10257 @item
10258 don't use @samp{$?} after expanding empty or unset variables,
10259 or at the start of an @command{eval}:
10261 @example
10262 foo=
10263 false
10264 $foo
10265 echo "Do not use it: $?"
10266 false
10267 eval 'echo "Do not use it: $?"'
10268 @end example
10270 @item
10271 don't use command substitution within variable expansion:
10273 @example
10274 cat $@{FOO=`bar`@}
10275 @end example
10277 @item
10278 beware that single builtin substitutions are not performed by a
10279 subshell, hence their effect applies to the current shell!  @xref{Shell
10280 Substitutions}, item ``Command Substitution''.
10281 @end itemize
10283 @item Bash
10284 @cindex Bash
10285 To detect whether you are running Bash, test whether
10286 @code{BASH_VERSION} is set.  To require
10287 Posix compatibility, run @samp{set -o posix}.  @xref{Bash POSIX
10288 Mode, , Bash Posix Mode, bash, The @acronym{GNU} Bash Reference
10289 Manual}, for details.
10291 @item Bash 2.05 and later
10292 @cindex Bash 2.05 and later
10293 Versions 2.05 and later of Bash use a different format for the
10294 output of the @command{set} builtin, designed to make evaluating its
10295 output easier.  However, this output is not compatible with earlier
10296 versions of Bash (or with many other shells, probably).  So if
10297 you use Bash 2.05 or higher to execute @command{configure},
10298 you'll need to use Bash 2.05 for all other build tasks as well.
10300 @item Ksh
10301 @cindex Ksh
10302 @cindex Korn shell
10303 @prindex @samp{ksh}
10304 @prindex @samp{ksh88}
10305 @prindex @samp{ksh93}
10306 The Korn shell is compatible with the Bourne family and it mostly
10307 conforms to Posix.  It has two major variants commonly
10308 called @samp{ksh88} and @samp{ksh93}, named after the years of initial
10309 release.  It is usually called @command{ksh}, but is called @command{sh}
10310 on some hosts if you set your path appropriately.
10312 Solaris systems have three variants:
10313 @prindex @command{/usr/bin/ksh} on Solaris
10314 @command{/usr/bin/ksh} is @samp{ksh88}; it is
10315 standard on Solaris 2.0 and later.
10316 @prindex @command{/usr/xpg4/bin/sh} on Solaris
10317 @command{/usr/xpg4/bin/sh} is a Posix-compliant variant of
10318 @samp{ksh88}; it is standard on Solaris 9 and later.
10319 @prindex @command{/usr/dt/bin/dtksh} on Solaris
10320 @command{/usr/dt/bin/dtksh} is @samp{ksh93}.
10321 Variants that are not standard may be parts of optional
10322 packages.  There is no extra charge for these packages, but they are
10323 not part of a minimal OS install and therefore some installations may
10324 not have it.
10326 Starting with Tru64 Version 4.0, the Korn shell @command{/usr/bin/ksh}
10327 is also available as @command{/usr/bin/posix/sh}.  If the environment
10328 variable @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
10329 the standard shell conform to Posix.
10331 @item Pdksh
10332 @prindex @samp{pdksh}
10333 A public-domain clone of the Korn shell called @command{pdksh} is widely
10334 available: it has most of the @samp{ksh88} features along with a few of
10335 its own.  It will usually set @code{KSH_VERSION}, except if invoked as
10336 @command{/bin/sh} on Open@acronym{BSD}, and similarly to Bash you can require
10337 Posix compatibility by running @samp{set -o posix}.  Unfortunately, with
10338 @command{pdksh} 5.2.14 (the latest stable version as of February 2006)
10339 Posix mode is buggy and causes @command{pdksh} to depart from Posix in
10340 at least one respect:
10342 @example
10343 $ echo "`echo \"hello\"`"
10344 hello
10345 $ set -o posix
10346 $ echo "`echo \"hello\"`"
10347 "hello"
10348 @end example
10350 The last line of output contains spurious quotes.  This is yet another
10351 reason why portable shell code should not contain
10352 @code{"`@dots{}\"@dots{}\"@dots{}`"} constructs (@pxref{Shell
10353 Substitutions}).
10355 @item Zsh
10356 @cindex Zsh
10357 To detect whether you are running @command{zsh}, test whether
10358 @code{ZSH_VERSION} is set.  By default @command{zsh} is @emph{not}
10359 compatible with the Bourne shell: you must execute @samp{emulate sh},
10360 and for @command{zsh} versions before 3.1.6-dev-18 you must also
10361 set @code{NULLCMD} to @samp{:}.  @xref{Compatibility, , Compatibility,
10362 zsh, The Z Shell Manual}, for details.
10364 The default Mac OS X @command{sh} was originally Zsh; it was changed to
10365 Bash in Mac OS X 10.2.
10366 @end table
10368 The following discussion between Russ Allbery and Robert Lipe is worth
10369 reading:
10371 @noindent
10372 Russ Allbery:
10374 @quotation
10375 The @acronym{GNU} assumption that @command{/bin/sh} is the one and only shell
10376 leads to a permanent deadlock.  Vendors don't want to break users'
10377 existing shell scripts, and there are some corner cases in the Bourne
10378 shell that are not completely compatible with a Posix shell.  Thus,
10379 vendors who have taken this route will @emph{never} (OK@dots{}``never say
10380 never'') replace the Bourne shell (as @command{/bin/sh}) with a
10381 Posix shell.
10382 @end quotation
10384 @noindent
10385 Robert Lipe:
10387 @quotation
10388 This is exactly the problem.  While most (at least most System V's) do
10389 have a Bourne shell that accepts shell functions most vendor
10390 @command{/bin/sh} programs are not the Posix shell.
10392 So while most modern systems do have a shell @emph{somewhere} that meets the
10393 Posix standard, the challenge is to find it.
10394 @end quotation
10396 @node Here-Documents
10397 @section Here-Documents
10398 @cindex Here documents
10399 @cindex Shell here documents
10401 Don't rely on @samp{\} being preserved just because it has no special
10402 meaning together with the next symbol.  In the native @command{sh}
10403 on Open@acronym{BSD} 2.7 @samp{\"} expands to @samp{"} in here-documents with
10404 unquoted delimiter.  As a general rule, if @samp{\\} expands to @samp{\}
10405 use @samp{\\} to get @samp{\}.
10407 With Open@acronym{BSD} 2.7's @command{sh}
10409 @example
10410 @group
10411 $ @kbd{cat <<EOF
10412 > \" \\
10413 > EOF}
10414 " \
10415 @end group
10416 @end example
10418 @noindent
10419 and with Bash:
10421 @example
10422 @group
10423 bash-2.04$ @kbd{cat <<EOF
10424 > \" \\
10425 > EOF}
10426 \" \
10427 @end group
10428 @end example
10431 Many older shells (including the Bourne shell) implement here-documents
10432 inefficiently.  And some shells mishandle large here-documents: for
10433 example, Solaris @command{dtksh}, which is derived from Korn shell
10434 version M-12/28/93d, mishandles variable expansion that occurs on
10435 1024-byte buffer boundaries within a here-document.  Users can generally
10436 fix these problems by using a faster or more reliable shell, e.g., by
10437 using the command @samp{CONFIG_SHELL=/bin/bash /bin/bash ./configure} rather
10438 than plain @samp{./configure}.
10440 Some shells can be extremely inefficient when there are a lot of
10441 here-documents inside a single statement.  For instance if your
10442 @file{configure.ac} includes something like:
10444 @example
10445 @group
10446 if <cross_compiling>; then
10447   assume this and that
10448 else
10449   check this
10450   check that
10451   check something else
10452   @dots{}
10453   on and on forever
10454   @dots{}
10456 @end group
10457 @end example
10459 A shell parses the whole @code{if}/@code{fi} construct, creating
10460 temporary files for each here document in it.  Some shells create links
10461 for such here-documents on every @code{fork}, so that the clean-up code
10462 they had installed correctly removes them.  It is creating the links
10463 that can take the shell forever.
10465 Moving the tests out of the @code{if}/@code{fi}, or creating multiple
10466 @code{if}/@code{fi} constructs, would improve the performance
10467 significantly.  Anyway, this kind of construct is not exactly the
10468 typical use of Autoconf.  In fact, it's even not recommended, because M4
10469 macros can't look into shell conditionals, so we may fail to expand a
10470 macro when it was expanded before in a conditional path, and the
10471 condition turned out to be false at run-time, and we end up not
10472 executing the macro at all.
10474 @node File Descriptors
10475 @section File Descriptors
10476 @cindex Descriptors
10477 @cindex File descriptors
10478 @cindex Shell file descriptors
10480 Some file descriptors shall not be used, since some systems, admittedly
10481 arcane, use them for special purpose:
10483 @display
10484 3 --- some systems may open it to @samp{/dev/tty}.
10485 4 --- used on the Kubota Titan.
10486 @end display
10488 Don't redirect the same file descriptor several times, as you are doomed
10489 to failure under Ultrix.
10491 @example
10492 ULTRIX V4.4 (Rev. 69) System #31: Thu Aug 10 19:42:23 GMT 1995
10493 UWS V4.4 (Rev. 11)
10494 $ @kbd{eval 'echo matter >fullness' >void}
10495 illegal io
10496 $ @kbd{eval '(echo matter >fullness)' >void}
10497 illegal io
10498 $ @kbd{(eval '(echo matter >fullness)') >void}
10499 Ambiguous output redirect.
10500 @end example
10502 @noindent
10503 In each case the expected result is of course @file{fullness} containing
10504 @samp{matter} and @file{void} being empty.
10506 Don't try to redirect the standard error of a command substitution: it
10507 must be done @emph{inside} the command substitution: when running
10508 @samp{: `cd /zorglub` 2>/dev/null} expect the error message to
10509 escape, while @samp{: `cd /zorglub 2>/dev/null`} works properly.
10511 It is worth noting that Zsh (but not Ash nor Bash) makes it possible
10512 in assignments though: @samp{foo=`cd /zorglub` 2>/dev/null}.
10514 Most shells, if not all (including Bash, Zsh, Ash), output traces on
10515 stderr, even for sub-shells.  This might result in undesirable content
10516 if you meant to capture the standard-error output of the inner command:
10518 @example
10519 $ @kbd{ash -x -c '(eval "echo foo >&2") 2>stderr'}
10520 $ @kbd{cat stderr}
10521 + eval echo foo >&2
10522 + echo foo
10524 $ @kbd{bash -x -c '(eval "echo foo >&2") 2>stderr'}
10525 $ @kbd{cat stderr}
10526 + eval 'echo foo >&2'
10527 ++ echo foo
10529 $ @kbd{zsh -x -c '(eval "echo foo >&2") 2>stderr'}
10530 @i{# Traces on startup files deleted here.}
10531 $ @kbd{cat stderr}
10532 +zsh:1> eval echo foo >&2
10533 +zsh:1> echo foo
10535 @end example
10537 @noindent
10538 You'll appreciate the various levels of detail@enddots{}
10540 One workaround is to grep out uninteresting lines, hoping not to remove
10541 good ones@enddots{}
10543 Don't try to move/delete open files, such as in @samp{exec >foo; mv foo
10544 bar}; see @ref{Limitations of Builtins}, @command{mv} for more details.
10546 Don't rely on open file descriptors being open in child processes.  In
10547 @command{ksh}, file descriptors above 2 which are opened using
10548 @samp{exec n>file} are closed by a subsequent @samp{exec} (such as
10549 that involved in the fork-and-exec which runs a program or script).
10550 Thus, using sh, we have:
10551 @example
10552 $ cat ./descrips
10553 #!/bin/sh -
10554 echo hello >&5
10555 $ exec 5>t
10556 $ ./descrips
10557 $ cat t
10558 hello
10560 @end example
10561 But using ksh:
10562 @example
10563 $ exec 5>t
10564 $ ./descrips
10565 hello
10566 $ cat t
10568 @end example
10569 Within the process which runs the @samp{descrips} script, file
10570 descriptor number 5 is closed.
10572 @node File System Conventions
10573 @section File System Conventions
10574 @cindex File system conventions
10576 Autoconf uses shell-script processing extensively, so the file names
10577 that it processes should not contain characters that are special to the
10578 shell.  Special characters include space, tab, newline, @sc{nul}, and
10579 the following:
10581 @example
10582 " # $ & ' ( ) * ; < = > ? [ \ ` |
10583 @end example
10585 Also, file names should not begin with @samp{~} or @samp{-}, and should
10586 not contain @samp{-} immediately after @samp{/}.
10588 These restrictions apply not only to the files that you distribute, but
10589 also to the absolute file names of your source, build, and destination
10590 directories.  Autoconf-generated @command{configure} scripts warn of
10591 violations to the above restrictions.
10593 On some Posix-like platforms, @samp{!} and @samp{^} are special too, so
10594 they should be avoided.
10596 Posix lets implementations treat leading @file{//} specially, but
10597 requires leading @file{///} and beyond to be equivalent to @file{/}.
10598 Most Unix variants treat @file{//} like @file{/}.  However, some treat
10599 @file{//} as a ``super-root'' that can provide access to files that are
10600 not otherwise reachable from @file{/}.  The super-root tradition began
10601 with Apollo Domain/OS, which died out long ago, but unfortunately Cygwin
10602 has revived it.
10604 While @command{autoconf} and friends will usually be run on some Posix
10605 variety, it can and will be used on other systems, most notably @acronym{DOS}
10606 variants.  This impacts several assumptions regarding file names.
10608 @noindent
10609 For example, the following code:
10611 @example
10612 case $foo_dir in
10613   /*) # Absolute
10614      ;;
10615   *)
10616      foo_dir=$dots$foo_dir ;;
10617 esac
10618 @end example
10620 @noindent
10621 will fail to properly detect absolute file names on those systems, because
10622 they can use a drivespec, and will usually use a backslash as directory
10623 separator.  If you want to be portable to @acronym{DOS} variants (at the
10624 price of rejecting valid but oddball Posix file names like @file{a:\b}),
10625 you can check for absolute file names like this:
10627 @example
10628 case $foo_dir in
10629   [\\/]* | ?:[\\/]* ) # Absolute
10630      ;;
10631   *)
10632      foo_dir=$dots$foo_dir ;;
10633 esac
10634 @end example
10636 @noindent
10637 Make sure you quote the brackets if appropriate and keep the backslash as
10638 first character (@pxref{Limitations of Builtins}).
10640 Also, because the colon is used as part of a drivespec, these systems don't
10641 use it as path separator.  When creating or accessing paths, you can use the
10642 @code{PATH_SEPARATOR} output variable instead.  @command{configure} sets this
10643 to the appropriate value (@samp{:} or @samp{;}) when it starts up.
10645 File names need extra care as well.  While @acronym{DOS} variants
10646 that are Posixy enough to run @command{autoconf} (such as @acronym{DJGPP}) will
10647 usually be able to handle long file names properly, there are still
10648 limitations that can seriously break packages.  Several of these issues
10649 can be easily detected by the
10650 @uref{ftp://ftp.gnu.org/gnu/non-gnu/doschk/doschk-1.1.tar.gz, doschk}
10651 package.
10653 A short overview follows; problems are marked with @sc{sfn}/@sc{lfn} to
10654 indicate where they apply: @sc{sfn} means the issues are only relevant to
10655 plain @acronym{DOS}, not to @acronym{DOS} under Microsoft Windows
10656 variants, while @sc{lfn} identifies problems that exist even under
10657 Microsoft Windows variants.
10659 @table @asis
10660 @item No multiple dots (@sc{sfn})
10661 @acronym{DOS} cannot handle multiple dots in file names.  This is an especially
10662 important thing to remember when building a portable configure script,
10663 as @command{autoconf} uses a .in suffix for template files.
10665 This is perfectly OK on Posix variants:
10667 @example
10668 AC_CONFIG_HEADERS([config.h])
10669 AC_CONFIG_FILES([source.c foo.bar])
10670 AC_OUTPUT
10671 @end example
10673 @noindent
10674 but it causes problems on @acronym{DOS}, as it requires @samp{config.h.in},
10675 @samp{source.c.in} and @samp{foo.bar.in}.  To make your package more portable
10676 to @acronym{DOS}-based environments, you should use this instead:
10678 @example
10679 AC_CONFIG_HEADERS([config.h:config.hin])
10680 AC_CONFIG_FILES([source.c:source.cin foo.bar:foobar.in])
10681 AC_OUTPUT
10682 @end example
10684 @item No leading dot (@sc{sfn})
10685 @acronym{DOS} cannot handle file names that start with a dot.  This is usually
10686 not a very important issue for @command{autoconf}.
10688 @item Case insensitivity (@sc{lfn})
10689 @acronym{DOS} is case insensitive, so you cannot, for example, have both a
10690 file called @samp{INSTALL} and a directory called @samp{install}.  This
10691 also affects @command{make}; if there's a file called @samp{INSTALL} in
10692 the directory, @samp{make install} will do nothing (unless the
10693 @samp{install} target is marked as PHONY).
10695 @item The 8+3 limit (@sc{sfn})
10696 Because the @acronym{DOS} file system only stores the first 8 characters of
10697 the file name and the first 3 of the extension, those must be unique.
10698 That means that @file{foobar-part1.c}, @file{foobar-part2.c} and
10699 @file{foobar-prettybird.c} all resolve to the same file name
10700 (@file{FOOBAR-P.C}).  The same goes for @file{foo.bar} and
10701 @file{foo.bartender}.
10703 The 8+3 limit is not usually a problem under Microsoft Windows, as it
10704 uses numeric
10705 tails in the short version of file names to make them unique.  However, a
10706 registry setting can turn this behavior off.  While this makes it
10707 possible to share file trees containing long file names between @sc{sfn}
10708 and @sc{lfn} environments, it also means the above problem applies there
10709 as well.
10711 @item Invalid characters (@sc{lfn})
10712 Some characters are invalid in @acronym{DOS} file names, and should therefore
10713 be avoided.  In a @sc{lfn} environment, these are @samp{/}, @samp{\},
10714 @samp{?}, @samp{*}, @samp{:}, @samp{<}, @samp{>}, @samp{|} and @samp{"}.
10715 In a @sc{sfn} environment, other characters are also invalid.  These
10716 include @samp{+}, @samp{,}, @samp{[} and @samp{]}.
10718 @item Invalid names (@sc{lfn})
10719 Some @acronym{DOS} file names are reserved, and cause problems if you
10720 try to use files with those names.  These names include @file{CON},
10721 @file{AUX}, @file{COM1}, @file{COM2}, @file{COM3}, @file{COM4},
10722 @file{LPT1}, @file{LPT2}, @file{LPT3}, @file{NUL}, and @file{PRN}.
10723 File names are case insensitive, so even names like
10724 @file{aux/config.guess} are disallowed.
10726 @end table
10728 @node Shell Substitutions
10729 @section Shell Substitutions
10730 @cindex Shell substitutions
10732 Contrary to a persistent urban legend, the Bourne shell does not
10733 systematically split variables and back-quoted expressions, in particular
10734 on the right-hand side of assignments and in the argument of @code{case}.
10735 For instance, the following code:
10737 @example
10738 case "$given_srcdir" in
10739 .)  top_srcdir="`echo "$dots" | sed 's,/$,,'`" ;;
10740 *)  top_srcdir="$dots$given_srcdir" ;;
10741 esac
10742 @end example
10744 @noindent
10745 is more readable when written as:
10747 @example
10748 case $given_srcdir in
10749 .)  top_srcdir=`echo "$dots" | sed 's,/$,,'` ;;
10750 *)  top_srcdir=$dots$given_srcdir ;;
10751 esac
10752 @end example
10754 @noindent
10755 and in fact it is even @emph{more} portable: in the first case of the
10756 first attempt, the computation of @code{top_srcdir} is not portable,
10757 since not all shells properly understand @code{"`@dots{}"@dots{}"@dots{}`"}.
10758 Worse yet, not all shells understand @code{"`@dots{}\"@dots{}\"@dots{}`"}
10759 the same way.  There is just no portable way to use double-quoted
10760 strings inside double-quoted back-quoted expressions (pfew!).
10762 @table @code
10763 @item $@@
10764 @cindex @samp{"$@@"}
10765 One of the most famous shell-portability issues is related to
10766 @samp{"$@@"}.  When there are no positional arguments, Posix says
10767 that @samp{"$@@"} is supposed to be equivalent to nothing, but the
10768 original Unix version 7 Bourne shell treated it as equivalent to
10769 @samp{""} instead, and this behavior survives in later implementations
10770 like Digital Unix 5.0.
10772 The traditional way to work around this portability problem is to use
10773 @samp{$@{1+"$@@"@}}.  Unfortunately this method does not work with
10774 Zsh (3.x and 4.x), which is used on Mac OS X@.  When emulating
10775 the Bourne shell, Zsh performs word splitting on @samp{$@{1+"$@@"@}}:
10777 @example
10778 zsh $ @kbd{emulate sh}
10779 zsh $ @kbd{for i in "$@@"; do echo $i; done}
10780 Hello World
10782 zsh $ @kbd{for i in $@{1+"$@@"@}; do echo $i; done}
10783 Hello
10784 World
10786 @end example
10788 @noindent
10789 Zsh handles plain @samp{"$@@"} properly, but we can't use plain
10790 @samp{"$@@"} because of the portability problems mentioned above.
10791 One workaround relies on Zsh's ``global aliases'' to convert
10792 @samp{$@{1+"$@@"@}} into @samp{"$@@"} by itself:
10794 @example
10795 test "$@{ZSH_VERSION+set@}" = set && alias -g '$@{1+"$@@"@}'='"$@@"'
10796 @end example
10798 A more conservative workaround is to avoid @samp{"$@@"} if it is
10799 possible that there may be no positional arguments.  For example,
10800 instead of:
10802 @example
10803 cat conftest.c "$@@"
10804 @end example
10806 you can use this instead:
10808 @example
10809 case $# in
10810 0) cat conftest.c;;
10811 *) cat conftest.c "$@@";;
10812 esac
10813 @end example
10816 @item $@{10@}
10817 @cindex positional parameters
10818 The 10th, 11th, @dots{} positional parameters can be accessed only after
10819 a @code{shift}.  The 7th Edition shell reported an error if given
10820 @code{$@{10@}}, and
10821 Solaris 10 @command{/bin/sh} still acts that way:
10823 @example
10824 $ @kbd{set 1 2 3 4 5 6 7 8 9 10}
10825 $ @kbd{echo $@{10@}}
10826 bad substitution
10827 @end example
10829 @item $@{@var{var}:-@var{value}@}
10830 @c Info cannot handle `:' in index entries.
10831 @c @cindex $@{@var{var}:-@var{value}@}
10832 Old @acronym{BSD} shells, including the Ultrix @code{sh}, don't accept the
10833 colon for any shell substitution, and complain and die.
10835 @item $@{@var{var}=@var{literal}@}
10836 @cindex $@{@var{var}=@var{literal}@}
10837 Be sure to quote:
10839 @example
10840 : $@{var='Some words'@}
10841 @end example
10843 @noindent
10844 otherwise some shells, such as on Digital Unix V 5.0, will die because
10845 of a ``bad substitution''.
10847 @sp 1
10849 Solaris @command{/bin/sh} has a frightening bug in its interpretation
10850 of this.  Imagine you need set a variable to a string containing
10851 @samp{@}}.  This @samp{@}} character confuses Solaris @command{/bin/sh}
10852 when the affected variable was already set.  This bug can be exercised
10853 by running:
10855 @example
10856 $ @kbd{unset foo}
10857 $ @kbd{foo=$@{foo='@}'@}}
10858 $ @kbd{echo $foo}
10860 $ @kbd{foo=$@{foo='@}'   # no error; this hints to what the bug is}
10861 $ @kbd{echo $foo}
10863 $ @kbd{foo=$@{foo='@}'@}}
10864 $ @kbd{echo $foo}
10865 @}@}
10866  ^ ugh!
10867 @end example
10869 It seems that @samp{@}} is interpreted as matching @samp{$@{}, even
10870 though it is enclosed in single quotes.  The problem doesn't happen
10871 using double quotes.
10873 @item $@{@var{var}=@var{expanded-value}@}
10874 @cindex $@{@var{var}=@var{expanded-value}@}
10875 On Ultrix,
10876 running
10878 @example
10879 default="yu,yaa"
10880 : $@{var="$default"@}
10881 @end example
10883 @noindent
10884 will set @var{var} to @samp{M-yM-uM-,M-yM-aM-a}, i.e., the 8th bit of
10885 each char will be set.  You won't observe the phenomenon using a simple
10886 @samp{echo $var} since apparently the shell resets the 8th bit when it
10887 expands $var.  Here are two means to make this shell confess its sins:
10889 @example
10890 $ @kbd{cat -v <<EOF
10891 $var
10892 EOF}
10893 @end example
10895 @noindent
10898 @example
10899 $ @kbd{set | grep '^var=' | cat -v}
10900 @end example
10902 One classic incarnation of this bug is:
10904 @example
10905 default="a b c"
10906 : $@{list="$default"@}
10907 for c in $list; do
10908   echo $c
10909 done
10910 @end example
10912 @noindent
10913 You'll get @samp{a b c} on a single line.  Why?  Because there are no
10914 spaces in @samp{$list}: there are @samp{M- }, i.e., spaces with the 8th
10915 bit set, hence no IFS splitting is performed!!!
10917 One piece of good news is that Ultrix works fine with @samp{:
10918 $@{list=$default@}}; i.e., if you @emph{don't} quote.  The bad news is
10919 then that @acronym{QNX} 4.25 then sets @var{list} to the @emph{last} item of
10920 @var{default}!
10922 The portable way out consists in using a double assignment, to switch
10923 the 8th bit twice on Ultrix:
10925 @example
10926 list=$@{list="$default"@}
10927 @end example
10929 @noindent
10930 @dots{}but beware of the @samp{@}} bug from Solaris (see above).  For safety,
10931 use:
10933 @example
10934 test "$@{var+set@}" = set || var=@var{@{value@}}
10935 @end example
10938 @item `@var{commands}`
10939 @cindex `@var{commands}`
10940 @cindex Command Substitution
10941 Posix requires shells to trim all trailing newlines from command
10942 output before substituting it, so assignments like
10943 @samp{dir=`AS_DIRNAME(["$file"])`} will not work as expected if the
10944 directory of @samp{$file} ends in a newline.
10946 While in general it makes no sense, do not substitute a single builtin
10947 with side effects, because Ash 0.2, trying to optimize, does not fork a
10948 subshell to perform the command.
10950 For instance, if you wanted to check that @command{cd} is silent, do not
10951 use @samp{test -z "`cd /`"} because the following can happen:
10953 @example
10954 $ @kbd{pwd}
10955 /tmp
10956 $ @kbd{test -z "`cd /`" && pwd}
10958 @end example
10960 @noindent
10961 The result of @samp{foo=`exit 1`} is left as an exercise to the reader.
10964 @item $(@var{commands})
10965 @cindex $(@var{commands})
10966 This construct is meant to replace @samp{`@var{commands}`},
10967 and it has most of the problems listed under @code{`@var{commands}`}.
10969 This construct can be
10970 nested while this is impossible to do portably with back quotes.
10971 Unfortunately it is not yet universally supported.  Most notably, even recent
10972 releases of Solaris don't support it:
10974 @example
10975 $ @kbd{showrev -c /bin/sh | grep version}
10976 Command version: SunOS 5.10 Generic January 2005
10977 $ @kbd{echo $(echo blah)}
10978 syntax error: `(' unexpected
10979 @end example
10981 @noindent
10982 nor does @sc{irix} 6.5's Bourne shell:
10983 @example
10984 $ @kbd{uname -a}
10985 IRIX firebird-image 6.5 07151432 IP22
10986 $ @kbd{echo $(echo blah)}
10987 $(echo blah)
10988 @end example
10990 If you do use @samp{$(@var{commands})}, make sure that the commands
10991 do not start with a parenthesis, as that would cause confusion with
10992 a different notation @samp{$((@var{expression}))} that in modern
10993 shells is an arithmetic expression not a command.  To avoid the
10994 confusion, insert a space between the two opening parentheses.
10996 Avoid @var{commands} that contain unbalanced parentheses in
10997 here-documents, comments, or case statement patterns, as many shells
10998 mishandle them.  For example, Bash 3.1, @samp{ksh88}, @command{pdksh}
10999 5.2.14, and Zsh 4.2.6 all mishandle the following valid command:
11001 @example
11002 echo $(case x in x) echo hello;; esac)
11003 @end example
11005 @end table
11008 @node Assignments
11009 @section Assignments
11010 @cindex Shell assignments
11012 When setting several variables in a row, be aware that the order of the
11013 evaluation is undefined.  For instance @samp{foo=1 foo=2; echo $foo}
11014 gives @samp{1} with Solaris @command{/bin/sh}, but @samp{2} with Bash.
11015 You must use
11016 @samp{;} to enforce the order: @samp{foo=1; foo=2; echo $foo}.
11018 Don't rely on the following to find @file{subdir/program}:
11020 @example
11021 PATH=subdir$PATH_SEPARATOR$PATH program
11022 @end example
11024 @noindent
11025 as this does not work with Zsh 3.0.6.  Use something like this
11026 instead:
11028 @example
11029 (PATH=subdir$PATH_SEPARATOR$PATH; export PATH; exec program)
11030 @end example
11032 Don't rely on the exit status of an assignment: Ash 0.2 does not change
11033 the status and propagates that of the last statement:
11035 @example
11036 $ @kbd{false || foo=bar; echo $?}
11038 $ @kbd{false || foo=`:`; echo $?}
11040 @end example
11042 @noindent
11043 and to make things even worse, @acronym{QNX} 4.25 just sets the exit status
11044 to 0 in any case:
11046 @example
11047 $ @kbd{foo=`exit 1`; echo $?}
11049 @end example
11051 To assign default values, follow this algorithm:
11053 @enumerate
11054 @item
11055 If the default value is a literal and does not contain any closing
11056 brace, use:
11058 @example
11059 : $@{var='my literal'@}
11060 @end example
11062 @item
11063 If the default value contains no closing brace, has to be expanded, and
11064 the variable being initialized will never be IFS-split (i.e., it's not a
11065 list), then use:
11067 @example
11068 : $@{var="$default"@}
11069 @end example
11071 @item
11072 If the default value contains no closing brace, has to be expanded, and
11073 the variable being initialized will be IFS-split (i.e., it's a list),
11074 then use:
11076 @example
11077 var=$@{var="$default"@}
11078 @end example
11080 @item
11081 If the default value contains a closing brace, then use:
11083 @example
11084 test "$@{var+set@}" = set || var='$@{indirection@}'
11085 @end example
11086 @end enumerate
11088 In most cases @samp{var=$@{var="$default"@}} is fine, but in case of
11089 doubt, just use the latter.  @xref{Shell Substitutions}, items
11090 @samp{$@{@var{var}:-@var{value}@}} and @samp{$@{@var{var}=@var{value}@}}
11091 for the rationale.
11093 @node Parentheses
11094 @section Parentheses in Shell Scripts
11095 @cindex Shell parentheses
11097 Beware of two opening parentheses in a row, as some shell
11098 implementations mishandle them.  For example, @samp{pdksh} 5.2.14
11099 misparses the following code:
11101 @example
11102 if ((true) || false); then
11103   echo ok
11105 @end example
11107 @noindent
11108 To work around this problem, insert a space between the two opening
11109 parentheses.  There is a similar problem and workaround with
11110 @samp{$((}; see @ref{Shell Substitutions}.
11112 Posix requires support for @code{case} patterns with opening
11113 parentheses like this:
11115 @example
11116 case $file_name in
11117 (*.c) echo "C source code";;
11118 esac
11119 @end example
11121 @noindent
11122 but the @code{(} in this example is not portable to many older Bourne
11123 shell implementations.  It can be omitted safely.
11125 @node Slashes
11126 @section Slashes in Shell Scripts
11127 @cindex Shell slashes
11129 Unpatched Tru64 5.1 @command{sh} omits the last slash of command-line
11130 arguments that contain two trailing slashes:
11132 @example
11133 $ echo / // /// //// .// //.
11134 / / // /// ./ //.
11135 $ x=//
11136 $ eval "echo \$x"
11138 $ set -x
11139 $ echo abc | tr -t ab //
11140 + echo abc
11141 + tr -t ab /
11143 @end example
11145 However, our understanding is that patches are available, so perhaps
11146 it's not worth worrying about working around this horrendous bug.
11148 @node Special Shell Variables
11149 @section Special Shell Variables
11150 @cindex Shell variables
11151 @cindex Special shell variables
11153 Some shell variables should not be used, since they can have a deep
11154 influence on the behavior of the shell.  In order to recover a sane
11155 behavior from the shell, some variables should be unset, but
11156 @command{unset} is not portable (@pxref{Limitations of Builtins}) and a
11157 fallback value is needed.
11159 As a general rule, shell variable names containing a lower-case letter
11160 are safe; you can define and use these variables without worrying about
11161 their effect on the underlying system, and without worrying about
11162 whether the shell will change them unexpectedly.  (The exception is the
11163 shell variable @code{status}, as described below.)
11165 Here is a list of names that are known to cause trouble.  This list is
11166 not exhaustive, but you should be safe if you avoid the name
11167 @code{status} and names containing only upper-case letters and
11168 underscores.
11170 @c Alphabetical order, case insensitive, `A' before `a'.
11171 @table @code
11172 @item _
11173 Many shells reserve @samp{$_} for various purposes, e.g., the name of
11174 the last command executed.
11176 @item BIN_SH
11177 @evindex BIN_SH
11178 In Tru64, if @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
11179 the standard shell conform to Posix.
11181 @item CDPATH
11182 @evindex CDPATH
11183 When this variable is set it specifies a list of directories to search
11184 when invoking @code{cd} with a relative file name.  Posix
11185 1003.1-2001 says that if a nonempty directory name from @env{CDPATH}
11186 is used successfully, @code{cd} prints the resulting absolute
11187 file name.  Unfortunately this output can break idioms like
11188 @samp{abs=`cd src && pwd`} because @code{abs} receives the name twice.
11189 Also, many shells do not conform to this part of Posix; for
11190 example, @command{zsh} prints the result only if a directory name
11191 other than @file{.} was chosen from @env{CDPATH}.
11193 In practice the shells that have this problem also support
11194 @command{unset}, so you can work around the problem as follows:
11196 @example
11197 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
11198 @end example
11200 Autoconf-generated scripts automatically unset @env{CDPATH} if
11201 possible, so you need not worry about this problem in those scripts.
11203 @item DUALCASE
11204 @evindex DUALCASE
11205 In the MKS shell, case statements and file name generation are
11206 case-insensitive unless @env{DUALCASE} is nonzero.
11207 Autoconf-generated scripts export this variable when they start up.
11209 @item ENV
11210 @itemx MAIL
11211 @itemx MAILPATH
11212 @itemx PS1
11213 @itemx PS2
11214 @itemx PS4
11215 @evindex ENV
11216 @evindex MAIL
11217 @evindex MAILPATH
11218 @evindex PS1
11219 @evindex PS2
11220 @evindex PS4
11221 These variables should not matter for shell scripts, since they are
11222 supposed to affect only interactive shells.  However, at least one
11223 shell (the pre-3.0 @sc{uwin} Korn shell) gets confused about
11224 whether it is interactive, which means that (for example) a @env{PS1}
11225 with a side effect can unexpectedly modify @samp{$?}.  To work around
11226 this bug, Autoconf-generated scripts do something like this:
11228 @example
11229 (unset ENV) >/dev/null 2>&1 && unset ENV MAIL MAILPATH
11230 PS1='$ '
11231 PS2='> '
11232 PS4='+ '
11233 @end example
11235 @item IFS
11236 @evindex IFS
11237 Long ago, shell scripts inherited @env{IFS} from the environment,
11238 but this caused many problems so modern shells ignore any environment
11239 settings for @env{IFS}.
11241 Don't set the first character of @code{IFS} to backslash.  Indeed,
11242 Bourne shells use the first character (backslash) when joining the
11243 components in @samp{"$@@"} and some shells then re-interpret (!)@: the
11244 backslash escapes, so you can end up with backspace and other strange
11245 characters.
11247 The proper value for @code{IFS} (in regular code, not when performing
11248 splits) is @samp{@key{SPC}@key{TAB}@key{RET}}.  The first character is
11249 especially important, as it is used to join the arguments in @samp{@@*}.
11251 @item LANG
11252 @itemx LC_ALL
11253 @itemx LC_COLLATE
11254 @itemx LC_CTYPE
11255 @itemx LC_MESSAGES
11256 @itemx LC_MONETARY
11257 @itemx LC_NUMERIC
11258 @itemx LC_TIME
11259 @evindex LANG
11260 @evindex LC_ALL
11261 @evindex LC_COLLATE
11262 @evindex LC_CTYPE
11263 @evindex LC_MESSAGES
11264 @evindex LC_MONETARY
11265 @evindex LC_NUMERIC
11266 @evindex LC_TIME
11268 Autoconf-generated scripts normally set all these variables to
11269 @samp{C} because so much configuration code assumes the C locale and
11270 Posix requires that locale environment variables be set to
11271 @samp{C} if the C locale is desired.  However, some older, nonstandard
11272 systems (notably @acronym{SCO}) break if locale environment variables
11273 are set to @samp{C}, so when running on these systems
11274 Autoconf-generated scripts unset the variables instead.
11276 @item LANGUAGE
11277 @evindex LANGUAGE
11279 @env{LANGUAGE} is not specified by Posix, but it is a @acronym{GNU}
11280 extension that overrides @env{LC_ALL} in some cases, so
11281 Autoconf-generated scripts set it too.
11283 @item LC_ADDRESS
11284 @itemx LC_IDENTIFICATION
11285 @itemx LC_MEASUREMENT
11286 @itemx LC_NAME
11287 @itemx LC_PAPER
11288 @itemx LC_TELEPHONE
11289 @evindex LC_ADDRESS
11290 @evindex LC_IDENTIFICATION
11291 @evindex LC_MEASUREMENT
11292 @evindex LC_NAME
11293 @evindex LC_PAPER
11294 @evindex LC_TELEPHONE
11296 These locale environment variables are @acronym{GNU} extensions.  They
11297 are treated like their Posix brethren (@env{LC_COLLATE},
11298 etc.)@: as described above.
11300 @item LINENO
11301 Most modern shells provide the current line number in @code{LINENO}.
11302 Its value is the line number of the beginning of the current command.
11303 Autoconf attempts to execute @command{configure} with a modern shell.
11304 If no such shell is available, it attempts to implement @code{LINENO}
11305 with a Sed prepass that replaces each instance of the string
11306 @code{$LINENO} (not followed by an alphanumeric character) with the
11307 line's number.
11309 You should not rely on @code{LINENO} within @command{eval}, as the
11310 behavior differs in practice.  Also, the possibility of the Sed
11311 prepass means that you should not rely on @code{$LINENO} when quoted,
11312 when in here-documents, or when in long commands that cross line
11313 boundaries.  Subshells should be OK, though.  In the following
11314 example, lines 1, 6, and 9 are portable, but the other instances of
11315 @code{LINENO} are not:
11317 @example
11318 @group
11319 $ @kbd{cat lineno}
11320 echo 1. $LINENO
11321 cat <<EOF
11322 3. $LINENO
11323 4. $LINENO
11325 ( echo 6. $LINENO )
11326 eval 'echo 7. $LINENO'
11327 echo 8. '$LINENO'
11328 echo 9. $LINENO '
11329 10.' $LINENO
11330 @end group
11331 @group
11332 $ @kbd{bash-2.05 lineno}
11333 1. 1
11334 3. 2
11335 4. 2
11336 6. 6
11337 7. 1
11338 8. $LINENO
11339 9. 9
11340 10. 9
11341 @end group
11342 @group
11343 $ @kbd{zsh-3.0.6 lineno}
11344 1. 1
11345 3. 2
11346 4. 2
11347 6. 6
11348 7. 7
11349 8. $LINENO
11350 9. 9
11351 10. 9
11352 @end group
11353 @group
11354 $ @kbd{pdksh-5.2.14 lineno}
11355 1. 1
11356 3. 2
11357 4. 2
11358 6. 6
11359 7. 0
11360 8. $LINENO
11361 9. 9
11362 10. 9
11363 @end group
11364 @group
11365 $ @kbd{sed '=' <lineno |}
11366 > @kbd{  sed '}
11367 > @kbd{    N}
11368 > @kbd{    s,$,-,}
11369 > @kbd{    t loop}
11370 > @kbd{    :loop}
11371 > @kbd{    s,^\([0-9]*\)\(.*\)[$]LINENO\([^a-zA-Z0-9_]\),\1\2\1\3,}
11372 > @kbd{    t loop}
11373 > @kbd{    s,-$,,}
11374 > @kbd{    s,^[0-9]*\n,,}
11375 > @kbd{  ' |}
11376 > @kbd{  sh}
11377 1. 1
11378 3. 3
11379 4. 4
11380 6. 6
11381 7. 7
11382 8. 8
11383 9. 9
11384 10. 10
11385 @end group
11386 @end example
11388 @item NULLCMD
11389 @evindex NULLCMD
11390 When executing the command @samp{>foo}, @command{zsh} executes
11391 @samp{$NULLCMD >foo} unless it is operating in Bourne shell
11392 compatibility mode and the @command{zsh} version is newer
11393 than 3.1.6-dev-18.  If you are using an older @command{zsh}
11394 and forget to set @env{NULLCMD},
11395 your script might be suspended waiting for data on its standard input.
11397 @item PATH_SEPARATOR
11398 @evindex PATH_SEPARATOR
11399 On @acronym{DJGPP} systems, the @env{PATH_SEPARATOR} environment
11400 variable can be set to either @samp{:} or @samp{;} to control the path
11401 separator Bash uses to set up certain environment variables (such as
11402 @env{PATH}).  You can set this variable to @samp{;} if you want
11403 @command{configure} to use @samp{;} as a separator; this might be useful
11404 if you plan to use non-Posix shells to execute files.  @xref{File System
11405 Conventions}, for more information about @code{PATH_SEPARATOR}.
11407 @item PWD
11408 @evindex PWD
11409 Posix 1003.1-2001 requires that @command{cd} and
11410 @command{pwd} must update the @env{PWD} environment variable to point
11411 to the logical name of the current directory, but traditional shells
11412 do not support this.  This can cause confusion if one shell instance
11413 maintains @env{PWD} but a subsidiary and different shell does not know
11414 about @env{PWD} and executes @command{cd}; in this case @env{PWD} will
11415 point to the wrong directory.  Use @samp{`pwd`} rather than
11416 @samp{$PWD}.
11418 @item RANDOM
11419 Many shells provide @code{RANDOM}, a variable that returns a different
11420 integer each time it is used.  Most of the time, its value does not
11421 change when it is not used, but on @sc{irix} 6.5 the value changes all
11422 the time.  This can be observed by using @command{set}.  It is common
11423 practice to use @code{$RANDOM} as part of a file name, but code
11424 shouldn't rely on @code{$RANDOM} expanding to a nonempty string.
11426 @item status
11427 This variable is an alias to @samp{$?} for @code{zsh} (at least 3.1.6),
11428 hence read-only.  Do not use it.
11429 @end table
11431 @node Limitations of Builtins
11432 @section Limitations of Shell Builtins
11433 @cindex Shell builtins
11434 @cindex Limitations of shell builtins
11436 No, no, we are serious: some shells do have limitations!  :)
11438 You should always keep in mind that any builtin or command may support
11439 options, and therefore have a very different behavior with arguments
11440 starting with a dash.  For instance, the innocent @samp{echo "$word"}
11441 can give unexpected results when @code{word} starts with a dash.  It is
11442 often possible to avoid this problem using @samp{echo "x$word"}, taking
11443 the @samp{x} into account later in the pipe.
11445 @table @asis
11446 @item @command{.}
11447 @prindex @command{.}
11448 Use @command{.} only with regular files (use @samp{test -f}).  Bash
11449 2.03, for instance, chokes on @samp{. /dev/null}.  Also, remember that
11450 @command{.} uses @env{PATH} if its argument contains no slashes, so if
11451 you want to use @command{.} on a file @file{foo} in the current
11452 directory, you must use @samp{. ./foo}.
11454 @item @command{!}
11455 @prindex @command{!}
11456 The Unix version 7 shell did not support
11457 negating the exit status of commands with @command{!}, and this feature
11458 is still absent from more modern shells (e.g., Solaris @command{/bin/sh}).
11459 Shell code like this:
11461 @example
11462 if ! cmp file1 file2 >/dev/null 2>&1; then
11463   echo files differ or trouble
11465 @end example
11467 is therefore not portable in practice.  Typically it is easy to rewrite
11468 such code, e.g.:
11470 @example
11471 cmp file1 file2 >/dev/null 2>&1 ||
11472   echo files differ or trouble
11473 @end example
11475 More generally, one can always rewrite @samp{! @var{command}} as:
11477 @example
11478 if @var{command}; then (exit 1); else :; fi
11479 @end example
11481 @item @command{break}
11482 @c ------------------
11483 @prindex @command{break}
11484 The use of @samp{break 2} etc.@: is safe.
11487 @item @command{case}
11488 @c -----------------
11489 @prindex @command{case}
11490 You don't need to quote the argument; no splitting is performed.
11492 You don't need the final @samp{;;}, but you should use it.
11494 Because of a bug in its @code{fnmatch}, Bash fails to properly
11495 handle backslashes in character classes:
11497 @example
11498 bash-2.02$ @kbd{case /tmp in [/\\]*) echo OK;; esac}
11499 bash-2.02$
11500 @end example
11502 @noindent
11503 This is extremely unfortunate, since you are likely to use this code to
11504 handle Posix or @sc{ms-dos} absolute file names.  To work around this
11505 bug, always put the backslash first:
11507 @example
11508 bash-2.02$ @kbd{case '\TMP' in [\\/]*) echo OK;; esac}
11510 bash-2.02$ @kbd{case /tmp in [\\/]*) echo OK;; esac}
11512 @end example
11514 Many Bourne shells cannot handle closing brackets in character classes
11515 correctly.
11517 Some shells also have problems with backslash escaping in case you do not want
11518 to match the backslash: both a backslash and the escaped character match this
11519 pattern.  To work around this, specify the character class in a variable, so
11520 that quote removal does not apply afterwards, and the special characters don't
11521 have to be backslash-escaped:
11523 @example
11524 $ @kbd{case '\' in [\<]) echo OK;; esac}
11526 $ @kbd{scanset='[<]'; case '\' in $scanset) echo OK;; esac}
11528 @end example
11530 Even with this, Solaris @command{ksh} matches a backslash if the set
11531 contains any
11532 of the characters @samp{|}, @samp{&}, @samp{(}, or @samp{)}.
11534 Conversely, Tru64 @command{ksh} (circa 2003) erroneously always matches
11535 a closing parenthesis if not specified in a character class:
11537 @example
11538 $ @kbd{case foo in *\)*) echo fail ;; esac}
11539 fail
11540 $ @kbd{case foo in *')'*) echo fail ;; esac}
11541 fail
11542 @end example
11544 Some shells, such as Ash 0.3.8, are confused by an empty
11545 @code{case}/@code{esac}:
11547 @example
11548 ash-0.3.8 $ @kbd{case foo in esac;}
11549 @error{}Syntax error: ";" unexpected (expecting ")")
11550 @end example
11552 Many shells still do not support parenthesized cases, which is a pity
11553 for those of us using tools that rely on balanced parentheses.  For
11554 instance, Solaris @command{/bin/sh}:
11556 @example
11557 $ @kbd{case foo in (foo) echo foo;; esac}
11558 @error{}syntax error: `(' unexpected
11559 @end example
11562 @item @command{cd}
11563 @c ---------------
11564 @prindex @command{cd}
11565 Posix 1003.1-2001 requires that @command{cd} must support
11566 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
11567 with @option{-L} being the default.  However, traditional shells do
11568 not support these options, and their @command{cd} command has the
11569 @option{-P} behavior.
11571 Portable scripts should assume neither option is supported, and should
11572 assume neither behavior is the default.  This can be a bit tricky,
11573 since the Posix default behavior means that, for example,
11574 @samp{ls ..} and @samp{cd ..} may refer to different directories if
11575 the current logical directory is a symbolic link.  It is safe to use
11576 @command{cd @var{dir}} if @var{dir} contains no @file{..} components.
11577 Also, Autoconf-generated scripts check for this problem when computing
11578 variables like @code{ac_top_srcdir} (@pxref{Configuration Actions}),
11579 so it is safe to @command{cd} to these variables.
11581 Also please see the discussion of the @command{pwd} command.
11584 @item @command{echo}
11585 @c -----------------
11586 @prindex @command{echo}
11587 The simple @command{echo} is probably the most surprising source of
11588 portability troubles.  It is not possible to use @samp{echo} portably
11589 unless both options and escape sequences are omitted.  New applications
11590 which are not aiming at portability should use @samp{printf} instead of
11591 @samp{echo}.
11593 Don't expect any option.  @xref{Preset Output Variables}, @code{ECHO_N}
11594 etc.@: for a means to simulate @option{-n}.
11596 Do not use backslashes in the arguments, as there is no consensus on
11597 their handling.  On @samp{echo '\n' | wc -l}, the @command{sh} of
11598 Digital Unix 4.0 and @acronym{MIPS RISC/OS} 4.52, answer 2, but the Solaris
11599 @command{/bin/sh}, Bash, and Zsh (in @command{sh} emulation mode) report 1.
11600 Please note that the problem is truly @command{echo}: all the shells
11601 understand @samp{'\n'} as the string composed of a backslash and an
11602 @samp{n}.
11604 Because of these problems, do not pass a string containing arbitrary
11605 characters to @command{echo}.  For example, @samp{echo "$foo"} is safe
11606 if you know that @var{foo}'s value cannot contain backslashes and cannot
11607 start with @samp{-}, but otherwise you should use a here-document like
11608 this:
11610 @example
11611 cat <<EOF
11612 $foo
11614 @end example
11617 @item @command{eval}
11618 @c -----------------
11619 @prindex @command{eval}
11620 In some shell implementations (e.g., older @command{ash}, Open@acronym{BSD} 3.8
11621 @command{sh}, @command{pdksh} v5.2.14 99/07/13.2, and @command{zsh}
11622 4.2.5), the arguments of @samp{eval} are evaluated in a context where
11623 @samp{$?} is 0, so they exhibit behavior like this:
11625 @example
11626 $ false; eval 'echo $?'
11628 @end example
11630 The correct behavior here is to output a nonzero value,
11631 but portable scripts should not rely on this.
11633 You should not rely on @code{LINENO} within @command{eval}.
11634 @xref{Special Shell Variables}.
11636 @item @command{exit}
11637 @c -----------------
11638 @prindex @command{exit}
11639 The default value of @command{exit} is supposed to be @code{$?};
11640 unfortunately, some shells, such as the @acronym{DJGPP} port of Bash 2.04, just
11641 perform @samp{exit 0}.
11643 @example
11644 bash-2.04$ @kbd{foo=`exit 1` || echo fail}
11645 fail
11646 bash-2.04$ @kbd{foo=`(exit 1)` || echo fail}
11647 fail
11648 bash-2.04$ @kbd{foo=`(exit 1); exit` || echo fail}
11649 bash-2.04$
11650 @end example
11652 Using @samp{exit $?} restores the expected behavior.
11654 Some shell scripts, such as those generated by @command{autoconf}, use a
11655 trap to clean up before exiting.  If the last shell command exited with
11656 nonzero status, the trap also exits with nonzero status so that the
11657 invoker can tell that an error occurred.
11659 Unfortunately, in some shells, such as Solaris @command{/bin/sh}, an exit
11660 trap ignores the @code{exit} command's argument.  In these shells, a trap
11661 cannot determine whether it was invoked by plain @code{exit} or by
11662 @code{exit 1}.  Instead of calling @code{exit} directly, use the
11663 @code{AC_MSG_ERROR} macro that has a workaround for this problem.
11666 @item @command{export}
11667 @c -------------------
11668 @prindex @command{export}
11669 The builtin @command{export} dubs a shell variable @dfn{environment
11670 variable}.  Each update of exported variables corresponds to an update
11671 of the environment variables.  Conversely, each environment variable
11672 received by the shell when it is launched should be imported as a shell
11673 variable marked as exported.
11675 Alas, many shells, such as Solaris @command{/bin/sh},
11676 @sc{irix} 6.3, @sc{irix} 5.2,
11677 @acronym{AIX} 4.1.5, and Digital Unix 4.0, forget to
11678 @command{export} the environment variables they receive.  As a result,
11679 two variables coexist: the environment variable and the shell
11680 variable.  The following code demonstrates this failure:
11682 @example
11683 #!/bin/sh
11684 echo $FOO
11685 FOO=bar
11686 echo $FOO
11687 exec /bin/sh $0
11688 @end example
11690 @noindent
11691 when run with @samp{FOO=foo} in the environment, these shells will print
11692 alternately @samp{foo} and @samp{bar}, although it should only print
11693 @samp{foo} and then a sequence of @samp{bar}s.
11695 Therefore you should @command{export} again each environment variable
11696 that you update.
11699 @item @command{false}
11700 @c ------------------
11701 @prindex @command{false}
11702 Don't expect @command{false} to exit with status 1: in native
11703 Solaris it exits with status 255.
11706 @item @command{for}
11707 @c ----------------
11708 @prindex @command{for}
11709 To loop over positional arguments, use:
11711 @example
11712 for arg
11714   echo "$arg"
11715 done
11716 @end example
11718 @noindent
11719 You may @emph{not} leave the @code{do} on the same line as @code{for},
11720 since some shells improperly grok:
11722 @example
11723 for arg; do
11724   echo "$arg"
11725 done
11726 @end example
11728 If you want to explicitly refer to the positional arguments, given the
11729 @samp{$@@} bug (@pxref{Shell Substitutions}), use:
11731 @example
11732 for arg in $@{1+"$@@"@}; do
11733   echo "$arg"
11734 done
11735 @end example
11737 @noindent
11738 But keep in mind that Zsh, even in Bourne shell emulation mode, performs
11739 word splitting on @samp{$@{1+"$@@"@}}; see @ref{Shell Substitutions},
11740 item @samp{$@@}, for more.
11743 @item @command{if}
11744 @c ---------------
11745 @prindex @command{if}
11746 Using @samp{!} is not portable.  Instead of:
11748 @example
11749 if ! cmp -s file file.new; then
11750   mv file.new file
11752 @end example
11754 @noindent
11755 use:
11757 @example
11758 if cmp -s file file.new; then :; else
11759   mv file.new file
11761 @end example
11763 There are shells that do not reset the exit status from an @command{if}:
11765 @example
11766 $ @kbd{if (exit 42); then true; fi; echo $?}
11768 @end example
11770 @noindent
11771 whereas a proper shell should have printed @samp{0}.  This is especially
11772 bad in Makefiles since it produces false failures.  This is why properly
11773 written Makefiles, such as Automake's, have such hairy constructs:
11775 @example
11776 if test -f "$file"; then
11777   install "$file" "$dest"
11778 else
11779   :
11781 @end example
11784 @item @command{printf}
11785 @c ------------------
11786 @prindex @command{printf}
11787 A format string starting with a @samp{-} can cause problems.
11788 Bash (e.g., 2.05b) will interpret it as an options string and
11789 give an error.  And @samp{--} to mark the end of options is not good
11790 in the Net@acronym{BSD} Almquist shell (e.g., 0.4.6) which will take that
11791 literally as the format string.  Putting the @samp{-} in a @samp{%c}
11792 or @samp{%s} is probably the easiest way to avoid doubt,
11794 @example
11795 printf %s -foo
11796 @end example
11799 @item @command{read}
11800 @c ------------------
11801 @prindex @command{read}
11802 Not all shells support @option{-r} (Solaris @command{/bin/sh} for example).
11805 @item @command{pwd}
11806 @c ----------------
11807 @prindex @command{pwd}
11808 With modern shells, plain @command{pwd} outputs a ``logical''
11809 directory name, some of whose components may be symbolic links.  These
11810 directory names are in contrast to ``physical'' directory names, whose
11811 components are all directories.
11813 Posix 1003.1-2001 requires that @command{pwd} must support
11814 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
11815 with @option{-L} being the default.  However, traditional shells do
11816 not support these options, and their @command{pwd} command has the
11817 @option{-P} behavior.
11819 Portable scripts should assume neither option is supported, and should
11820 assume neither behavior is the default.  Also, on many hosts
11821 @samp{/bin/pwd} is equivalent to @samp{pwd -P}, but Posix
11822 does not require this behavior and portable scripts should not rely on
11825 Typically it's best to use plain @command{pwd}.  On modern hosts this
11826 outputs logical directory names, which have the following advantages:
11828 @itemize @bullet
11829 @item
11830 Logical names are what the user specified.
11831 @item
11832 Physical names may not be portable from one installation
11833 host to another due to network file system gymnastics.
11834 @item
11835 On modern hosts @samp{pwd -P} may fail due to lack of permissions to
11836 some parent directory, but plain @command{pwd} cannot fail for this
11837 reason.
11838 @end itemize
11840 Also please see the discussion of the @command{cd} command.
11843 @item @command{set}
11844 @c ----------------
11845 @prindex @command{set}
11846 This builtin faces the usual problem with arguments starting with a
11847 dash.  Modern shells such as Bash or Zsh understand @option{--} to specify
11848 the end of the options (any argument after @option{--} is a parameter,
11849 even @samp{-x} for instance), but most shells simply stop the option
11850 processing as soon as a non-option argument is found.  Therefore, use
11851 @samp{dummy} or simply @samp{x} to end the option processing, and use
11852 @command{shift} to pop it out:
11854 @example
11855 set x $my_list; shift
11856 @end example
11858 Avoid @samp{set -}, e.g., @samp{set - $my_list}.  Posix no
11859 longer requires support for this command, and in traditional shells
11860 @samp{set - $my_list} resets the @samp{-v} and @samp{-x} options, which
11861 makes scripts harder to debug.
11863 Some nonstandard shells do not recognize more than one option
11864 (e.g., @samp{set -e -x} assigns @samp{-x} to the command line).  It is
11865 better to combine them:
11867 @example
11868 set -ex
11869 @end example
11872 @item @command{shift}
11873 @c ------------------
11874 @prindex @command{shift}
11875 Not only is @command{shift}ing a bad idea when there is nothing left to
11876 shift, but in addition it is not portable: the shell of @acronym{MIPS
11877 RISC/OS} 4.52 refuses to do it.
11879 Don't use @samp{shift 2} etc.; it was not in the 7th Edition Bourne shell,
11880 and it is also absent in many pre-Posix shells.
11883 @item @command{source}
11884 @c -------------------
11885 @prindex @command{source}
11886 This command is not portable, as Posix does not require it; use
11887 @command{.} instead.
11890 @item @command{test}
11891 @c -----------------
11892 @prindex @command{test}
11893 The @code{test} program is the way to perform many file and string
11894 tests.  It is often invoked by the alternate name @samp{[}, but using
11895 that name in Autoconf code is asking for trouble since it is an M4 quote
11896 character.
11898 If you need to make multiple checks using @code{test}, combine them with
11899 the shell operators @samp{&&} and @samp{||} instead of using the
11900 @code{test} operators @option{-a} and @option{-o}.  On System V, the
11901 precedence of @option{-a} and @option{-o} is wrong relative to the unary
11902 operators; consequently, Posix does not specify them, so using them
11903 is nonportable.  If you combine @samp{&&} and @samp{||} in the same
11904 statement, keep in mind that they have equal precedence.
11906 It is safe to use @samp{!} as a @command{test} operator.  For example,
11907 @samp{if test ! -d foo; @dots{}} is portable even though @samp{if ! test
11908 -d foo; @dots{}} is not.
11911 @item @command{test} (files)
11912 @c -------------------------
11913 To enable @command{configure} scripts to support cross-compilation, they
11914 shouldn't do anything that tests features of the build system instead of
11915 the host system.  But occasionally you may find it necessary to check
11916 whether some arbitrary file exists.  To do so, use @samp{test -f} or
11917 @samp{test -r}.  Do not use @samp{test -x}, because 4.3@acronym{BSD} does not
11918 have it.  Do not use @samp{test -e} either, because Solaris @command{/bin/sh}
11919 lacks it.  To test for symbolic links on systems that have them, use
11920 @samp{test -h} rather than @samp{test -L}; either form conforms to
11921 Posix 1003.1-2001, but older shells like Solaris 8
11922 @code{/bin/sh} support only @option{-h}.
11924 @item @command{test} (strings)
11925 @c ---------------------------
11926 Avoid @samp{test "@var{string}"}, in particular if @var{string} might
11927 start with a dash, since @code{test} might interpret its argument as an
11928 option (e.g., @samp{@var{string} = "-n"}).
11930 Contrary to a common belief, @samp{test -n @var{string}} and
11931 @samp{test -z @var{string}} @strong{are} portable.  Nevertheless many
11932 shells (such as Solaris, @acronym{AIX} 3.2, @sc{unicos} 10.0.0.6,
11933 Digital Unix 4, etc.)@: have bizarre precedence and may be confused if
11934 @var{string} looks like an operator:
11936 @example
11937 $ @kbd{test -n =}
11938 test: argument expected
11939 @end example
11941 If there are risks, use @samp{test "x@var{string}" = x} or @samp{test
11942 "x@var{string}" != x} instead.
11944 It is common to find variations of the following idiom:
11946 @example
11947 test -n "`echo $ac_feature | sed 's/[-a-zA-Z0-9_]//g'`" &&
11948   @var{action}
11949 @end example
11951 @noindent
11952 to take an action when a token matches a given pattern.  Such constructs
11953 should always be avoided by using:
11955 @example
11956 echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1 &&
11957   @var{action}
11958 @end example
11960 @noindent
11961 Use @code{case} where possible since it is faster, being a shell builtin:
11964 @example
11965 case $ac_feature in
11966   *[!-a-zA-Z0-9_]*) @var{action};;
11967 esac
11968 @end example
11970 Alas, negated character classes are probably not portable, although no
11971 shell is known to not support the Posix syntax @samp{[!@dots{}]}
11972 (when in interactive mode, @command{zsh} is confused by the
11973 @samp{[!@dots{}]} syntax and looks for an event in its history because of
11974 @samp{!}).  Many shells do not support the alternative syntax
11975 @samp{[^@dots{}]} (Solaris, Digital Unix, etc.).
11977 One solution can be:
11979 @example
11980 expr "$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
11981   @var{action}
11982 @end example
11984 @noindent
11985 or better yet
11987 @example
11988 expr "X$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
11989   @var{action}
11990 @end example
11992 @samp{expr "X@var{foo}" : "X@var{bar}"} is more robust than @samp{echo
11993 "X@var{foo}" | grep "^X@var{bar}"}, because it avoids problems when
11994 @samp{@var{foo}} contains backslashes.
11997 @item @command{trap}
11998 @c -----------------
11999 @prindex @command{trap}
12000 It is safe to trap at least the signals 1, 2, 13, and 15.  You can also
12001 trap 0, i.e., have the @command{trap} run when the script ends (either via an
12002 explicit @command{exit}, or the end of the script).
12004 Posix says that @samp{trap - 1 2 13 15} resets the traps for the
12005 specified signals to their default values, but many common shells (e.g.,
12006 Solaris @command{/bin/sh}) misinterpret this and attempt to execute a
12007 ``command'' named @command{-} when the specified conditions arise.
12008 There is no portable workaround, except for @samp{trap - 0}, for which
12009 @samp{trap '' 0} is a portable substitute.
12011 Although Posix is not absolutely clear on this point, it is widely
12012 admitted that when entering the trap @samp{$?} should be set to the exit
12013 status of the last command run before the trap.  The ambiguity can be
12014 summarized as: ``when the trap is launched by an @command{exit}, what is
12015 the @emph{last} command run: that before @command{exit}, or
12016 @command{exit} itself?''
12018 Bash considers @command{exit} to be the last command, while Zsh and
12019 Solaris @command{/bin/sh} consider that when the trap is run it is
12020 @emph{still} in the @command{exit}, hence it is the previous exit status
12021 that the trap receives:
12023 @example
12024 $ @kbd{cat trap.sh}
12025 trap 'echo $?' 0
12026 (exit 42); exit 0
12027 $ @kbd{zsh trap.sh}
12029 $ @kbd{bash trap.sh}
12031 @end example
12033 The portable solution is then simple: when you want to @samp{exit 42},
12034 run @samp{(exit 42); exit 42}, the first @command{exit} being used to
12035 set the exit status to 42 for Zsh, and the second to trigger the trap
12036 and pass 42 as exit status for Bash.
12038 The shell in Free@acronym{BSD} 4.0 has the following bug: @samp{$?} is
12039 reset to 0 by empty lines if the code is inside @command{trap}.
12041 @example
12042 $ @kbd{trap 'false}
12044 echo $?' 0
12045 $ @kbd{exit}
12047 @end example
12049 @noindent
12050 Fortunately, this bug only affects @command{trap}.
12052 @item @command{true}
12053 @c -----------------
12054 @prindex @command{true}
12055 @c Info cannot handle `:' in index entries.
12056 @c @prindex @command{:}
12057 Don't worry: as far as we know @command{true} is portable.
12058 Nevertheless, it's not always a builtin (e.g., Bash 1.x), and the
12059 portable shell community tends to prefer using @command{:}.  This has a
12060 funny side effect: when asked whether @command{false} is more portable
12061 than @command{true} Alexandre Oliva answered:
12063 @quotation
12064 In a sense, yes, because if it doesn't exist, the shell will produce an
12065 exit status of failure, which is correct for @command{false}, but not
12066 for @command{true}.
12067 @end quotation
12070 @item @command{unset}
12071 @c ------------------
12072 @prindex @command{unset}
12073 You cannot assume the support of @command{unset}.  Nevertheless, because
12074 it is extremely useful to disable embarrassing variables such as
12075 @code{PS1}, you can test for its existence and use
12076 it @emph{provided} you give a neutralizing value when @command{unset} is
12077 not supported:
12079 @example
12080 if (unset FOO) >/dev/null 2>&1; then
12081   unset=unset
12082 else
12083   unset=false
12085 $unset PS1 || PS1='$ '
12086 @end example
12088 @xref{Special Shell Variables}, for some neutralizing values.  Also, see
12089 @ref{Limitations of Builtins}, documentation of @command{export}, for
12090 the case of environment variables.
12091 @end table
12093 @node Limitations of Usual Tools
12094 @section Limitations of Usual Tools
12095 @cindex Limitations of usual tools
12097 The small set of tools you can expect to find on any machine can still
12098 include some limitations you should be aware of.
12100 @table @asis
12101 @item Awk
12102 @c ----------------
12103 @prindex Awk
12104 Don't leave white space before the opening parenthesis in a user function call.
12105 Posix does not allow this and @acronym{GNU} Awk rejects it:
12107 @example
12108 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
12109         BEGIN @{ die () @}'}
12110 gawk: cmd. line:2:         BEGIN @{ die () @}
12111 gawk: cmd. line:2:                      ^ parse error
12112 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
12113         BEGIN @{ die() @}'}
12114 Aaaaarg!
12115 @end example
12117 If you want your program to be deterministic, don't depend on @code{for}
12118 on arrays:
12120 @example
12121 $ @kbd{cat for.awk}
12122 END @{
12123   arr["foo"] = 1
12124   arr["bar"] = 1
12125   for (i in arr)
12126     print i
12128 $ @kbd{gawk -f for.awk </dev/null}
12131 $ @kbd{nawk -f for.awk </dev/null}
12134 @end example
12136 Some Awk implementations, such as HP-UX 11.0's native one, mishandle anchors:
12138 @example
12139 $ @kbd{echo xfoo | $AWK '/foo|^bar/ @{ print @}'}
12140 $ @kbd{echo bar | $AWK '/foo|^bar/ @{ print @}'}
12142 $ @kbd{echo xfoo | $AWK '/^bar|foo/ @{ print @}'}
12143 xfoo
12144 $ @kbd{echo bar | $AWK '/^bar|foo/ @{ print @}'}
12146 @end example
12148 @noindent
12149 Either do not depend on such patterns (i.e., use @samp{/^(.*foo|bar)/},
12150 or use a simple test to reject such implementations.
12152 @acronym{AIX} version 5.2 has an arbitrary limit of 399 on the the
12153 length of regular expressions and literal strings in an Awk program.
12155 Traditional Awk implementations derived from Unix version 7, such as
12156 Solaris @command{/bin/awk}, have many limitations and do not
12157 conform to Posix.  Nowadays @code{AC_PROG_AWK} (@pxref{Particular
12158 Programs}) will find you an Awk that doesn't have these problems, but if
12159 for some reason you prefer not to use @code{AC_PROG_AWK} you may need to
12160 address them.
12162 Traditional Awk does not support multidimensional arrays or user-defined
12163 functions.
12165 Traditional Awk does not support the @option{-v} option.  You can use
12166 assignments after the program instead, e.g., @command{$AWK '@{print v
12167 $1@}' v=x}; however, don't forget that such assignments are not
12168 evaluated until they are encountered (e.g., after any @code{BEGIN}
12169 action).
12171 Traditional Awk does not support the keywords @code{delete} or @code{do}.
12173 Traditional Awk does not support the expressions
12174 @code{@var{a}?@var{b}:@var{c}}, @code{!@var{a}}, @code{@var{a}^@var{b}},
12175 or @code{@var{a}^=@var{b}}.
12177 Traditional Awk does not support the predefined @code{CONVFMT} variable.
12179 Traditional Awk supports only the predefined functions @code{exp},
12180 @code{int}, @code{length}, @code{log}, @code{split}, @code{sprintf},
12181 @code{sqrt}, and @code{substr}.
12183 Traditional Awk @code{getline} is not at all compatible with Posix;
12184 avoid it.
12186 Traditional Awk @code{split} supports only two arguments.
12188 Traditional Awk has a limit of 99
12189 fields in a record.  You may be able to circumvent this problem by using
12190 @code{split}.
12193 @item @command{basename}
12194 @c ---------------------
12195 @prindex @command{basename}
12196 Not all hosts have a working @command{basename}, and you should instead
12197 use @code{AS_BASENAME} (@pxref{Programming in M4sh}), followed by
12198 @command{expr} if you need to strip a suffix.  For example:
12200 @example
12201 a=`basename "$aname"`       # This is not portable.
12202 a=`AS_BASENAME(["$aname"])` # This is more portable.
12204 # This is not portable.
12205 c=`basename "$cname" .c`
12207 # This is more portable.
12208 c=`AS_BASENAME(["$cname"])`
12209 case $c in
12210 ?*.c) c=`expr "X$c" : 'X\(.*\)\.c'`;;
12211 esac
12212 @end example
12215 @item @command{cat}
12216 @c ----------------
12217 @prindex @command{cat}
12218 Don't rely on any option.
12221 @item @command{cc}
12222 @c ---------------
12223 @prindex @command{cc}
12224 The command @samp{cc -c foo.c} traditionally produces an object file
12225 named @file{foo.o}.  Most compilers allow @option{-c} to be combined
12226 with @option{-o} to specify a different object file name, but
12227 Posix does not require this combination and a few compilers
12228 lack support for it.  @xref{C Compiler}, for how @acronym{GNU} Make
12229 tests for this feature with @code{AC_PROG_CC_C_O}.
12231 When a compilation such as @samp{cc -o foo foo.c} fails, some compilers
12232 (such as @sc{cds} on Reliant Unix) leave a @file{foo.o}.
12234 HP-UX @command{cc} doesn't accept @file{.S} files to preprocess and
12235 assemble.  @samp{cc -c foo.S} will appear to succeed, but in fact does
12236 nothing.
12238 The default executable, produced by @samp{cc foo.c}, can be
12240 @itemize
12241 @item @file{a.out} --- usual Posix convention.
12242 @item @file{b.out} --- i960 compilers (including @command{gcc}).
12243 @item @file{a.exe} --- @acronym{DJGPP} port of @command{gcc}.
12244 @item @file{a_out.exe} --- GNV @command{cc} wrapper for DEC C on OpenVMS.
12245 @item @file{foo.exe} --- various MS-DOS compilers.
12246 @end itemize
12248 The C compiler's traditional name is @command{cc}, but other names like
12249 @command{gcc} are common.  Posix 1003.1-2001 specifies the
12250 name @command{c99}, but older Posix editions specified
12251 @command{c89} and anyway these standard names are rarely used in
12252 practice.  Typically the C compiler is invoked from makefiles that use
12253 @samp{$(CC)}, so the value of the @samp{CC} make variable selects the
12254 compiler name.
12257 @item @command{chmod}
12258 @c ------------------
12259 @prindex @command{chmod}
12260 Avoid usages like @samp{chmod -w file}; use @samp{chmod a-w file}
12261 instead, for two reasons.  First, plain @samp{-w} does not necessarily
12262 make the file unwritable, since it does not affect mode bits that
12263 correspond to bits in the file mode creation mask.  Second,
12264 Posix says that the @samp{-w} might be interpreted as an
12265 implementation-specific option, not as a mode; Posix suggests
12266 using @samp{chmod -- -w file} to avoid this confusion, but unfortunately
12267 @samp{--} does not work on some older hosts.
12270 @item @command{cmp}
12271 @c ----------------
12272 @prindex @command{cmp}
12273 @command{cmp} performs a raw data comparison of two files, while
12274 @command{diff} compares two text files.  Therefore, if you might compare
12275 DOS files, even if only checking whether two files are different, use
12276 @command{diff} to avoid spurious differences due to differences of
12277 newline encoding.
12280 @item @command{cp}
12281 @c ---------------
12282 @prindex @command{cp}
12283 Avoid the @option{-r} option, since its behavior is not specified by
12284 Posix.  Use @option{-R} instead.  On @acronym{GNU} hosts the two options
12285 are equivalent, but on Solaris hosts (for example) @command{cp -r}
12286 reads from pipes instead of replicating them.
12288 Some @command{cp} implementations (e.g., @acronym{BSD/OS} 4.2) do not allow
12289 trailing slashes at the end of nonexistent destination directories.  To
12290 avoid this problem, omit the trailing slashes.  For example, use
12291 @samp{cp -R source /tmp/newdir} rather than @samp{cp -R source
12292 /tmp/newdir/} if @file{/tmp/newdir} does not exist.
12294 @c This is thanks to Ian.
12295 SunOS 4 @command{cp} does not support @option{-f}, although its
12296 @command{mv} does.  It's possible to deduce why @command{mv} and
12297 @command{cp} are different with respect to @option{-f}.  @command{mv}
12298 prompts by default before overwriting a read-only file.  @command{cp}
12299 does not.  Therefore, @command{mv} requires a @option{-f} option, but
12300 @command{cp} does not.  @command{mv} and @command{cp} behave differently
12301 with respect to read-only files because the simplest form of
12302 @command{cp} cannot overwrite a read-only file, but the simplest form of
12303 @command{mv} can.  This is because @command{cp} opens the target for
12304 write access, whereas @command{mv} simply calls @code{link} (or, in
12305 newer systems, @code{rename}).
12306 @c Ian said: ``I don't think -p or -r are portable''!!! How can you live
12307 @c without -r???
12309 @cindex timestamp resolution
12310 Traditionally, file timestamps had 1-second resolution, and @samp{cp
12311 -p} copied the timestamps exactly.  However, many modern file systems
12312 have timestamps with 1-nanosecond resolution.  Unfortunately, @samp{cp
12313 -p} implementations truncate timestamps when copying files, so this
12314 can result in the destination file appearing to be older than the
12315 source.  The exact amount of truncation depends on the resolution of
12316 the system calls that @command{cp} uses; traditionally this was
12317 @code{utime}, which has 1-second resolution, but some newer
12318 @command{cp} implementations use @code{utimes}, which has
12319 1-microsecond resolution.  These newer implementations include @acronym{GNU}
12320 Core Utilities 5.0.91 or later, and Solaris 8 (sparc) patch 109933-02 or
12321 later.  Unfortunately as of January 2006 there is still no system
12322 call to set time stamps to the full nanosecond resolution.
12324 Bob Proulx notes that @samp{cp -p} always @emph{tries} to copy
12325 ownerships.  But whether it actually does copy ownerships or not is a
12326 system dependent policy decision implemented by the kernel.  If the
12327 kernel allows it then it happens.  If the kernel does not allow it then
12328 it does not happen.  It is not something @command{cp} itself has control
12329 over.
12331 In Unix System V any user can chown files to any other user, and System
12332 V also has a non-sticky @file{/tmp}.  That probably derives from the
12333 heritage of System V in a business environment without hostile users.
12334 @acronym{BSD} changed this
12335 to be a more secure model where only root can @command{chown} files and
12336 a sticky @file{/tmp} is used.  That undoubtedly derives from the heritage
12337 of @acronym{BSD} in a campus environment.
12339 @acronym{GNU}/Linux and Solaris by default follow @acronym{BSD}, but
12340 can be configured to allow a System V style @command{chown}.  On the
12341 other hand, @acronym{HP-UX} follows System V, but can
12342 be configured to use the modern security model and disallow
12343 @command{chown}.  Since it is an administrator-configurable parameter
12344 you can't use the name of the kernel as an indicator of the behavior.
12348 @item @command{date}
12349 @c -----------------
12350 @prindex @command{date}
12351 Some versions of @command{date} do not recognize special % directives,
12352 and unfortunately, instead of complaining, they just pass them through,
12353 and exit with success:
12355 @example
12356 $ @kbd{uname -a}
12357 OSF1 medusa.sis.pasteur.fr V5.1 732 alpha
12358 $ @kbd{date "+%s"}
12360 @end example
12363 @item @command{diff}
12364 @c -----------------
12365 @prindex @command{diff}
12366 Option @option{-u} is nonportable.
12368 Some implementations, such as Tru64's, fail when comparing to
12369 @file{/dev/null}.  Use an empty file instead.
12372 @item @command{dirname}
12373 @c --------------------
12374 @prindex @command{dirname}
12375 Not all hosts have a working @command{dirname}, and you should instead
12376 use @code{AS_DIRNAME} (@pxref{Programming in M4sh}).  For example:
12378 @example
12379 dir=`dirname "$file"`       # This is not portable.
12380 dir=`AS_DIRNAME(["$file"])` # This is more portable.
12381 @end example
12384 @item @command{egrep}
12385 @c ------------------
12386 @prindex @command{egrep}
12387 Posix 1003.1-2001 no longer requires @command{egrep},
12388 but many older hosts do not yet support the Posix
12389 replacement @code{grep -E}.  Also, some traditional implementations do
12390 not work on long input lines.  To work around these problems, invoke
12391 @code{AC_PROG_EGREP} and then use @code{$EGREP}.
12393 Portable extended regular expressions should use @samp{\} only to escape
12394 characters in the string @samp{$()*+.?[\^@{|}.  For example, @samp{\@}}
12395 is not portable, even though it typically matches @samp{@}}.
12397 The empty alternative is not portable, use @samp{?} instead.  For
12398 instance with Digital Unix v5.0:
12400 @example
12401 > printf "foo\n|foo\n" | $EGREP '^(|foo|bar)$'
12402 |foo
12403 > printf "bar\nbar|\n" | $EGREP '^(foo|bar|)$'
12404 bar|
12405 > printf "foo\nfoo|\n|bar\nbar\n" | $EGREP '^(foo||bar)$'
12407 |bar
12408 @end example
12410 @command{$EGREP} also suffers the limitations of @command{grep}.
12412 @item @command{expr}
12413 @c -----------------
12414 @prindex @command{expr}
12415 No @command{expr} keyword starts with @samp{X}, so use @samp{expr
12416 X"@var{word}" : 'X@var{regex}'} to keep @command{expr} from
12417 misinterpreting @var{word}.
12419 Don't use @code{length}, @code{substr}, @code{match} and @code{index}.
12421 @item @command{expr} (@samp{|})
12422 @prindex @command{expr} (@samp{|})
12423 You can use @samp{|}.  Although Posix does require that @samp{expr
12424 ''} return the empty string, it does not specify the result when you
12425 @samp{|} together the empty string (or zero) with the empty string.  For
12426 example:
12428 @example
12429 expr '' \| ''
12430 @end example
12432 Posix 1003.2-1992 returns the empty string
12433 for this case, but traditional Unix returns @samp{0} (Solaris is
12434 one such example).  In Posix 1003.1-2001, the specification was
12435 changed to match traditional Unix's behavior (which is
12436 bizarre, but it's too late to fix this).  Please note that the same
12437 problem does arise when the empty string results from a computation,
12438 as in:
12440 @example
12441 expr bar : foo \| foo : bar
12442 @end example
12444 @noindent
12445 Avoid this portability problem by avoiding the empty string.
12448 @item @command{expr} (@samp{:})
12449 @c ----------------------------
12450 @prindex @command{expr}
12451 Portable @command{expr} regular expressions should use @samp{\} to
12452 escape only characters in the string @samp{$()*.0123456789[\^n@{@}}.
12453 For example, alternation, @samp{\|}, is common but Posix does not
12454 require its support, so it should be avoided in portable scripts.
12455 Similarly, @samp{\+} and @samp{\?} should be avoided.
12457 Portable @command{expr} regular expressions should not begin with
12458 @samp{^}.  Patterns are automatically anchored so leading @samp{^} is
12459 not needed anyway.
12461 The Posix standard is ambiguous as to whether
12462 @samp{expr 'a' : '\(b\)'} outputs @samp{0} or the empty string.
12463 In practice, it outputs the empty string on most platforms, but portable
12464 scripts should not assume this.  For instance, the @acronym{QNX} 4.25 native
12465 @command{expr} returns @samp{0}.
12467 One might think that a way to get a uniform behavior would be to use
12468 the empty string as a default value:
12470 @example
12471 expr a : '\(b\)' \| ''
12472 @end example
12474 @noindent
12475 Unfortunately this behaves exactly as the original expression; see the
12476 @samp{@command{expr} (@samp{|})} entry for more information.
12478 Older @command{expr} implementations (e.g., SunOS 4 @command{expr} and
12479 Solaris 8 @command{/usr/ucb/expr}) have a silly length limit that causes
12480 @command{expr} to fail if the matched substring is longer than 120
12481 bytes.  In this case, you might want to fall back on @samp{echo|sed} if
12482 @command{expr} fails.
12484 On Mac OS X 10.4, @command{expr} mishandles the pattern @samp{[^-]} in
12485 some cases.  For example, the command @samp{expr
12486 Xpowerpc-apple-darwin8.1.0 : 'X[^-]*-[^-]*-\(.*\)'} outputs
12487 @samp{apple-darwin8.1.0} rather than the correct @samp{darwin8.1.0}.
12488 This particular case can be worked around by substituting @samp{[^--]}
12489 for @samp{[^-]}.
12491 Don't leave, there is some more!
12493 The @acronym{QNX} 4.25 @command{expr}, in addition of preferring @samp{0} to
12494 the empty string, has a funny behavior in its exit status: it's always 1
12495 when parentheses are used!
12497 @example
12498 $ @kbd{val=`expr 'a' : 'a'`; echo "$?: $val"}
12499 0: 1
12500 $ @kbd{val=`expr 'a' : 'b'`; echo "$?: $val"}
12501 1: 0
12503 $ @kbd{val=`expr 'a' : '\(a\)'`; echo "?: $val"}
12504 1: a
12505 $ @kbd{val=`expr 'a' : '\(b\)'`; echo "?: $val"}
12506 1: 0
12507 @end example
12509 @noindent
12510 In practice this can be a big problem if you are ready to catch failures
12511 of @command{expr} programs with some other method (such as using
12512 @command{sed}), since you may get twice the result.  For instance
12514 @example
12515 $ @kbd{expr 'a' : '\(a\)' || echo 'a' | sed 's/^\(a\)$/\1/'}
12516 @end example
12518 @noindent
12519 will output @samp{a} on most hosts, but @samp{aa} on @acronym{QNX} 4.25.  A
12520 simple workaround consists in testing @command{expr} and use a variable
12521 set to @command{expr} or to @command{false} according to the result.
12523 Tru64 @command{expr} incorrectly treats the result as a number, if it
12524 can be interpreted that way:
12526 @example
12527 $ @kbd{expr 00001 : '.*\(...\)'}
12529 @end example
12532 @item @command{fgrep}
12533 @c ------------------
12534 @prindex @command{fgrep}
12535 Posix 1003.1-2001 no longer requires @command{fgrep},
12536 but many older hosts do not yet support the Posix
12537 replacement @code{grep -F}.  Also, some traditional implementations do
12538 not work on long input lines.  To work around these problems, invoke
12539 @code{AC_PROG_FGREP} and then use @code{$FGREP}.
12542 @item @command{find}
12543 @c -----------------
12544 @prindex @command{find}
12545 The option @option{-maxdepth} seems to be @acronym{GNU} specific.
12546 Tru64 v5.1, Net@acronym{BSD} 1.5 and Solaris @command{find}
12547 commands do not understand it.
12549 The replacement of @samp{@{@}} is guaranteed only if the argument is
12550 exactly @emph{@{@}}, not if it's only a part of an argument.  For
12551 instance on DU, and HP-UX 10.20 and HP-UX 11:
12553 @example
12554 $ @kbd{touch foo}
12555 $ @kbd{find . -name foo -exec echo "@{@}-@{@}" \;}
12556 @{@}-@{@}
12557 @end example
12559 @noindent
12560 while @acronym{GNU} @command{find} reports @samp{./foo-./foo}.
12563 @item @command{grep}
12564 @c -----------------
12565 @prindex @command{grep}
12566 Portable scripts can rely on the @command{grep} options @option{-c},
12567 @option{-l}, @option{-n}, and @option{-v}, but should avoid other
12568 options.  For example, don't use @option{-w}, as Posix does not require
12569 it and Irix 6.5.16m's @command{grep} does not support it.
12571 Some of the options required by Posix are not portable in practice.
12572 Don't use @samp{grep -q} to suppress output, because many @command{grep}
12573 implementations (e.g., Solaris) do not support @option{-q}.
12574 Don't use @samp{grep -s} to suppress output either, because Posix
12575 says @option{-s} does not suppress output, only some error messages;
12576 also, the @option{-s} option of traditional @command{grep} behaved
12577 like @option{-q} does in most modern implementations.  Instead,
12578 redirect the standard output and standard error (in case the file
12579 doesn't exist) of @code{grep} to @file{/dev/null}.  Check the exit
12580 status of @code{grep} to determine whether it found a match.
12582 Some traditional @command{grep} implementations do not work on long
12583 input lines.  Also, many implementations do not support multiple regexps
12584 with @option{-e}: they either reject @samp{-e} entirely (e.g., Solaris)
12585 or honor only the last pattern (e.g., @acronym{IRIX} 6.5).  To
12586 work around these problems, invoke @code{AC_PROG_GREP} and then use
12587 @code{$GREP}.
12589 Another possible workaround for the multiple @samp{-e} problem is to
12590 separate the patterns by newlines, for example:
12592 @example
12593 grep 'foo
12594 bar' in.txt
12595 @end example
12597 @noindent
12598 except that this will fail with traditional @command{grep}
12599 implementations and with Open@acronym{BSD} 3.8 @command{grep}.
12601 Traditional @command{grep} implementations (e.g., Solaris) do not
12602 support the @option{-E} or @samp{-F} options.  To work around these
12603 problems, invoke @code{AC_PROG_EGREP} and then use @code{$EGREP}, and
12604 similarly for @code{AC_PROG_FGREP} and @code{$FGREP}.
12606 Portable @command{grep} regular expressions should use @samp{\} only to
12607 escape characters in the string @samp{$()*.0123456789[\^@{@}}.  For example,
12608 alternation, @samp{\|}, is common but Posix does not require its
12609 support in basic regular expressions, so it should be avoided in
12610 portable scripts.  Solaris @command{grep} does not support it.
12611 Similarly, @samp{\+} and @samp{\?} should be avoided.
12614 @item @command{join}
12615 @c -----------------
12616 @prindex @command{join}
12617 Solaris 8 @command{join} has bugs when the second operand is standard
12618 input, and when standard input is a pipe.  For example, the following
12619 shell script causes Solaris 8 @command{join} to loop forever:
12621 @example
12622 cat >file <<'EOF'
12623 1 x
12624 2 y
12626 cat file | join file -
12627 @end example
12629 Use @samp{join - file} instead.
12632 @item @command{ln}
12633 @c ---------------
12634 @prindex @command{ln}
12635 @cindex Symbolic links
12636 Don't rely on @command{ln} having a @option{-f} option.  Symbolic links
12637 are not available on old systems; use @samp{$(LN_S)} as a portable substitute.
12639 For versions of the @acronym{DJGPP} before 2.04,
12640 @command{ln} emulates symbolic links
12641 to executables by generating a stub that in turn calls the real
12642 program.  This feature also works with nonexistent files like in the
12643 Posix spec.  So @samp{ln -s file link} will generate @file{link.exe},
12644 which will attempt to call @file{file.exe} if run.  But this feature only
12645 works for executables, so @samp{cp -p} is used instead for these
12646 systems.  @acronym{DJGPP} versions 2.04 and later have full support
12647 for symbolic links.
12650 @item @command{ls}
12651 @c ---------------
12652 @prindex @command{ls}
12653 @cindex Listing directories
12654 The portable options are @option{-acdilrtu}.  Modern practice is for
12655 @option{-l} to output both owner and group, but traditional
12656 @command{ls} omits the group.
12658 @c From Bruce Lilly:
12660 @c # telnet dim
12661 @c [...]
12662 @c   Unix System V (TWG-TCP/IP) (dim.blilly.com)
12663 @c [...]
12664 @c $ mkdir foo
12665 @c $ cd foo
12666 @c $ /bin/ls a.exe 2>/dev/null
12667 @c a.exe not found
12668 @c $ what /bin/ls
12669 @c /bin/ls:
12670 @c           fndcmd:fndcmd.sl 1.68
12671 @c $ uname -a
12672 @c Unix dim SYSTEM5 3.51m mc68k
12674 @c It's an AT&T 3B1.  See http://www.faqs.org/faqs/3b1-faq/ or any
12675 @c mirror of the 3B1 FAQ.  It's actually SVR2.2.
12676 Modern practice is for all diagnostics to go to standard error, but
12677 traditional @samp{ls foo} prints the message @samp{foo not found} to
12678 standard output if @file{foo} does not exist.  Be careful when writing
12679 shell commands like @samp{sources=`ls *.c 2>/dev/null`}, since with
12680 traditional @command{ls} this is equivalent to @samp{sources="*.c not
12681 found"} if there are no @samp{.c} files.
12684 @item @command{mkdir}
12685 @c ------------------
12686 @prindex @command{mkdir}
12687 @cindex Making directories
12688 None of @command{mkdir}'s options are portable to older systems.  Instead of
12689 @samp{mkdir -p @var{file-name}}, you should use use
12690 @code{AS_MKDIR_P(@var{file-name})} (@pxref{Programming in M4sh}).
12692 Posix does not clearly specify whether @samp{mkdir -p foo}
12693 should succeed when @file{foo} is a symbolic link to an already-existing
12694 directory.  The @acronym{GNU} Core Utilities 5.1.0 @command{mkdir}
12695 succeeds, but Solaris @command{mkdir} fails.
12697 Not all @code{mkdir -p} implementations are thread-safe.  When it is not
12698 and you call @code{mkdir -p a/b} and @code{mkdir -p a/c} at the same
12699 time, both will detect that @file{a/} is missing, one will create
12700 @file{a/}, then the other will try to create @file{a/} and die with a
12701 @code{File exists} error.  At least Solaris 10, Net@acronym{BSD} 1.6, and Open@acronym{BSD}
12702 3.4 have an unsafe @code{mkdir -p}.  The @acronym{GNU} Core Utilities
12703 (since @samp{fileutils}
12704 version 4.0c), Free@acronym{BSD} 5.0, and Net@acronym{BSD}-current are
12705 known to have a
12706 race-free @code{mkdir -p}.  This possible race is harmful in parallel
12707 builds when several @file{Makefile} rules call @code{mkdir -p} to
12708 construct directories.  You may use @command{mkinstalldirs} or
12709 @code{install-sh -d} as a safe replacement, provided these scripts are
12710 recent enough (the copies shipped with Automake 1.8.3 are OK, those from
12711 older versions are not thread-safe either).
12714 @item @command{mktemp}
12715 @c -------------------
12716 @prindex @command{mktemp}
12717 @cindex Creating temporary files
12718 Shell scripts can use temporary files safely with @command{mktemp}, but
12719 it does not exist on all systems.  A portable way to create a safe
12720 temporary file name is to create a temporary directory with mode 700 and
12721 use a file inside this directory.  Both methods prevent attackers from
12722 gaining control, though @command{mktemp} is far less likely to fail
12723 gratuitously under attack.
12725 Here is sample code to create a new temporary directory safely:
12727 @example
12728 # Create a temporary directory $tmp in $TMPDIR (default /tmp).
12729 # Use mktemp if possible; otherwise fall back on mkdir,
12730 # with $RANDOM to make collisions less likely.
12731 : $@{TMPDIR=/tmp@}
12733   tmp=`
12734     (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
12735   ` &&
12736   test -n "$tmp" && test -d "$tmp"
12737 @} || @{
12738   tmp=$TMPDIR/foo$$-$RANDOM
12739   (umask 077 && mkdir "$tmp")
12740 @} || exit $?
12741 @end example
12744 @item @command{mv}
12745 @c ---------------
12746 @prindex @command{mv}
12747 @cindex Moving open files
12748 The only portable options are @option{-f} and @option{-i}.
12750 Moving individual files between file systems is portable (it was in Unix
12751 version 6),
12752 but it is not always atomic: when doing @samp{mv new existing}, there's
12753 a critical section where neither the old nor the new version of
12754 @file{existing} actually exists.
12756 On some systems moving files from @file{/tmp} can sometimes cause
12757 undesirable (but perfectly valid) warnings, even if you created these
12758 files.  This is because @file{/tmp} belongs to a group that ordinary
12759 users are not members of, and files created in @file{/tmp} inherit
12760 @file{/tmp}'s group.  When the file is copied, @command{mv} issues
12761 a diagnostic without failing:
12763 @smallexample
12764 $ @kbd{touch /tmp/foo}
12765 $ @kbd{mv /tmp/foo .}
12766 @error{}mv: ./foo: set owner/group (was: 100/0): Operation not permitted
12767 $ @kbd{echo $?}
12769 $ @kbd{ls foo}
12771 @end smallexample
12773 @noindent
12774 This annoying behavior conforms to Posix, unfortunately.
12776 Moving directories across mount points is not portable, use @command{cp}
12777 and @command{rm}.
12779 Moving/Deleting open files isn't portable.  The following can't be done
12780 on @acronym{DOS} variants:
12782 @example
12783 exec > foo
12784 mv foo bar
12785 @end example
12787 @noindent
12788 nor can
12790 @example
12791 exec > foo
12792 rm -f foo
12793 @end example
12795 @item @command{sed}
12796 @c ----------------
12797 @prindex @command{sed}
12798 Patterns should not include the separator (unless escaped), even as part
12799 of a character class.  In conformance with Posix, the Cray
12800 @command{sed} will reject @samp{s/[^/]*$//}: use @samp{s,[^/]*$,,}.
12802 Avoid empty patterns within parentheses (i.e., @samp{\(\)}).  Posix does
12803 not require support for empty patterns, and Unicos 9 @command{sed} rejects
12804 them.
12806 Unicos 9 @command{sed} loops endlessly on patterns like @samp{.*\n.*}.
12808 Sed scripts should not use branch labels longer than 8 characters and
12809 should not contain comments.  HP-UX sed has a limit of 99 commands and
12810 48 labels, which can not be circumvented by using more than one script
12811 file.  It can execute up to 19 reads with the @samp{r} command per cycle.
12813 Avoid redundant @samp{;}, as some @command{sed} implementations, such as
12814 Net@acronym{BSD} 1.4.2's, incorrectly try to interpret the second
12815 @samp{;} as a command:
12817 @example
12818 $ @kbd{echo a | sed 's/x/x/;;s/x/x/'}
12819 sed: 1: "s/x/x/;;s/x/x/": invalid command code ;
12820 @end example
12822 Input should not have unreasonably long lines, since some @command{sed}
12823 implementations have an input buffer limited to 4000 bytes.
12825 Portable @command{sed} regular expressions should use @samp{\} only to escape
12826 characters in the string @samp{$()*.0123456789[\^n@{@}}.  For example,
12827 alternation, @samp{\|}, is common but Posix does not require its
12828 support, so it should be avoided in portable scripts.  Solaris
12829 @command{sed} does not support alternation; e.g., @samp{sed '/a\|b/d'}
12830 deletes only lines that contain the literal string @samp{a|b}.
12831 Similarly, @samp{\+} and @samp{\?} should be avoided.
12833 Anchors (@samp{^} and @samp{$}) inside groups are not portable.
12835 Nested parenthesization in patterns (e.g., @samp{\(\(a*\)b*)\)}) is
12836 quite portable to modern hosts, but is not supported by some older
12837 @command{sed} implementations like SVR3.
12839 Some @command{sed} implementations, e.g., Solaris,
12840 restrict the special role of the asterisk to one-character regular expressions.
12841 This may lead to unexpected behavior:
12843 @example
12844 $ @kbd{echo '1*23*4' | /usr/bin/sed 's/\(.\)*/x/g'}
12845 x2x4
12846 $ @kbd{echo '1*23*4' | /usr/xpg4/bin/sed 's/\(.\)*/x/g'}
12848 @end example
12850 The @option{-e} option is portable.
12851 Some people prefer to use it:
12853 @example
12854 sed -e '@var{command-1}' \
12855     -e '@var{command-2}'
12856 @end example
12858 @noindent
12859 as opposed to the equivalent:
12861 @example
12862 sed '
12863   @var{command-1}
12864   @var{command-2}
12866 @end example
12868 @noindent
12869 The following usage is sometimes equivalent:
12871 @example
12872 sed '@var{command-1};@var{command-2}'
12873 @end example
12875 but Posix says that this use of a semicolon has undefined effect if
12876 @var{command-1}'s verb is @samp{@{}, @samp{a}, @samp{b}, @samp{c},
12877 @samp{i}, @samp{r}, @samp{t}, @samp{w}, @samp{:}, or @samp{#}, so you
12878 should use semicolon only with simple scripts that do not use these
12879 verbs.
12881 Commands inside @{ @} brackets are further restricted.  Posix says that
12882 they cannot be preceded by addresses, @samp{!}, or @samp{;}, and that
12883 each command must be followed immediately by a newline, without any
12884 intervening blanks or semicolons.  The closing bracket must be alone on
12885 a line, other than white space preceding or following it.
12887 Contrary to yet another urban legend, you may portably use @samp{&} in
12888 the replacement part of the @code{s} command to mean ``what was
12889 matched''.  All descendants of Unix version 7 @command{sed}
12890 (at least; we
12891 don't have first hand experience with older @command{sed}s) have
12892 supported it.
12894 Posix requires that you must not have any white space between
12895 @samp{!} and the following command.  It is OK to have blanks between
12896 the address and the @samp{!}.  For instance, on Solaris:
12898 @example
12899 $ @kbd{echo "foo" | sed -n '/bar/ ! p'}
12900 @error{}Unrecognized command: /bar/ ! p
12901 $ @kbd{echo "foo" | sed -n '/bar/! p'}
12902 @error{}Unrecognized command: /bar/! p
12903 $ @kbd{echo "foo" | sed -n '/bar/ !p'}
12905 @end example
12907 Posix also says that you should not combine @samp{!} and @samp{;}.  If
12908 you use @samp{!}, it is best to put it on a command that is delimited by
12909 newlines rather than @samp{;}.
12911 Also note that Posix requires that the @samp{b}, @samp{t}, @samp{r}, and
12912 @samp{w} commands be followed by exactly one space before their argument.
12913 On the other hand, no white space is allowed between @samp{:} and the
12914 subsequent label name.
12916 @item @command{sed} (@samp{t})
12917 @c ---------------------------
12918 @prindex @command{sed} (@samp{t})
12919 Some old systems have @command{sed} that ``forget'' to reset their
12920 @samp{t} flag when starting a new cycle.  For instance on @acronym{MIPS
12921 RISC/OS}, and on @sc{irix} 5.3, if you run the following @command{sed}
12922 script (the line numbers are not actual part of the texts):
12924 @example
12925 s/keep me/kept/g  # a
12926 t end             # b
12927 s/.*/deleted/g    # c
12928 :end              # d
12929 @end example
12931 @noindent
12934 @example
12935 delete me         # 1
12936 delete me         # 2
12937 keep me           # 3
12938 delete me         # 4
12939 @end example
12941 @noindent
12942 you get
12944 @example
12945 deleted
12946 delete me
12947 kept
12948 deleted
12949 @end example
12951 @noindent
12952 instead of
12954 @example
12955 deleted
12956 deleted
12957 kept
12958 deleted
12959 @end example
12961 Why?  When processing line 1, (a) matches, therefore sets the @samp{t}
12962 flag, (b)b jumps to (d), and the output is produced.  When processing
12963 line 2, the @samp{t} flag is still set (this is the bug).  Command (a)
12964 fails to match, but @command{sed} is not supposed to clear the @samp{t}
12965 flag when a substitution fails.  Command (b) sees that the flag is set,
12966 therefore it clears it, and jumps to (d), hence you get @samp{delete me}
12967 instead of @samp{deleted}.  When processing line (3), @samp{t} is clear,
12968 (a) matches, so the flag is set, hence (b) clears the flags and jumps.
12969 Finally, since the flag is clear, line 4 is processed properly.
12971 There are two things one should remember about @samp{t} in @command{sed}.
12972 Firstly, always remember that @samp{t} jumps if @emph{some} substitution
12973 succeeded, not only the immediately preceding substitution.  Therefore,
12974 always use a fake @samp{t clear} followed by a @samp{:clear} on the next
12975 line, to reset the @samp{t} flag where needed.
12977 Secondly, you cannot rely on @command{sed} to clear the flag at each new
12978 cycle.
12980 One portable implementation of the script above is:
12982 @example
12983 t clear
12984 :clear
12985 s/keep me/kept/g
12986 t end
12987 s/.*/deleted/g
12988 :end
12989 @end example
12991 @item @command{touch}
12992 @c ------------------
12993 @prindex @command{touch}
12994 @cindex timestamp resolution
12995 If you specify the desired timestamp (e.g., with the @option{-r}
12996 option), @command{touch} typically uses the @code{utime} or
12997 @code{utimes} system call, which can result in the same kind of
12998 timestamp truncation problems that @samp{cp -p} has.
13000 On some old @acronym{BSD} systems, @command{touch} or any command that
13001 results in an empty file does not update the timestamps, so use a
13002 command like @command{echo} as a workaround.
13004 @acronym{GNU} @command{touch} 3.16r (and presumably all before that)
13005 fails to work on SunOS 4.1.3 when the empty file is on an
13006 @acronym{NFS}-mounted 4.2 volume.
13008 @end table
13011 @node Limitations of Make
13012 @section Limitations of Make
13013 @prindex @command{make}
13014 @cindex Limitations of @command{make}
13016 @command{make} itself suffers a great number of limitations, only a few
13017 of which are listed here.  First of all, remember that since commands
13018 are executed by the shell, all its weaknesses are inherited@enddots{}
13020 @table @asis
13022 @item @code{$<}
13023 Posix says that the @samp{$<} construct in makefiles can be
13024 used only in inference rules and in the @samp{.DEFAULT} rule; its
13025 meaning in ordinary rules is unspecified.  Solaris @command{make}
13026 for instance will replace it with the empty string.  Open@acronym{BSD} (3.0 and
13027 later) @command{make} will diagnose these uses and error out.
13029 @item Command execution
13030 Since 1992 Posix has required that @command{make} must invoke
13031 each command with the equivalent of a @samp{sh -c} subshell.  However,
13032 many @command{make} implementations, including @acronym{BSD} make through 2004,
13033 use @samp{sh -e -c} instead, and the @option{-e} option causes the
13034 subshell to exit immediately if a subsidiary simple-command fails.  For
13035 example, the command @samp{touch T; rm -f U} will always attempt to
13036 remove @file{U} with Posix make, but incompatible
13037 @command{make} implementations skip the @command{rm} if the
13038 @command{touch} fails.  One way to work around this is to reword the
13039 affected simple-commands so that they always succeed, e.g., @samp{touch
13040 T || :; rm -f U}.
13042 @item Leading underscore in macro names
13043 Some @command{make}s don't support leading underscores in macro names,
13044 such as on NEWS-OS 4.2R.
13046 @example
13047 $ @kbd{cat Makefile}
13048 _am_include = #
13049 _am_quote =
13050 all:; @@echo this is test
13051 $ @kbd{make}
13052 Make: Must be a separator on rules line 2.  Stop.
13053 $ @kbd{cat Makefile2}
13054 am_include = #
13055 am_quote =
13056 all:; @@echo this is test
13057 $ @kbd{make -f Makefile2}
13058 this is test
13059 @end example
13061 @item Trailing backslash in macro
13062 @c  This has been seen on ia64 hpux 11.20, and on one hppa hpux 10.20,
13063 @c  but another hppa hpux 10.20 didn't have it.  Bob Proulx
13064 @c  <bob@proulx.com> thinks it was in hpux 8.0 too.
13065 On some versions of HP-UX, @command{make} will read multiple newlines
13066 following a backslash, continuing to the next non-empty line.  For
13067 example,
13069 @example
13070 FOO = one \
13072 BAR = two
13074 test:
13075         : FOO is "$(FOO)"
13076         : BAR is "$(BAR)"
13077 @end example
13079 @noindent
13080 shows @code{FOO} equal to @code{one BAR = two}.  Other @command{make}s
13081 sensibly let a backslash continue only to the immediately following
13082 line.
13084 @item Escaped newline in comments
13086 According to Posix, @file{Makefile} comments start with @code{#}
13087 and continue until an unescaped newline is reached.
13089 @example
13090 % @kbd{cat Makefile}
13091 # A = foo \
13092       bar \
13093       baz
13095 all:
13096         @@echo ok
13097 % @kbd{make}   # GNU make
13099 @end example
13101 @noindent
13102 However in Real World this is not always the case.  Some implementations
13103 discards anything from @code{#} up to the end of line, ignoring any
13104 trailing backslash.
13106 @example
13107 % @kbd{pmake}  # BSD make
13108 "Makefile", line 3: Need an operator
13109 Fatal errors encountered -- cannot continue
13110 @end example
13112 @noindent
13113 Therefore, if you want to comment out a multi-line definition, prefix each
13114 line with @code{#}, not only the first.
13116 @example
13117 # A = foo \
13118 #     bar \
13119 #     baz
13120 @end example
13122 @item Long lines.
13124 OSF/1 4.0d's @command{make} cannot process @file{Makefile}s with lines
13125 longer than 38912 bytes.  It exits with a @code{Line too long}
13126 diagnostic.  A later version, Tru64 5.1's @command{make} has been
13127 reported to crash with lines around 20 kB.
13129 @item @code{make macro=value} and sub-@command{make}s.
13131 A command-line variable definition such as @code{foo=bar} overrides any
13132 definition of @code{foo} in the @file{Makefile}.  Some @command{make}
13133 implementations (such as @acronym{GNU} @command{make}) will propagate this
13134 override to sub-invocations of @command{make}.  Some other implementation
13135 will not pass the substitution along to sub-@command{make}s.
13137 @example
13138 % @kbd{cat Makefile}
13139 foo = foo
13140 one:
13141         @@echo $(foo)
13142         $(MAKE) two
13143 two:
13144         @@echo $(foo)
13145 % @kbd{make foo=bar}            # GNU make 3.79.1
13147 make two
13148 make[1]: Entering directory `/home/adl'
13150 make[1]: Leaving directory `/home/adl'
13151 % @kbd{pmake foo=bar}           # BSD make
13153 pmake two
13155 @end example
13157 You have a few possibilities if you do want the @code{foo=bar} override
13158 to propagate to sub-@command{make}s.  One is to use the @code{-e}
13159 option, which causes all environment variables to have precedence over
13160 the @file{Makefile} macro definitions, and declare foo as an environment
13161 variable:
13163 @example
13164 % @kbd{env foo=bar make -e}
13165 @end example
13167 The @code{-e} option is propagated to sub-@command{make}s automatically,
13168 and since the environment is inherited between @command{make}
13169 invocations, the @code{foo} macro will be overridden in
13170 sub-@code{make}s as expected.
13172 This syntax (@code{foo=bar make -e}) is portable only when used
13173 outside of a @file{Makefile}, for instance from a script or from the
13174 command line.  When run inside a @command{make} rule, @acronym{GNU}
13175 @command{make} 3.80 and prior versions forget to propagate the
13176 @code{-e} option to sub-@command{make}s.
13178 Moreover, using @code{-e} could have unexpected side-effects if your
13179 environment contains some other macros usually defined by the
13180 Makefile.  (See also the note about @code{make -e} and @code{SHELL}
13181 below.)
13183 Another way to propagate overrides to sub-@command{make}s is to do it
13184 manually, from your @file{Makefile}:
13186 @example
13187 foo = foo
13188 one:
13189         @@echo $(foo)
13190         $(MAKE) foo=$(foo) two
13191 two:
13192         @@echo $(foo)
13193 @end example
13195 You need to foresee all macros that a user might want to override if
13196 you do that.
13198 @item The @code{SHELL} macro
13199 @cindex @code{SHELL} and @command{make}
13200 @cindex @command{make} and @code{SHELL}
13202 Posix-compliant @command{make}s internally use the @code{$(SHELL)}
13203 macro to spawn shell processes and execute @file{Makefile} rules.  This
13204 is a builtin macro supplied by @command{make}, but it can be modified
13205 from the @file{Makefile} or a command-line argument.
13207 Not all @command{make}s will define this @code{SHELL} macro.  OSF/Tru64
13208 @command{make} is an example; this implementation will always use
13209 @code{/bin/sh}.  So it's a good idea to always define @code{SHELL} in
13210 your @file{Makefile}s.  If you use Autoconf, do
13212 @example
13213 SHELL = @@SHELL@@
13214 @end example
13216 Do not force @code{SHELL = /bin/sh} because that is not correct
13217 everywhere.  For instance @acronym{DJGPP} lacks @code{/bin/sh}, and when
13218 its @acronym{GNU} @code{make} port sees such a setting it enters a special
13219 emulation mode where features like pipes and redirections are emulated
13220 on top of DOS's @command{command.com}.  Unfortunately this emulation is
13221 incomplete; for instance it does not handle command substitutions.
13222 On @acronym{DJGPP} @code{SHELL} should point to Bash.
13224 Posix-compliant @command{make}s should never acquire the value of
13225 $(SHELL) from the environment, even when @code{make -e} is used
13226 (otherwise, think about what would happen to your rules if
13227 @code{SHELL=/bin/tcsh}).
13229 However not all @command{make} implementations will make this exception.
13230 For instance it's not surprising that OSF/Tru64 @command{make} doesn't
13231 protect @code{SHELL}, since it doesn't use it.
13233 @example
13234 % @kbd{cat Makefile}
13235 SHELL = /bin/sh
13236 FOO = foo
13237 all:
13238         @@echo $(SHELL)
13239         @@echo $(FOO)
13240 % @kbd{env SHELL=/bin/tcsh FOO=bar make -e}   # OSF1 V4.0 Make
13241 /bin/tcsh
13243 % @kbd{env SHELL=/bin/tcsh FOO=bar gmake -e}  # GNU make
13244 /bin/sh
13246 @end example
13248 @item Comments in rules
13249 @cindex Comments in @file{Makefile} rules
13250 @cindex @file{Makefile} rules and comments
13252 Never put comments in a rule.
13254 Some @command{make} treat anything starting with a tab as a command for
13255 the current rule, even if the tab is immediately followed by a @code{#}.
13256 The @command{make} from Tru64 Unix V5.1 is one of them.  The following
13257 @file{Makefile} will run @code{# foo} through the shell.
13259 @example
13260 all:
13261         # foo
13262 @end example
13264 @item The @file{obj/} subdirectory.
13265 @cindex @file{obj/}, subdirectory
13266 @cindex @acronym{BSD} @command{make} and @file{obj/}
13268 Never name one of your subdirectories @file{obj/} if you don't like
13269 surprises.
13271 If an @file{obj/} directory exists, @acronym{BSD} @command{make} will enter it
13272 before reading @file{Makefile}.  Hence the @file{Makefile} in the
13273 current directory will not be read.
13275 @example
13276 % @kbd{cat Makefile}
13277 all:
13278         echo Hello
13279 % @kbd{cat obj/Makefile}
13280 all:
13281         echo World
13282 % @kbd{make}      # GNU make
13283 echo Hello
13284 Hello
13285 % @kbd{pmake}     # BSD make
13286 echo World
13287 World
13288 @end example
13290 @item @code{make -k}
13291 @cindex @code{make -k}
13293 Do not rely on the exit status of @code{make -k}.  Some implementations
13294 reflect whether they encountered an error in their exit status; other
13295 implementations always succeed.
13297 @example
13298 % @kbd{cat Makefile}
13299 all:
13300         false
13301 % @kbd{make -k; echo exit status: $?}    # GNU make
13302 false
13303 make: *** [all] Error 1
13304 exit status: 2
13305 % @kbd{pmake -k; echo exit status: $?}   # BSD make
13306 false
13307 *** Error code 1 (continuing)
13308 exit status: 0
13309 @end example
13311 @item @code{VPATH}
13312 @cindex @code{VPATH}
13314 There is no @code{VPATH} support specified in Posix.  Many
13315 @command{make}s have a form of @code{VPATH} support, but its
13316 implementation is not consistent amongst @command{make}s.
13318 Maybe the best suggestion to give to people who need the @code{VPATH}
13319 feature is to choose a @command{make} implementation and stick to it.
13320 Since the resulting @file{Makefile}s are not portable anyway, better
13321 choose a portable @command{make} (hint, hint).
13323 Here are a couple of known issues with some @code{VPATH}
13324 implementations.
13326 @table @asis
13328 @item @code{VPATH} and double-colon rules
13329 @cindex @code{VPATH} and double-colon rules
13330 @cindex double-colon rules and @code{VPATH}
13332 Any assignment to @code{VPATH} causes Sun @command{make} to only execute
13333 the first set of double-colon rules.  (This comment has been here since
13334 1994 and the context has been lost.  It's probably about SunOS 4.  If
13335 you can reproduce this, please send us a test case for illustration.)
13337 @item @code{$<} not supported in explicit rules
13338 @cindex explicit rules, @code{$<}, and @code{VPATH}
13339 @cindex @code{$<}, explicit rules, and @code{VPATH}
13340 @cindex @code{VPATH}, explicit rules, and @code{$<}
13342 As said elsewhere, using @code{$<} in explicit rules is not portable.
13343 The prerequisite file must be named explicitly in the rule.  If you want
13344 to find the prerequisite via a @code{VPATH} search, you have to code the
13345 whole thing manually.  For instance, using the following pattern:
13347 @example
13348 VPATH = ../pkg/src
13349 f.c: if.c
13350         cp `test -f if.c || echo $(VPATH)/`if.c f.c
13351 @end example
13353 @item Automatic rule rewriting
13354 @cindex @code{VPATH} and automatic rule rewriting
13355 @cindex automatic rule rewriting and @code{VPATH}
13357 Some @command{make} implementations, such as SunOS 4 @command{make} or
13358 OSF1/Tru64 @command{make}, will search prerequisites in @code{VPATH} and
13359 rewrite all their occurrences in the rule appropriately.
13361 For instance
13363 @example
13364 VPATH = ../pkg/src
13365 f.c: if.c
13366         cp if.c f.c
13367 @end example
13369 @noindent
13370 would execute @code{cp ../pkg/src/if.c f.c} if @file{if.c} was
13371 found in @file{../pkg/src}.  That sounds great.
13373 However, for the sake of other @command{make} implementations, we can't
13374 rely on this, and we have to search @code{VPATH} manually:
13376 @smallexample
13377 VPATH = ../pkg/src
13378 f.c: if.c
13379         cp `test -f if.c || echo $(VPATH)/`if.c f.c
13380 @end smallexample
13382 @noindent
13383 However the "prerequisite rewriting" still applies here.  So if
13384 @file{if.c} is in @file{../pkg/src}, SunOS 4 @command{make} and OSF1/Tru64
13385 @command{make} will execute
13387 @smallexample
13388 @code{cp `test -f ../pkg/src/if.c || echo ../pkg/src/`if.c f.c}
13389 @end smallexample
13391 @noindent
13392 which reduces to
13394 @example
13395 cp if.c f.c
13396 @end example
13398 @noindent
13399 and thus fails.  Oops.
13401 One workaround is to make sure that @file{if.c} never appears as a plain word
13402 in the rule.  For instance these three rules would be safe.
13404 @smallexample
13405 VPATH = ../pkg/src
13406 f.c: if.c
13407         cp `test -f ./if.c || echo $(VPATH)/`if.c f.c
13408 g.c: ig.c
13409         cp `test -f 'ig.c' || echo $(VPATH)/`ig.c g.c
13410 h.c: ih.c
13411         cp `test -f "ih.c" || echo $(VPATH)/`ih.c h.c
13412 @end smallexample
13414 Things get worse when your prerequisites are in a macro.
13416 @example
13417 VPATH = ../pkg/src
13418 HEADERS = f.h g.h h.h
13419 install-HEADERS: $(HEADERS)
13420         for i in $(HEADERS); do \
13421           $(INSTALL) -m 644 \
13422             `test -f $$i || echo $(VPATH)/`$$i \
13423             $(DESTDIR)$(includedir)/$$i; \
13424         done
13425 @end example
13427 The above @code{install-HEADERS} rule is not SunOS-4-proof because @code{for
13428 i in $(HEADERS);} will be expanded as @code{for i in f.h g.h h.h;}
13429 where @code{f.h} and @code{g.h} are plain words and are hence
13430 subject to @code{VPATH} adjustments.
13432 If the three files are in @file{../pkg/src}, the rule is run as:
13434 @example
13435 for i in ../pkg/src/f.h ../pkg/src/g.h h.h; do \
13436   install -m 644 \
13437      `test -f $i || echo ../pkg/src/`$i \
13438      /usr/local/include/$i; \
13439 done
13440 @end example
13442 where the two first @command{install} calls will fail.  For instance,
13443 consider the @code{f.h} installation:
13445 @example
13446 install -m 644 \
13447   `test -f ../pkg/src/f.h || \
13448     echo ../pkg/src/ \
13449   `../pkg/src/f.h \
13450   /usr/local/include/../pkg/src/f.h;
13451 @end example
13452 @noindent
13453 It reduces to:
13455 @example
13456 install -m 644 \
13457   ../pkg/src/f.h \
13458   /usr/local/include/../pkg/src/f.h;
13459 @end example
13461 Note that the manual @code{VPATH} search did not cause any problems here;
13462 however this command installs @file{f.h} in an incorrect directory.
13464 Trying to quote @code{$(HEADERS)} in some way, as we did for
13465 @code{foo.c} a few @file{Makefile}s ago, does not help:
13467 @example
13468 install-HEADERS: $(HEADERS)
13469         headers='$(HEADERS)'; \
13470         for i in $$headers; do \
13471           $(INSTALL) -m 644 \
13472             `test -f $$i || echo $(VPATH)/`$$i \
13473             $(DESTDIR)$(includedir)/$$i; \
13474         done
13475 @end example
13477 Now, @code{headers='$(HEADERS)'} macroexpands to:
13479 @example
13480 headers='f.h g.h h.h'
13481 @end example
13483 @noindent
13484 but @code{g.h} is still a plain word.  (As an aside, the idiom
13485 @code{headers='$(HEADERS)'; for i in $$headers;} is a good
13486 idea if @code{$(HEADERS)} can be empty, because some shells diagnose a
13487 syntax error on @code{for i in;}.)
13489 One workaround is to strip this unwanted @file{../pkg/src/} prefix manually:
13490 @example
13491 VPATH = ../pkg/src
13492 HEADERS = f.h g.h h.h
13493 install-HEADERS: $(HEADERS)
13494         headers='$(HEADERS)'; \
13495         for i in $$headers; do \
13496           i=`expr "$$i" : '$(VPATH)/\(.*\)'`;
13497           $(INSTALL) -m 644 \
13498             `test -f $$i || echo $(VPATH)/`$$i \
13499             $(DESTDIR)$(includedir)/$$i; \
13500         done
13501 @end example
13503 Automake does something similar.  However the above hack works only if
13504 the files listed in @code{HEADERS} are in the current directory or a
13505 subdirectory; they should not be in an enclosing directory.  If we had
13506 @code{HEADERS = ../f.h}, the above fragment would fail in a VPATH
13507 build with OSF1/Tru64 @command{make}.  The reason is that not only does
13508 OSF1/Tru64 @command{make} rewrite dependencies, but it also simplifies
13509 them.  Hence @code{../f.h} will become @code{../pkg/f.h} instead of
13510 @code{../pkg/src/../f.h}.  This obviously defeats any attempt to strip
13511 a leading @file{../pkg/src/} component.
13513 The following example makes the behavior of OSF1/Tru64 @command{make}
13514 more apparent.
13515 @example
13516 % cat Makefile
13517 VPATH = sub
13518 all: ../foo
13519         echo ../foo
13520 % ls
13521 Makefile foo
13522 % make
13523 echo foo
13525 @end example
13526 @noindent
13527 Dependency @file{../foo} was found in @file{sub/../foo}, but OSF1/Tru64
13528 @command{make} simplified it as @file{foo}.  (Note that the @file{sub/}
13529 directory does not even exist, this just means that the simplification
13530 occurred before the file was checked for.)
13532 For the record here is how SunOS 4 @command{make} behaves on this
13533 very same example.
13534 @smallexample
13535 % make
13536 make: Fatal error: Don't know how to make target `../foo'
13537 % mkdir sub
13538 % make
13539 echo sub/../foo
13540 sub/../foo
13541 @end smallexample
13544 @item OSF/Tru64 @command{make} creates prerequisite directories magically
13545 @cindex @code{VPATH} and prerequisite directories
13546 @cindex prerequisite directories and @code{VPATH}
13548 When a prerequisite is a sub-directory of @code{VPATH}, Tru64
13549 @command{make} will create it in the current directory.
13551 @example
13552 % @kbd{mkdir -p foo/bar build}
13553 % @kbd{cd build}
13554 % @kbd{cat >Makefile <<END
13555 VPATH = ..
13556 all: foo/bar
13557 END}
13558 % @kbd{make}
13559 mkdir foo
13560 mkdir foo/bar
13561 @end example
13563 This can yield unexpected results if a rule uses a manual @code{VPATH}
13564 search as presented before.
13566 @example
13567 VPATH = ..
13568 all : foo/bar
13569         command `test -d foo/bar || echo ../`foo/bar
13570 @end example
13572 The above @command{command} will be run on the empty @file{foo/bar}
13573 directory that was created in the current directory.
13575 @item target lookup
13576 @cindex @code{VPATH}, resolving target pathnames
13578 @acronym{GNU} @command{make} uses a rather complex algorithm to decide when it
13579 should use files found via a @code{VPATH} search.  @xref{Search
13580 Algorithm, , How Directory Searches are Performed, make, The @acronym{GNU} Make
13581 Manual}.
13583 If a target needs to be rebuilt, @acronym{GNU} @command{make} discards the
13584 file name found during the @code{VPATH} search for this target, and
13585 builds the file locally using the file name given in the @file{Makefile}.
13586 If a target does not need to be rebuilt, @acronym{GNU} @command{make} uses the
13587 file name found during the @code{VPATH} search.
13589 Other @command{make} implementations, like Net@acronym{BSD} @command{make}, are
13590 easier to describe: the file name found during the @code{VPATH} search
13591 will be used whether the target needs to be rebuilt or not.  Therefore
13592 new files are created locally, but existing files are updated at their
13593 @code{VPATH} location.
13595 Open@acronym{BSD} and Free@acronym{BSD} @command{make}s, however, will
13596 never perform a
13597 @code{VPATH} search for a dependency which has an explicit rule.
13598 This is extremely annoying.
13600 When attempting a @code{VPATH} build for an autoconfiscated package
13601 (e.g., @code{mkdir build && cd build && ../configure}), this means the
13602 @acronym{GNU}
13603 @command{make} will build everything locally in the @file{build}
13604 directory, while @acronym{BSD} @command{make} will build new files locally and
13605 update existing files in the source directory.
13607 @example
13608 % @kbd{cat Makefile}
13609 VPATH = ..
13610 all: foo.x bar.x
13611 foo.x bar.x: newer.x
13612         @@echo Building $@@
13613 % @kbd{touch ../bar.x}
13614 % @kbd{touch ../newer.x}
13615 % @kbd{make}        # GNU make
13616 Building foo.x
13617 Building bar.x
13618 % @kbd{pmake}       # NetBSD make
13619 Building foo.x
13620 Building ../bar.x
13621 % @kbd{fmake}       # FreeBSD make, OpenBSD make
13622 Building foo.x
13623 Building bar.x
13624 % @kbd{tmake}       # Tru64 make
13625 Building foo.x
13626 Building bar.x
13627 % @kbd{touch ../bar.x}
13628 % @kbd{make}        # GNU make
13629 Building foo.x
13630 % @kbd{pmake}       # NetBSD make
13631 Building foo.x
13632 % @kbd{fmake}       # FreeBSD make, OpenBSD make
13633 Building foo.x
13634 Building bar.x
13635 % @kbd{tmake}       # Tru64 make
13636 Building foo.x
13637 Building bar.x
13638 @end example
13640 Note how Net@acronym{BSD} @command{make} updates @file{../bar.x} in its
13641 VPATH location, and how Free@acronym{BSD}, Open@acronym{BSD}, and Tru64
13642 @command{make} always
13643 update @file{bar.x}, even when @file{../bar.x} is up to date.
13645 Another point worth mentioning is that once @acronym{GNU} @command{make} has
13646 decided to ignore a @code{VPATH} file name (e.g., it ignored
13647 @file{../bar.x} in the above example) it will continue to ignore it when
13648 the target occurs as a prerequisite of another rule.
13650 The following example shows that @acronym{GNU} @command{make} does not look up
13651 @file{bar.x} in @code{VPATH} before performing the @code{.x.y} rule,
13652 because it ignored the @code{VPATH} result of @file{bar.x} while running
13653 the @code{bar.x: newer.x} rule.
13655 @example
13656 % @kbd{cat Makefile}
13657 VPATH = ..
13658 all: bar.y
13659 bar.x: newer.x
13660         @@echo Building $@@
13661 .SUFFIXES: .x .y
13662 .x.y:
13663         cp $< $@@
13664 % @kbd{touch ../bar.x}
13665 % @kbd{touch ../newer.x}
13666 % @kbd{make}        # GNU make
13667 Building bar.x
13668 cp bar.x bar.y
13669 cp: cannot stat `bar.x': No such file or directory
13670 make: *** [bar.y] Error 1
13671 % @kbd{pmake}       # NetBSD make
13672 Building ../bar.x
13673 cp ../bar.x bar.y
13674 % @kbd{rm bar.y}
13675 % @kbd{fmake}       # FreeBSD make, OpenBSD make
13676 echo Building bar.x
13677 cp bar.x bar.y
13678 cp: cannot stat `bar.x': No such file or directory
13679 *** Error code 1
13680 % @kbd{tmake}       # Tru64 make
13681 Building bar.x
13682 cp: bar.x: No such file or directory
13683 *** Exit 1
13684 @end example
13686 Note that if you drop away the command from the @code{bar.x: newer.x}
13687 rule, @acronym{GNU} @command{make} will magically start to work: it
13688 knows that @code{bar.x} hasn't been updated, therefore it doesn't
13689 discard the result from @code{VPATH} (@file{../bar.x}) in succeeding
13690 uses.  Tru64 will also work, but Free@acronym{BSD} and Open@acronym{BSD}
13691 still don't.
13693 @example
13694 % @kbd{cat Makefile}
13695 VPATH = ..
13696 all: bar.y
13697 bar.x: newer.x
13698 .SUFFIXES: .x .y
13699 .x.y:
13700         cp $< $@@
13701 % @kbd{touch ../bar.x}
13702 % @kbd{touch ../newer.x}
13703 % @kbd{make}        # GNU make
13704 cp ../bar.x bar.y
13705 % @kbd{rm bar.y}
13706 % @kbd{pmake}       # NetBSD make
13707 cp ../bar.x bar.y
13708 % @kbd{rm bar.y}
13709 % @kbd{fmake}       # FreeBSD make, OpenBSD make
13710 cp bar.x bar.y
13711 cp: cannot stat `bar.x': No such file or directory
13712 *** Error code 1
13713 % @kbd{tmake}       # Tru64 make
13714 cp ../bar.x bar.y
13715 @end example
13717 It seems the sole solution that would please every @command{make}
13718 implementation is to never rely on @code{VPATH} searches for targets.
13719 In other words, @code{VPATH} should be reserved to unbuilt sources.
13721 @end table
13722 @c end item about VPATH
13724 @item Single Suffix Rules and Separated Dependencies
13725 @cindex Single Suffix Inference Rule
13726 @cindex Rule, Single Suffix Inference
13727 A @dfn{Single Suffix Rule} is basically a usual suffix (inference) rule
13728 (@samp{.from.to:}), but which @emph{destination} suffix is empty
13729 (@samp{.from:}).
13731 @cindex Separated Dependencies
13732 @dfn{Separated dependencies} simply refers to listing the prerequisite
13733 of a target, without defining a rule.  Usually one can list on the one
13734 hand side, the rules, and on the other hand side, the dependencies.
13736 Solaris @command{make} does not support separated dependencies for
13737 targets defined by single suffix rules:
13739 @example
13740 $ @kbd{cat Makefile}
13741 .SUFFIXES: .in
13742 foo: foo.in
13743 .in:
13744         cp $< $@
13745 $ @kbd{touch foo.in}
13746 $ @kbd{make}
13747 $ @kbd{ls}
13748 Makefile  foo.in
13749 @end example
13751 @noindent
13752 while @acronym{GNU} Make does:
13754 @example
13755 $ @kbd{gmake}
13756 cp foo.in foo
13757 $ @kbd{ls}
13758 Makefile  foo       foo.in
13759 @end example
13761 Note it works without the @samp{foo: foo.in} dependency.
13763 @example
13764 $ @kbd{cat Makefile}
13765 .SUFFIXES: .in
13766 .in:
13767         cp $< $@
13768 $ @kbd{make foo}
13769 cp foo.in foo
13770 @end example
13772 @noindent
13773 and it works with double suffix inference rules:
13775 @example
13776 $ @kbd{cat Makefile}
13777 foo.out: foo.in
13778 .SUFFIXES: .in .out
13779 .in.out:
13780         cp $< $@
13781 $ @kbd{make}
13782 cp foo.in foo.out
13783 @end example
13785 As a result, in such a case, you have to write target rules.
13787 @item Timestamp Resolution
13788 @cindex timestamp resolution
13789 Traditionally, file timestamps had 1-second resolution, and
13790 @command{make} used those timestamps to determine whether one file was
13791 newer than the other.  However, many modern file systems have
13792 timestamps with 1-nanosecond resolution.  Some @command{make}
13793 implementations look at the entire timestamp; others ignore the
13794 fractional part, which can lead to incorrect results.  Normally this
13795 is not a problem, but in some extreme cases you may need to use tricks
13796 like @samp{sleep 1} to work around timestamp truncation bugs.
13798 Commands like @samp{cp -p} and @samp{touch -r} typically do not copy
13799 file timestamps to their full resolutions (@pxref{Limitations of Usual
13800 Tools}).  Hence you should be wary of rules like this:
13802 @example
13803 dest: src
13804         cp -p src dest
13805 @end example
13807 as @file{dest} will often appear to be older than @file{src} after the
13808 timestamp is truncated, and this can cause @command{make} to do
13809 needless rework the next time it is invoked.  To work around this
13810 problem, you can use a timestamp file, e.g.:
13812 @example
13813 dest-stamp: src
13814         cp -p src dest
13815         date >dest-stamp
13816 @end example
13818 @end table
13823 @c ================================================== Manual Configuration
13825 @node Manual Configuration
13826 @chapter Manual Configuration
13828 A few kinds of features can't be guessed automatically by running test
13829 programs.  For example, the details of the object-file format, or
13830 special options that need to be passed to the compiler or linker.  You
13831 can check for such features using ad-hoc means, such as having
13832 @command{configure} check the output of the @code{uname} program, or
13833 looking for libraries that are unique to particular systems.  However,
13834 Autoconf provides a uniform method for handling unguessable features.
13836 @menu
13837 * Specifying Names::            Specifying the system type
13838 * Canonicalizing::              Getting the canonical system type
13839 * Using System Type::           What to do with the system type
13840 @end menu
13842 @node Specifying Names
13843 @section Specifying the System Type
13844 @cindex System type
13846 Like other @acronym{GNU} @command{configure} scripts, Autoconf-generated
13847 @command{configure} scripts can make decisions based on a canonical name
13848 for the system type, which has the form:
13849 @samp{@var{cpu}-@var{vendor}-@var{os}}, where @var{os} can be
13850 @samp{@var{system}} or @samp{@var{kernel}-@var{system}}
13852 @command{configure} can usually guess the canonical name for the type of
13853 system it's running on.  To do so it runs a script called
13854 @command{config.guess}, which infers the name using the @code{uname}
13855 command or symbols predefined by the C preprocessor.
13857 Alternately, the user can specify the system type with command line
13858 arguments to @command{configure}.  Doing so is necessary when
13859 cross-compiling.  In the most complex case of cross-compiling, three
13860 system types are involved.  The options to specify them are:
13862 @table @option
13863 @item --build=@var{build-type}
13864 the type of system on which the package is being configured and
13865 compiled.  It defaults to the result of running @command{config.guess}.
13867 @item --host=@var{host-type}
13868 the type of system on which the package will run.  By default it is the
13869 same as the build machine.  Specifying it enables the cross-compilation
13870 mode.
13872 @item --target=@var{target-type}
13873 the type of system for which any compiler tools in the package will
13874 produce code (rarely needed).  By default, it is the same as host.
13875 @end table
13877 If you mean to override the result of @command{config.guess}, use
13878 @option{--build}, not @option{--host}, since the latter enables
13879 cross-compilation.  For historical reasons, passing @option{--host} also
13880 changes the build type.  Therefore, whenever you specify @code{--host},
13881 be sure to specify @code{--build} too; this will be fixed in the
13882 future.  So, to enter cross-compilation mode, use a command like this
13884 @example
13885 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
13886 @end example
13888 @noindent
13889 Note that if you do not specify @option{--host}, @command{configure} will
13890 fail if it can't run the code generated by the specified compiler.  For
13891 example, configuring as follows will fail:
13893 @example
13894 ./configure CC=m68k-coff-gcc
13895 @end example
13897 In the future, when cross-compiling Autoconf will @emph{not}
13898 accept tools (compilers, linkers, assemblers) whose name is not
13899 prefixed with the host type.  The only case when this may be
13900 useful is when you really are not cross-compiling, but only
13901 building for a least-common-denominator architecture: an example
13902 is building for @code{i386-pc-linux-gnu} while running on an
13903 @code{i686-pc-linux-gnu} architecture.  In this case, some particular
13904 pairs might be similar enough to let you get away with the system
13905 compilers, but in general the compiler might make bogus assumptions
13906 on the host: if you know what you are doing, please create symbolic
13907 links from the host compiler to the build compiler.
13909 @cindex @command{config.sub}
13910 @command{configure} recognizes short aliases for many system types; for
13911 example, @samp{decstation} can be used instead of
13912 @samp{mips-dec-ultrix4.2}.  @command{configure} runs a script called
13913 @command{config.sub} to canonicalize system type aliases.
13915 This section deliberately omits the description of the obsolete
13916 interface; see @ref{Hosts and Cross-Compilation}.
13919 @node Canonicalizing
13920 @section Getting the Canonical System Type
13921 @cindex System type
13922 @cindex Canonical system type
13924 The following macros make the system type available to @command{configure}
13925 scripts.
13927 @ovindex build_alias
13928 @ovindex host_alias
13929 @ovindex target_alias
13931 The variables @samp{build_alias}, @samp{host_alias}, and
13932 @samp{target_alias} are always exactly the arguments of @option{--build},
13933 @option{--host}, and @option{--target}; in particular, they are left empty
13934 if the user did not use them, even if the corresponding
13935 @code{AC_CANONICAL} macro was run.  Any configure script may use these
13936 variables anywhere.  These are the variables that should be used when in
13937 interaction with the user.
13939 If you need to recognize some special environments based on their system
13940 type, run the following macros to get canonical system names.  These
13941 variables are not set before the macro call.
13943 If you use these macros, you must distribute @command{config.guess} and
13944 @command{config.sub} along with your source code.  @xref{Output}, for
13945 information about the @code{AC_CONFIG_AUX_DIR} macro which you can use
13946 to control in which directory @command{configure} looks for those scripts.
13949 @defmac AC_CANONICAL_BUILD
13950 @acindex{CANONICAL_BUILD}
13951 @ovindex build
13952 @ovindex build_cpu
13953 @ovindex build_vendor
13954 @ovindex build_os
13955 Compute the canonical build-system type variable, @code{build}, and its
13956 three individual parts @code{build_cpu}, @code{build_vendor}, and
13957 @code{build_os}.
13959 If @option{--build} was specified, then @code{build} is the
13960 canonicalization of @code{build_alias} by @command{config.sub},
13961 otherwise it is determined by the shell script @command{config.guess}.
13962 @end defmac
13964 @defmac AC_CANONICAL_HOST
13965 @acindex{CANONICAL_HOST}
13966 @ovindex host
13967 @ovindex host_cpu
13968 @ovindex host_vendor
13969 @ovindex host_os
13970 Compute the canonical host-system type variable, @code{host}, and its
13971 three individual parts @code{host_cpu}, @code{host_vendor}, and
13972 @code{host_os}.
13974 If @option{--host} was specified, then @code{host} is the
13975 canonicalization of @code{host_alias} by @command{config.sub},
13976 otherwise it defaults to @code{build}.
13977 @end defmac
13979 @defmac AC_CANONICAL_TARGET
13980 @acindex{CANONICAL_TARGET}
13981 @ovindex target
13982 @ovindex target_cpu
13983 @ovindex target_vendor
13984 @ovindex target_os
13985 Compute the canonical target-system type variable, @code{target}, and its
13986 three individual parts @code{target_cpu}, @code{target_vendor}, and
13987 @code{target_os}.
13989 If @option{--target} was specified, then @code{target} is the
13990 canonicalization of @code{target_alias} by @command{config.sub},
13991 otherwise it defaults to @code{host}.
13992 @end defmac
13994 Note that there can be artifacts due to the backward compatibility
13995 code.  See @xref{Hosts and Cross-Compilation}, for more.
13997 @node Using System Type
13998 @section Using the System Type
14000 In @file{configure.ac} the system type is generally used by one or more
14001 @code{case} statements to select system-specifics.  Shell wildcards can
14002 be used to match a group of system types.
14004 For example, an extra assembler code object file could be chosen, giving
14005 access to a CPU cycle counter register.  @code{$(CYCLE_OBJ)} in the
14006 following would be used in a @file{Makefile} to add the object to a
14007 program or library.
14009 @example
14010 case $host in
14011   alpha*-*-*) CYCLE_OBJ=rpcc.o ;;
14012   i?86-*-*)   CYCLE_OBJ=rdtsc.o ;;
14013   *)          CYCLE_OBJ= ;;
14014 esac
14015 AC_SUBST([CYCLE_OBJ])
14016 @end example
14018 @code{AC_CONFIG_LINKS} (@pxref{Configuration Links}) is another good way
14019 to select variant source files, for example optimized code for some
14020 CPUs.  The configured CPU type doesn't always indicate exact CPU types,
14021 so some run-time capability checks may be necessary too.
14023 @example
14024 case $host in
14025   alpha*-*-*)   AC_CONFIG_LINKS([dither.c:alpha/dither.c]) ;;
14026   powerpc*-*-*) AC_CONFIG_LINKS([dither.c:powerpc/dither.c]) ;;
14027   *-*-*)        AC_CONFIG_LINKS([dither.c:generic/dither.c]) ;;
14028 esac
14029 @end example
14031 The host system type can also be used to find cross-compilation tools
14032 with @code{AC_CHECK_TOOL} (@pxref{Generic Programs}).
14034 The above examples all show @samp{$host}, since this is where the code
14035 is going to run.  Only rarely is it necessary to test @samp{$build}
14036 (which is where the build is being done).
14038 Whenever you're tempted to use @samp{$host} it's worth considering
14039 whether some sort of probe would be better.  New system types come along
14040 periodically or previously missing features are added.  Well-written
14041 probes can adapt themselves to such things, but hard-coded lists of
14042 names won't.  Here are some guidelines,
14044 @itemize @bullet
14045 @item
14046 Availability of libraries and library functions should always be checked
14047 by probing.
14048 @item
14049 Variant behavior of system calls is best identified with runtime tests
14050 if possible, but bug workarounds or obscure difficulties might have to
14051 be driven from @samp{$host}.
14052 @item
14053 Assembler code is inevitably highly CPU-specific and is best selected
14054 according to @samp{$host_cpu}.
14055 @item
14056 Assembler variations like underscore prefix on globals or ELF versus
14057 COFF type directives are however best determined by probing, perhaps
14058 even examining the compiler output.
14059 @end itemize
14061 @samp{$target} is for use by a package creating a compiler or similar.
14062 For ordinary packages it's meaningless and should not be used.  It
14063 indicates what the created compiler should generate code for, if it can
14064 cross-compile.  @samp{$target} generally selects various hard-coded CPU
14065 and system conventions, since usually the compiler or tools under
14066 construction will themselves determine how the target will work.
14069 @c ===================================================== Site Configuration.
14071 @node Site Configuration
14072 @chapter Site Configuration
14074 @command{configure} scripts support several kinds of local configuration
14075 decisions.  There are ways for users to specify where external software
14076 packages are, include or exclude optional features, install programs
14077 under modified names, and set default values for @command{configure}
14078 options.
14080 @menu
14081 * External Software::           Working with other optional software
14082 * Package Options::             Selecting optional features
14083 * Pretty Help Strings::         Formatting help string
14084 * Site Details::                Configuring site details
14085 * Transforming Names::          Changing program names when installing
14086 * Site Defaults::               Giving @command{configure} local defaults
14087 @end menu
14089 @node External Software
14090 @section Working With External Software
14091 @cindex External software
14093 Some packages require, or can optionally use, other software packages
14094 that are already installed.  The user can give @command{configure}
14095 command line options to specify which such external software to use.
14096 The options have one of these forms:
14098 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
14099 @c awful.
14100 @example
14101 --with-@var{package}[=@var{arg}]
14102 --without-@var{package}
14103 @end example
14105 For example, @option{--with-gnu-ld} means work with the @acronym{GNU} linker
14106 instead of some other linker.  @option{--with-x} means work with The X
14107 Window System.
14109 The user can give an argument by following the package name with
14110 @samp{=} and the argument.  Giving an argument of @samp{no} is for
14111 packages that are used by default; it says to @emph{not} use the
14112 package.  An argument that is neither @samp{yes} nor @samp{no} could
14113 include a name or number of a version of the other package, to specify
14114 more precisely which other package this program is supposed to work
14115 with.  If no argument is given, it defaults to @samp{yes}.
14116 @option{--without-@var{package}} is equivalent to
14117 @option{--with-@var{package}=no}.
14119 @command{configure} scripts do not complain about
14120 @option{--with-@var{package}} options that they do not support.  This
14121 behavior permits configuring a source tree containing multiple packages
14122 with a top-level @command{configure} script when the packages support
14123 different options, without spurious error messages about options that
14124 some of the packages support.  An unfortunate side effect is that option
14125 spelling errors are not diagnosed.  No better approach to this problem
14126 has been suggested so far.
14128 For each external software package that may be used, @file{configure.ac}
14129 should call @code{AC_ARG_WITH} to detect whether the @command{configure}
14130 user asked to use it.  Whether each package is used or not by default,
14131 and which arguments are valid, is up to you.
14133 @defmac AC_ARG_WITH (@var{package}, @var{help-string}, @ovar{action-if-given}, @ovar{action-if-not-given})
14134 @acindex{ARG_WITH}
14135 If the user gave @command{configure} the option @option{--with-@var{package}}
14136 or @option{--without-@var{package}}, run shell commands
14137 @var{action-if-given}.  If neither option was given, run shell commands
14138 @var{action-if-not-given}.  The name @var{package} indicates another
14139 software package that this program should work with.  It should consist
14140 only of alphanumeric characters and dashes.
14142 The option's argument is available to the shell commands
14143 @var{action-if-given} in the shell variable @code{withval}, which is
14144 actually just the value of the shell variable @code{with_@var{package}},
14145 with any @option{-} characters changed into @samp{_}.  You may use that
14146 variable instead, if you wish.
14148 The argument @var{help-string} is a description of the option that
14149 looks like this:
14150 @example
14151   --with-readline         support fancy command line editing
14152 @end example
14154 @noindent
14155 @var{help-string} may be more than one line long, if more detail is
14156 needed.  Just make sure the columns line up in @samp{configure
14157 --help}.  Avoid tabs in the help string.  You'll need to enclose the
14158 help string in @samp{[} and @samp{]} in order to produce the leading
14159 blanks.
14161 You should format your @var{help-string} with the macro
14162 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
14164 The following example shows how to use the @code{AC_ARG_WITH} macro in
14165 a common situation.  You want to let the user decide whether to enable
14166 support for an external library (e.g., the readline library); if the user
14167 specified neither @option{--with-readline} nor @option{--without-readline},
14168 you want to enable support for readline only if the library is available
14169 on the system.
14171 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
14172 @example
14173 AC_ARG_WITH([readline],
14174   [AS_HELP_STRING([--with-readline],
14175     [support fancy command line editing @@<:@@default=check@@:>@@])],
14176   [],
14177   [with_readline=check])
14179 LIBREADLINE=
14180 AS_IF([test "x$with_readline" != xno],
14181   [AC_CHECK_LIB([readline], [main],
14182     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
14183      AC_DEFINE([HAVE_LIBREADLINE], [1],
14184                [Define if you have libreadline])
14185     ],
14186     [if test "x$with_readline" != xcheck; then
14187        AC_MSG_FAILURE(
14188          [--with-readline was given, but test for readline failed])
14189      fi
14190     ], -lncurses)])
14191 @end example
14193 The next example shows how to use @code{AC_ARG_WITH} to give the user the
14194 possibility to enable support for the readline library, in case it is still
14195 experimental and not well tested, and is therefore disabled by default.
14197 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
14198 @example
14199 AC_ARG_WITH([readline],
14200   [AS_HELP_STRING([--with-readline],
14201     [enable experimental support for readline])],
14202   [],
14203   [with_readline=no])
14205 LIBREADLINE=
14206 AS_IF([test "x$with_readline" != xno],
14207   [AC_CHECK_LIB([readline], [main],
14208     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
14209      AC_DEFINE([HAVE_LIBREADLINE], [1],
14210                [Define if you have libreadline])
14211     ],
14212     [AC_MSG_FAILURE(
14213        [--with-readline was given, but test for readline failed])],
14214     [-lncurses])])
14215 @end example
14217 The last example shows how to use @code{AC_ARG_WITH} to give the user the
14218 possibility to disable support for the readline library, given that it is
14219 an important feature and that it should be enabled by default.
14221 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
14222 @example
14223 AC_ARG_WITH([readline],
14224   [AS_HELP_STRING([--without-readline],
14225     [disable support for readline])],
14226   [],
14227   [with_readline=yes])
14229 LIBREADLINE=
14230 AS_IF([test "x$with_readline" != xno],
14231   [AC_CHECK_LIB([readline], [main],
14232     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
14233      AC_DEFINE([HAVE_LIBREADLINE], [1],
14234                [Define if you have libreadline])
14235     ],
14236     [AC_MSG_FAILURE(
14237        [readline test failed (--without-readline to disable)])],
14238     [-lncurses])])
14239 @end example
14241 These three examples can be easily adapted to the case where
14242 @code{AC_ARG_ENABLE} should be preferred to @code{AC_ARG_WITH} (see
14243 @ref{Package Options}).
14244 @end defmac
14246 @defmac AC_WITH (@var{package}, @var{action-if-given}, @ovar{action-if-not-given})
14247 @acindex{WITH}
14248 This is an obsolete version of @code{AC_ARG_WITH} that does not
14249 support providing a help string.
14250 @end defmac
14252 @node Package Options
14253 @section Choosing Package Options
14254 @cindex Package options
14255 @cindex Options, package
14257 If a software package has optional compile-time features, the user can
14258 give @command{configure} command line options to specify whether to
14259 compile them.  The options have one of these forms:
14261 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
14262 @c awful.
14263 @example
14264 --enable-@var{feature}[=@var{arg}]
14265 --disable-@var{feature}
14266 @end example
14268 These options allow users to choose which optional features to build and
14269 install.  @option{--enable-@var{feature}} options should never make a
14270 feature behave differently or cause one feature to replace another.
14271 They should only cause parts of the program to be built rather than left
14272 out.
14274 The user can give an argument by following the feature name with
14275 @samp{=} and the argument.  Giving an argument of @samp{no} requests
14276 that the feature @emph{not} be made available.  A feature with an
14277 argument looks like @option{--enable-debug=stabs}.  If no argument is
14278 given, it defaults to @samp{yes}.  @option{--disable-@var{feature}} is
14279 equivalent to @option{--enable-@var{feature}=no}.
14281 @command{configure} scripts do not complain about
14282 @option{--enable-@var{feature}} options that they do not support.
14283 This behavior permits configuring a source tree containing multiple
14284 packages with a top-level @command{configure} script when the packages
14285 support different options, without spurious error messages about options
14286 that some of the packages support.
14287 An unfortunate side effect is that option spelling errors are not diagnosed.
14288 No better approach to this problem has been suggested so far.
14290 For each optional feature, @file{configure.ac} should call
14291 @code{AC_ARG_ENABLE} to detect whether the @command{configure} user asked
14292 to include it.  Whether each feature is included or not by default, and
14293 which arguments are valid, is up to you.
14295 @defmac AC_ARG_ENABLE (@var{feature}, @var{help-string}, @ovar{action-if-given}, @ovar{action-if-not-given})
14296 @acindex{ARG_ENABLE}
14297 If the user gave @command{configure} the option
14298 @option{--enable-@var{feature}} or @option{--disable-@var{feature}}, run
14299 shell commands @var{action-if-given}.  If neither option was given, run
14300 shell commands @var{action-if-not-given}.  The name @var{feature}
14301 indicates an optional user-level facility.  It should consist only of
14302 alphanumeric characters and dashes.
14304 The option's argument is available to the shell commands
14305 @var{action-if-given} in the shell variable @code{enableval}, which is
14306 actually just the value of the shell variable
14307 @code{enable_@var{feature}}, with any @option{-} characters changed into
14308 @samp{_}.  You may use that variable instead, if you wish.  The
14309 @var{help-string} argument is like that of @code{AC_ARG_WITH}
14310 (@pxref{External Software}).
14312 You should format your @var{help-string} with the macro
14313 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
14315 See the examples suggested with the definition of @code{AC_ARG_WITH}
14316 (@pxref{External Software}) to get an idea of possible applications of
14317 @code{AC_ARG_ENABLE}.
14318 @end defmac
14320 @defmac AC_ENABLE (@var{feature}, @var{action-if-given}, @ovar{action-if-not-given})
14321 @acindex{ENABLE}
14322 This is an obsolete version of @code{AC_ARG_ENABLE} that does not
14323 support providing a help string.
14324 @end defmac
14327 @node Pretty Help Strings
14328 @section Making Your Help Strings Look Pretty
14329 @cindex Help strings
14331 Properly formatting the @samp{help strings} which are used in
14332 @code{AC_ARG_WITH} (@pxref{External Software}) and @code{AC_ARG_ENABLE}
14333 (@pxref{Package Options}) can be challenging.  Specifically, you want
14334 your own @samp{help strings} to line up in the appropriate columns of
14335 @samp{configure --help} just like the standard Autoconf @samp{help
14336 strings} do.  This is the purpose of the @code{AS_HELP_STRING} macro.
14338 @defmac AS_HELP_STRING (@var{left-hand-side}, @var{right-hand-side})
14339 @acindex{HELP_STRING}
14341 Expands into an help string that looks pretty when the user executes
14342 @samp{configure --help}.  It is typically used in @code{AC_ARG_WITH}
14343 (@pxref{External Software}) or @code{AC_ARG_ENABLE} (@pxref{Package
14344 Options}).  The following example will make this clearer.
14346 @example
14347 AC_ARG_WITH([foo],
14348   [AS_HELP_STRING([--with-foo],
14349      [use foo (default is no)])],
14350   [use_foo=$withval],
14351   [use_foo=no])
14352 @end example
14354 The second argument of @code{AS_HELP_STRING} is
14355 not a literal, and should not be double quoted.
14356 @xref{Autoconf Language}, for a more detailed explanation.
14357 Then the last few lines of @samp{configure --help} will appear like
14358 this:
14360 @example
14361 --enable and --with options recognized:
14362   --with-foo              use foo (default is no)
14363 @end example
14365 The @code{AS_HELP_STRING} macro is particularly helpful when the
14366 @var{left-hand-side} and/or @var{right-hand-side} are composed of macro
14367 arguments, as shown in the following example.
14369 @example
14370 AC_DEFUN([MY_ARG_WITH],
14371   [AC_ARG_WITH([$1],
14372      [AS_HELP_STRING([--with-$1], [use $1 (default is $2)])],
14373      [use_[]$1=$withval],
14374      [use_[]$1=$2])])
14375 @end example
14376 @end defmac
14379 @node Site Details
14380 @section Configuring Site Details
14381 @cindex Site details
14383 Some software packages require complex site-specific information.  Some
14384 examples are host names to use for certain services, company names, and
14385 email addresses to contact.  Since some configuration scripts generated
14386 by Metaconfig ask for such information interactively, people sometimes
14387 wonder how to get that information in Autoconf-generated configuration
14388 scripts, which aren't interactive.
14390 Such site configuration information should be put in a file that is
14391 edited @emph{only by users}, not by programs.  The location of the file
14392 can either be based on the @code{prefix} variable, or be a standard
14393 location such as the user's home directory.  It could even be specified
14394 by an environment variable.  The programs should examine that file at
14395 run time, rather than at compile time.  Run-time configuration is more
14396 convenient for users and makes the configuration process simpler than
14397 getting the information while configuring.  @xref{Directory Variables, ,
14398 Variables for Installation Directories, standards, @acronym{GNU} Coding
14399 Standards}, for more information on where to put data files.
14401 @node Transforming Names
14402 @section Transforming Program Names When Installing
14403 @cindex Transforming program names
14404 @cindex Program names, transforming
14406 Autoconf supports changing the names of programs when installing them.
14407 In order to use these transformations, @file{configure.ac} must call the
14408 macro @code{AC_ARG_PROGRAM}.
14410 @defmac AC_ARG_PROGRAM
14411 @acindex{ARG_PROGRAM}
14412 @ovindex program_transform_name
14413 Place in output variable @code{program_transform_name} a sequence of
14414 @code{sed} commands for changing the names of installed programs.
14416 If any of the options described below are given to @command{configure},
14417 program names are transformed accordingly.  Otherwise, if
14418 @code{AC_CANONICAL_TARGET} has been called and a @option{--target} value
14419 is given, the target type followed by a dash is used as a prefix.
14420 Otherwise, no program name transformation is done.
14421 @end defmac
14423 @menu
14424 * Transformation Options::      @command{configure} options to transform names
14425 * Transformation Examples::     Sample uses of transforming names
14426 * Transformation Rules::        @file{Makefile} uses of transforming names
14427 @end menu
14429 @node Transformation Options
14430 @subsection Transformation Options
14432 You can specify name transformations by giving @command{configure} these
14433 command line options:
14435 @table @option
14436 @item --program-prefix=@var{prefix}
14437 prepend @var{prefix} to the names;
14439 @item --program-suffix=@var{suffix}
14440 append @var{suffix} to the names;
14442 @item --program-transform-name=@var{expression}
14443 perform @code{sed} substitution @var{expression} on the names.
14444 @end table
14446 @node Transformation Examples
14447 @subsection Transformation Examples
14449 These transformations are useful with programs that can be part of a
14450 cross-compilation development environment.  For example, a
14451 cross-assembler running on a Sun 4 configured with
14452 @option{--target=i960-vxworks} is normally installed as
14453 @file{i960-vxworks-as}, rather than @file{as}, which could be confused
14454 with a native Sun 4 assembler.
14456 You can force a program name to begin with @file{g}, if you don't want
14457 @acronym{GNU} programs installed on your system to shadow other programs with
14458 the same name.  For example, if you configure @acronym{GNU} @code{diff} with
14459 @option{--program-prefix=g}, then when you run @samp{make install} it is
14460 installed as @file{/usr/local/bin/gdiff}.
14462 As a more sophisticated example, you could use
14464 @example
14465 --program-transform-name='s/^/g/; s/^gg/g/; s/^gless/less/'
14466 @end example
14467 @noindent
14469 to prepend @samp{g} to most of the program names in a source tree,
14470 excepting those like @code{gdb} that already have one and those like
14471 @code{less} and @code{lesskey} that aren't @acronym{GNU} programs.  (That is
14472 assuming that you have a source tree containing those programs that is
14473 set up to use this feature.)
14475 One way to install multiple versions of some programs simultaneously is
14476 to append a version number to the name of one or both.  For example, if
14477 you want to keep Autoconf version 1 around for awhile, you can configure
14478 Autoconf version 2 using @option{--program-suffix=2} to install the
14479 programs as @file{/usr/local/bin/autoconf2},
14480 @file{/usr/local/bin/autoheader2}, etc.  Nevertheless, pay attention
14481 that only the binaries are renamed, therefore you'd have problems with
14482 the library files which might overlap.
14484 @node Transformation Rules
14485 @subsection Transformation Rules
14487 Here is how to use the variable @code{program_transform_name} in a
14488 @file{Makefile.in}:
14490 @example
14491 PROGRAMS = cp ls rm
14492 transform = @@program_transform_name@@
14493 install:
14494         for p in $(PROGRAMS); do \
14495           $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | \
14496                                               sed '$(transform)'`; \
14497         done
14499 uninstall:
14500         for p in $(PROGRAMS); do \
14501           rm -f $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`; \
14502         done
14503 @end example
14505 It is guaranteed that @code{program_transform_name} is never empty, and
14506 that there are no useless separators.  Therefore you may safely embed
14507 @code{program_transform_name} within a sed program using @samp{;}:
14509 @example
14510 transform = @@program_transform_name@@
14511 transform_exe = s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/
14512 @end example
14514 Whether to do the transformations on documentation files (Texinfo or
14515 @code{man}) is a tricky question; there seems to be no perfect answer,
14516 due to the several reasons for name transforming.  Documentation is not
14517 usually particular to a specific architecture, and Texinfo files do not
14518 conflict with system documentation.  But they might conflict with
14519 earlier versions of the same files, and @code{man} pages sometimes do
14520 conflict with system documentation.  As a compromise, it is probably
14521 best to do name transformations on @code{man} pages but not on Texinfo
14522 manuals.
14524 @node Site Defaults
14525 @section Setting Site Defaults
14526 @cindex Site defaults
14528 Autoconf-generated @command{configure} scripts allow your site to provide
14529 default values for some configuration values.  You do this by creating
14530 site- and system-wide initialization files.
14532 @evindex CONFIG_SITE
14533 If the environment variable @code{CONFIG_SITE} is set, @command{configure}
14534 uses its value as the name of a shell script to read.  Otherwise, it
14535 reads the shell script @file{@var{prefix}/share/config.site} if it exists,
14536 then @file{@var{prefix}/etc/config.site} if it exists.  Thus,
14537 settings in machine-specific files override those in machine-independent
14538 ones in case of conflict.
14540 Site files can be arbitrary shell scripts, but only certain kinds of
14541 code are really appropriate to be in them.  Because @command{configure}
14542 reads any cache file after it has read any site files, a site file can
14543 define a default cache file to be shared between all Autoconf-generated
14544 @command{configure} scripts run on that system (@pxref{Cache Files}).  If
14545 you set a default cache file in a site file, it is a good idea to also
14546 set the output variable @code{CC} in that site file, because the cache
14547 file is only valid for a particular compiler, but many systems have
14548 several available.
14550 You can examine or override the value set by a command line option to
14551 @command{configure} in a site file; options set shell variables that have
14552 the same names as the options, with any dashes turned into underscores.
14553 The exceptions are that @option{--without-} and @option{--disable-} options
14554 are like giving the corresponding @option{--with-} or @option{--enable-}
14555 option and the value @samp{no}.  Thus, @option{--cache-file=localcache}
14556 sets the variable @code{cache_file} to the value @samp{localcache};
14557 @option{--enable-warnings=no} or @option{--disable-warnings} sets the variable
14558 @code{enable_warnings} to the value @samp{no}; @option{--prefix=/usr} sets the
14559 variable @code{prefix} to the value @samp{/usr}; etc.
14561 Site files are also good places to set default values for other output
14562 variables, such as @code{CFLAGS}, if you need to give them non-default
14563 values: anything you would normally do, repetitively, on the command
14564 line.  If you use non-default values for @var{prefix} or
14565 @var{exec_prefix} (wherever you locate the site file), you can set them
14566 in the site file if you specify it with the @code{CONFIG_SITE}
14567 environment variable.
14569 You can set some cache values in the site file itself.  Doing this is
14570 useful if you are cross-compiling, where it is impossible to check features
14571 that require running a test program.  You could ``prime the cache'' by
14572 setting those values correctly for that system in
14573 @file{@var{prefix}/etc/config.site}.  To find out the names of the cache
14574 variables you need to set, look for shell variables with @samp{_cv_} in
14575 their names in the affected @command{configure} scripts, or in the Autoconf
14576 M4 source code for those macros.
14578 The cache file is careful to not override any variables set in the site
14579 files.  Similarly, you should not override command-line options in the
14580 site files.  Your code should check that variables such as @code{prefix}
14581 and @code{cache_file} have their default values (as set near the top of
14582 @command{configure}) before changing them.
14584 Here is a sample file @file{/usr/share/local/gnu/share/config.site}.  The
14585 command @samp{configure --prefix=/usr/share/local/gnu} would read this
14586 file (if @code{CONFIG_SITE} is not set to a different file).
14588 @example
14589 # config.site for configure
14591 # Change some defaults.
14592 test "$prefix" = NONE && prefix=/usr/share/local/gnu
14593 test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu
14594 test "$sharedstatedir" = '$prefix/com' && sharedstatedir=/var
14595 test "$localstatedir" = '$prefix/var' && localstatedir=/var
14597 # Give Autoconf 2.x generated configure scripts a shared default
14598 # cache file for feature test results, architecture-specific.
14599 if test "$cache_file" = /dev/null; then
14600   cache_file="$prefix/var/config.cache"
14601   # A cache file is only valid for one C compiler.
14602   CC=gcc
14604 @end example
14607 @c ============================================== Running configure Scripts.
14609 @node Running configure Scripts
14610 @chapter Running @command{configure} Scripts
14611 @cindex @command{configure}
14613 Below are instructions on how to configure a package that uses a
14614 @command{configure} script, suitable for inclusion as an @file{INSTALL}
14615 file in the package.  A plain-text version of @file{INSTALL} which you
14616 may use comes with Autoconf.
14618 @menu
14619 * Basic Installation::          Instructions for typical cases
14620 * Compilers and Options::       Selecting compilers and optimization
14621 * Multiple Architectures::      Compiling for multiple architectures at once
14622 * Installation Names::          Installing in different directories
14623 * Optional Features::           Selecting optional features
14624 * System Type::                 Specifying the system type
14625 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
14626 * Defining Variables::          Specifying the compiler etc.
14627 * configure Invocation::        Changing how @command{configure} runs
14628 @end menu
14630 @set autoconf
14631 @include install.texi
14634 @c ============================================== Recreating a Configuration
14636 @node config.status Invocation
14637 @chapter Recreating a Configuration
14638 @cindex @command{config.status}
14640 The @command{configure} script creates a file named @file{config.status},
14641 which actually configures, @dfn{instantiates}, the template files.  It
14642 also records the configuration options that were specified when the
14643 package was last configured in case reconfiguring is needed.
14645 Synopsis:
14646 @example
14647 ./config.status @var{option}@dots{} [@var{file}@dots{}]
14648 @end example
14650 It configures the @var{files}; if none are specified, all the templates
14651 are instantiated.  The files must be specified without their
14652 dependencies, as in
14654 @example
14655 ./config.status foobar
14656 @end example
14658 @noindent
14661 @example
14662 ./config.status foobar:foo.in:bar.in
14663 @end example
14665 The supported @var{option}s are:
14667 @table @option
14668 @item --help
14669 @itemx -h
14670 Print a summary of the command line options, the list of the template
14671 files, and exit.
14673 @item --version
14674 @itemx -V
14675 Print the version number of Autoconf and exit.
14677 @item --silent
14678 @itemx --quiet
14679 @itemx -q
14680 Do not print progress messages.
14682 @item --debug
14683 @itemx -d
14684 Don't remove the temporary files.
14686 @item --file=@var{file}[:@var{template}]
14687 Require that @var{file} be instantiated as if
14688 @samp{AC_CONFIG_FILES(@var{file}:@var{template})} was used.  Both
14689 @var{file} and @var{template} may be @samp{-} in which case the standard
14690 output and/or standard input, respectively, is used.  If a
14691 @var{template} file name is relative, it is first looked for in the build
14692 tree, and then in the source tree.  @xref{Configuration Actions}, for
14693 more details.
14695 This option and the following ones provide one way for separately
14696 distributed packages to share the values computed by @command{configure}.
14697 Doing so can be useful if some of the packages need a superset of the
14698 features that one of them, perhaps a common library, does.  These
14699 options allow a @file{config.status} file to create files other than the
14700 ones that its @file{configure.ac} specifies, so it can be used for a
14701 different package.
14703 @item --header=@var{file}[:@var{template}]
14704 Same as @option{--file} above, but with @samp{AC_CONFIG_HEADERS}.
14706 @item --recheck
14707 Ask @file{config.status} to update itself and exit (no instantiation).
14708 This option is useful if you change @command{configure}, so that the
14709 results of some tests might be different from the previous run.  The
14710 @option{--recheck} option re-runs @command{configure} with the same arguments
14711 you used before, plus the @option{--no-create} option, which prevents
14712 @command{configure} from running @file{config.status} and creating
14713 @file{Makefile} and other files, and the @option{--no-recursion} option,
14714 which prevents @command{configure} from running other @command{configure}
14715 scripts in subdirectories.  (This is so other @file{Makefile} rules can
14716 run @file{config.status} when it changes; @pxref{Automatic Remaking},
14717 for an example).
14718 @end table
14720 @file{config.status} checks several optional environment variables that
14721 can alter its behavior:
14723 @defvar CONFIG_SHELL
14724 @evindex CONFIG_SHELL
14725 The shell with which to run @command{configure} for the @option{--recheck}
14726 option.  It must be Bourne-compatible.  The default is a shell that
14727 supports @code{LINENO} if available, and @file{/bin/sh} otherwise.
14728 Invoking @command{configure} by hand bypasses this setting, so you may
14729 need to use a command like @samp{CONFIG_SHELL=/bin/bash /bin/bash ./configure}
14730 to insure that the same shell is used everywhere.  The absolute name of the
14731 shell should be passed.
14732 @end defvar
14734 @defvar CONFIG_STATUS
14735 @evindex CONFIG_STATUS
14736 The file name to use for the shell script that records the
14737 configuration.  The default is @file{./config.status}.  This variable is
14738 useful when one package uses parts of another and the @command{configure}
14739 scripts shouldn't be merged because they are maintained separately.
14740 @end defvar
14742 You can use @file{./config.status} in your Makefiles.  For example, in
14743 the dependencies given above (@pxref{Automatic Remaking}),
14744 @file{config.status} is run twice when @file{configure.ac} has changed.
14745 If that bothers you, you can make each run only regenerate the files for
14746 that rule:
14747 @example
14748 @group
14749 config.h: stamp-h
14750 stamp-h: config.h.in config.status
14751         ./config.status config.h
14752         echo > stamp-h
14754 Makefile: Makefile.in config.status
14755         ./config.status Makefile
14756 @end group
14757 @end example
14759 The calling convention of @file{config.status} has changed; see
14760 @ref{Obsolete config.status Use}, for details.
14763 @c =================================================== Obsolete Constructs
14765 @node Obsolete Constructs
14766 @chapter Obsolete Constructs
14767 @cindex Obsolete constructs
14769 Autoconf changes, and throughout the years some constructs have been
14770 obsoleted.  Most of the changes involve the macros, but in some cases
14771 the tools themselves, or even some concepts, are now considered
14772 obsolete.
14774 You may completely skip this chapter if you are new to Autoconf.  Its
14775 intention is mainly to help maintainers updating their packages by
14776 understanding how to move to more modern constructs.
14778 @menu
14779 * Obsolete config.status Use::  Different calling convention
14780 * acconfig.h::                  Additional entries in @file{config.h.in}
14781 * autoupdate Invocation::       Automatic update of @file{configure.ac}
14782 * Obsolete Macros::             Backward compatibility macros
14783 * Autoconf 1::                  Tips for upgrading your files
14784 * Autoconf 2.13::               Some fresher tips
14785 @end menu
14787 @node Obsolete config.status Use
14788 @section Obsolete @file{config.status} Invocation
14790 @file{config.status} now supports arguments to specify the files to
14791 instantiate; see @ref{config.status Invocation}, for more details.
14792 Before, environment variables had to be used.
14794 @defvar CONFIG_COMMANDS
14795 @evindex CONFIG_COMMANDS
14796 The tags of the commands to execute.  The default is the arguments given
14797 to @code{AC_OUTPUT} and @code{AC_CONFIG_COMMANDS} in
14798 @file{configure.ac}.
14799 @end defvar
14801 @defvar CONFIG_FILES
14802 @evindex CONFIG_FILES
14803 The files in which to perform @samp{@@@var{variable}@@} substitutions.
14804 The default is the arguments given to @code{AC_OUTPUT} and
14805 @code{AC_CONFIG_FILES} in @file{configure.ac}.
14806 @end defvar
14808 @defvar CONFIG_HEADERS
14809 @evindex CONFIG_HEADERS
14810 The files in which to substitute C @code{#define} statements.  The
14811 default is the arguments given to @code{AC_CONFIG_HEADERS}; if that
14812 macro was not called, @file{config.status} ignores this variable.
14813 @end defvar
14815 @defvar CONFIG_LINKS
14816 @evindex CONFIG_LINKS
14817 The symbolic links to establish.  The default is the arguments given to
14818 @code{AC_CONFIG_LINKS}; if that macro was not called,
14819 @file{config.status} ignores this variable.
14820 @end defvar
14822 In @ref{config.status Invocation}, using this old interface, the example
14823 would be:
14825 @example
14826 @group
14827 config.h: stamp-h
14828 stamp-h: config.h.in config.status
14829         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_FILES= \
14830           CONFIG_HEADERS=config.h ./config.status
14831         echo > stamp-h
14833 Makefile: Makefile.in config.status
14834         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_HEADERS= \
14835           CONFIG_FILES=Makefile ./config.status
14836 @end group
14837 @end example
14839 @noindent
14840 (If @file{configure.ac} does not call @code{AC_CONFIG_HEADERS}, there is
14841 no need to set @code{CONFIG_HEADERS} in the @code{make} rules.  Equally
14842 for @code{CONFIG_COMMANDS}, etc.)
14845 @node acconfig.h
14846 @section @file{acconfig.h}
14848 @cindex @file{acconfig.h}
14849 @cindex @file{config.h.top}
14850 @cindex @file{config.h.bot}
14852 In order to produce @file{config.h.in}, @command{autoheader} needs to
14853 build or to find templates for each symbol.  Modern releases of Autoconf
14854 use @code{AH_VERBATIM} and @code{AH_TEMPLATE} (@pxref{Autoheader
14855 Macros}), but in older releases a file, @file{acconfig.h}, contained the
14856 list of needed templates.  @command{autoheader} copied comments and
14857 @code{#define} and @code{#undef} statements from @file{acconfig.h} in
14858 the current directory, if present.  This file used to be mandatory if
14859 you @code{AC_DEFINE} any additional symbols.
14861 Modern releases of Autoconf also provide @code{AH_TOP} and
14862 @code{AH_BOTTOM} if you need to prepend/append some information to
14863 @file{config.h.in}.  Ancient versions of Autoconf had a similar feature:
14864 if @file{./acconfig.h} contains the string @samp{@@TOP@@},
14865 @command{autoheader} copies the lines before the line containing
14866 @samp{@@TOP@@} into the top of the file that it generates.  Similarly,
14867 if @file{./acconfig.h} contains the string @samp{@@BOTTOM@@},
14868 @command{autoheader} copies the lines after that line to the end of the
14869 file it generates.  Either or both of those strings may be omitted.  An
14870 even older alternate way to produce the same effect in ancient versions
14871 of Autoconf is to create the files @file{@var{file}.top} (typically
14872 @file{config.h.top}) and/or @file{@var{file}.bot} in the current
14873 directory.  If they exist, @command{autoheader} copies them to the
14874 beginning and end, respectively, of its output.
14876 In former versions of Autoconf, the files used in preparing a software
14877 package for distribution were:
14878 @example
14879 @group
14880 configure.ac --.   .------> autoconf* -----> configure
14881                +---+
14882 [aclocal.m4] --+   `---.
14883 [acsite.m4] ---'       |
14884                        +--> [autoheader*] -> [config.h.in]
14885 [acconfig.h] ----.     |
14886                  +-----'
14887 [config.h.top] --+
14888 [config.h.bot] --'
14889 @end group
14890 @end example
14892 Using only the @code{AH_} macros, @file{configure.ac} should be
14893 self-contained, and should not depend upon @file{acconfig.h} etc.
14896 @node autoupdate Invocation
14897 @section Using @command{autoupdate} to Modernize @file{configure.ac}
14898 @cindex @command{autoupdate}
14900 The @command{autoupdate} program updates a @file{configure.ac} file that
14901 calls Autoconf macros by their old names to use the current macro names.
14902 In version 2 of Autoconf, most of the macros were renamed to use a more
14903 uniform and descriptive naming scheme.  @xref{Macro Names}, for a
14904 description of the new scheme.  Although the old names still work
14905 (@pxref{Obsolete Macros}, for a list of the old macros and the corresponding
14906 new names), you can make your @file{configure.ac} files more readable
14907 and make it easier to use the current Autoconf documentation if you
14908 update them to use the new macro names.
14910 @evindex SIMPLE_BACKUP_SUFFIX
14911 If given no arguments, @command{autoupdate} updates @file{configure.ac},
14912 backing up the original version with the suffix @file{~} (or the value
14913 of the environment variable @code{SIMPLE_BACKUP_SUFFIX}, if that is
14914 set).  If you give @command{autoupdate} an argument, it reads that file
14915 instead of @file{configure.ac} and writes the updated file to the
14916 standard output.
14918 @noindent
14919 @command{autoupdate} accepts the following options:
14921 @table @option
14922 @item --help
14923 @itemx -h
14924 Print a summary of the command line options and exit.
14926 @item --version
14927 @itemx -V
14928 Print the version number of Autoconf and exit.
14930 @item --verbose
14931 @itemx -v
14932 Report processing steps.
14934 @item --debug
14935 @itemx -d
14936 Don't remove the temporary files.
14938 @item --force
14939 @itemx -f
14940 Force the update even if the file has not changed.  Disregard the cache.
14942 @item --include=@var{dir}
14943 @itemx -I @var{dir}
14944 Also look for input files in @var{dir}.  Multiple invocations accumulate.
14945 Directories are browsed from last to first.
14946 @end table
14948 @node Obsolete Macros
14949 @section Obsolete Macros
14951 Several macros are obsoleted in Autoconf, for various reasons (typically
14952 they failed to quote properly, couldn't be extended for more recent
14953 issues, etc.).  They are still supported, but deprecated: their use
14954 should be avoided.
14956 During the jump from Autoconf version 1 to version 2, most of the
14957 macros were renamed to use a more uniform and descriptive naming scheme,
14958 but their signature did not change.  @xref{Macro Names}, for a
14959 description of the new naming scheme.  Below, if there is just the mapping
14960 from old names to new names for these macros, the reader is invited to
14961 refer to the definition of the new macro for the signature and the
14962 description.
14964 @defmac AC_ALLOCA
14965 @acindex{ALLOCA}
14966 @code{AC_FUNC_ALLOCA}
14967 @end defmac
14969 @defmac AC_ARG_ARRAY
14970 @acindex{ARG_ARRAY}
14971 removed because of limited usefulness
14972 @end defmac
14974 @defmac AC_C_CROSS
14975 @acindex{C_CROSS}
14976 This macro is obsolete; it does nothing.
14977 @end defmac
14979 @defmac AC_CANONICAL_SYSTEM
14980 @acindex{CANONICAL_SYSTEM}
14981 Determine the system type and set output variables to the names of the
14982 canonical system types.  @xref{Canonicalizing}, for details about the
14983 variables this macro sets.
14985 The user is encouraged to use either @code{AC_CANONICAL_BUILD}, or
14986 @code{AC_CANONICAL_HOST}, or @code{AC_CANONICAL_TARGET}, depending on
14987 the needs.  Using @code{AC_CANONICAL_TARGET} is enough to run the two
14988 other macros.
14989 @end defmac
14991 @defmac AC_CHAR_UNSIGNED
14992 @acindex{CHAR_UNSIGNED}
14993 @code{AC_C_CHAR_UNSIGNED}
14994 @end defmac
14996 @defmac AC_CHECK_TYPE (@var{type}, @var{default})
14997 @acindex{CHECK_TYPE}
14998 Autoconf, up to 2.13, used to provide this version of
14999 @code{AC_CHECK_TYPE}, deprecated because of its flaws.  Firstly, although
15000 it is a member of the @code{CHECK} clan, singular sub-family, it does
15001 more than just checking.  Secondly, missing types are not
15002 @code{typedef}'d, they are @code{#define}'d, which can lead to
15003 incompatible code in the case of pointer types.
15005 This use of @code{AC_CHECK_TYPE} is obsolete and discouraged; see
15006 @ref{Generic Types}, for the description of the current macro.
15008 If the type @var{type} is not defined, define it to be the C (or C++)
15009 builtin type @var{default}, e.g., @samp{short int} or @samp{unsigned int}.
15011 This macro is equivalent to:
15013 @example
15014 AC_CHECK_TYPE([@var{type}], [],
15015   [AC_DEFINE_UNQUOTED([@var{type}], [@var{default}],
15016      [Define to `@var{default}'
15017       if <sys/types.h> does not define.])])
15018 @end example
15020 In order to keep backward compatibility, the two versions of
15021 @code{AC_CHECK_TYPE} are implemented, selected by a simple heuristics:
15023 @enumerate
15024 @item
15025 If there are three or four arguments, the modern version is used.
15027 @item
15028 If the second argument appears to be a C or C++ type, then the
15029 obsolete version is used.  This happens if the argument is a C or C++
15030 @emph{builtin} type or a C identifier ending in @samp{_t}, optionally
15031 followed by one of @samp{[(* } and then by a string of zero or more
15032 characters taken from the set @samp{[]()* _a-zA-Z0-9}.
15034 @item
15035 If the second argument is spelled with the alphabet of valid C and C++
15036 types, the user is warned and the modern version is used.
15038 @item
15039 Otherwise, the modern version is used.
15040 @end enumerate
15042 @noindent
15043 You are encouraged either to use a valid builtin type, or to use the
15044 equivalent modern code (see above), or better yet, to use
15045 @code{AC_CHECK_TYPES} together with
15047 @example
15048 #if !HAVE_LOFF_T
15049 typedef loff_t off_t;
15050 #endif
15051 @end example
15052 @end defmac
15053 @c end of AC_CHECK_TYPE
15055 @defmac AC_CHECKING (@var{feature-description})
15056 @acindex{CHECKING}
15057 Same as @samp{AC_MSG_NOTICE([checking @var{feature-description}@dots{}]}.
15058 @end defmac
15060 @defmac AC_COMPILE_CHECK (@var{echo-text}, @var{includes}, @var{function-body}, @var{action-if-found}, @ovar{action-if-not-found})
15061 @acindex{COMPILE_CHECK}
15062 This is an obsolete version of @code{AC_TRY_COMPILE} itself replaced by
15063 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}), with the
15064 addition that it prints @samp{checking for @var{echo-text}} to the
15065 standard output first, if @var{echo-text} is non-empty.  Use
15066 @code{AC_MSG_CHECKING} and @code{AC_MSG_RESULT} instead to print
15067 messages (@pxref{Printing Messages}).
15068 @end defmac
15070 @defmac AC_CONST
15071 @acindex{CONST}
15072 @code{AC_C_CONST}
15073 @end defmac
15075 @defmac AC_CROSS_CHECK
15076 @acindex{CROSS_CHECK}
15077 Same as @code{AC_C_CROSS}, which is obsolete too, and does nothing
15078 @code{:-)}.
15079 @end defmac
15081 @defmac AC_CYGWIN
15082 @acindex{CYGWIN}
15083 Check for the Cygwin environment in which case the shell variable
15084 @code{CYGWIN} is set to @samp{yes}.  Don't use this macro, the dignified
15085 means to check the nature of the host is using
15086 @code{AC_CANONICAL_HOST}.  As a matter of fact this macro is defined as:
15088 @example
15089 AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
15090 case $host_os in
15091   *cygwin* ) CYGWIN=yes;;
15092          * ) CYGWIN=no;;
15093 esac
15094 @end example
15096 Beware that the variable @code{CYGWIN} has a very special meaning when
15097 running Cygwin, and should not be changed.  That's yet another reason
15098 not to use this macro.
15099 @end defmac
15101 @defmac AC_DECL_SYS_SIGLIST
15102 @acindex{DECL_SYS_SIGLIST}
15103 @cvindex SYS_SIGLIST_DECLARED
15104 Same as:
15106 @example
15107 AC_CHECK_DECLS([sys_siglist], [], [],
15108 [#include <signal.h>
15109 /* NetBSD declares sys_siglist in unistd.h.  */
15110 #if HAVE_UNISTD_H
15111 # include <unistd.h>
15112 #endif
15114 @end example
15115 @end defmac
15117 @defmac AC_DECL_YYTEXT
15118 @acindex{DECL_YYTEXT}
15119 Does nothing, now integrated in @code{AC_PROG_LEX}.
15120 @end defmac
15122 @defmac AC_DIR_HEADER
15123 @acindex{DIR_HEADER}
15124 @cvindex DIRENT
15125 @cvindex SYSNDIR
15126 @cvindex SYSDIR
15127 @cvindex NDIR
15128 Like calling @code{AC_FUNC_CLOSEDIR_VOID} and@code{AC_HEADER_DIRENT},
15129 but defines a different set of C preprocessor macros to indicate which
15130 header file is found:
15132 @multitable {@file{sys/ndir.h}} {Old Symbol} {@code{HAVE_SYS_NDIR_H}}
15133 @item Header            @tab Old Symbol     @tab New Symbol
15134 @item @file{dirent.h}   @tab @code{DIRENT}  @tab @code{HAVE_DIRENT_H}
15135 @item @file{sys/ndir.h} @tab @code{SYSNDIR} @tab @code{HAVE_SYS_NDIR_H}
15136 @item @file{sys/dir.h}  @tab @code{SYSDIR}  @tab @code{HAVE_SYS_DIR_H}
15137 @item @file{ndir.h}     @tab @code{NDIR}    @tab @code{HAVE_NDIR_H}
15138 @end multitable
15139 @end defmac
15141 @defmac AC_DYNIX_SEQ
15142 @acindex{DYNIX_SEQ}
15143 If on DYNIX/ptx, add @option{-lseq} to output variable
15144 @code{LIBS}.  This macro used to be defined as
15146 @example
15147 AC_CHECK_LIB([seq], [getmntent], [LIBS="-lseq $LIBS"])
15148 @end example
15150 @noindent
15151 now it is just @code{AC_FUNC_GETMNTENT}.
15152 @end defmac
15154 @defmac AC_EXEEXT
15155 @acindex{EXEEXT}
15156 @ovindex EXEEXT
15157 Defined the output variable @code{EXEEXT} based on the output of the
15158 compiler, which is now done automatically.  Typically set to empty
15159 string if Posix and @samp{.exe} if a @acronym{DOS} variant.
15160 @end defmac
15162 @defmac AC_EMXOS2
15163 @acindex{EMXOS2}
15164 Similar to @code{AC_CYGWIN} but checks for the EMX environment on OS/2
15165 and sets @code{EMXOS2}.
15166 @end defmac
15168 @defmac AC_ERROR
15169 @acindex{ERROR}
15170 @code{AC_MSG_ERROR}
15171 @end defmac
15173 @defmac AC_FIND_X
15174 @acindex{FIND_X}
15175 @code{AC_PATH_X}
15176 @end defmac
15178 @defmac AC_FIND_XTRA
15179 @acindex{FIND_XTRA}
15180 @code{AC_PATH_XTRA}
15181 @end defmac
15183 @defmac AC_FOREACH
15184 @acindex{FOREACH}
15185 @code{m4_foreach_w}
15186 @end defmac
15188 @defmac AC_FUNC_CHECK
15189 @acindex{FUNC_CHECK}
15190 @code{AC_CHECK_FUNC}
15191 @end defmac
15193 @defmac AC_FUNC_WAIT3
15194 @acindex{FUNC_WAIT3}
15195 @cvindex HAVE_WAIT3
15196 If @code{wait3} is found and fills in the contents of its third argument
15197 (a @samp{struct rusage *}), which HP-UX does not do, define
15198 @code{HAVE_WAIT3}.
15200 These days portable programs should use @code{waitpid}, not
15201 @code{wait3}, as @code{wait3} has been removed from Posix.
15202 @end defmac
15204 @defmac AC_GCC_TRADITIONAL
15205 @acindex{GCC_TRADITIONAL}
15206 @code{AC_PROG_GCC_TRADITIONAL}
15207 @end defmac
15209 @defmac AC_GETGROUPS_T
15210 @acindex{GETGROUPS_T}
15211 @code{AC_TYPE_GETGROUPS}
15212 @end defmac
15214 @defmac AC_GETLOADAVG
15215 @acindex{GETLOADAVG}
15216 @code{AC_FUNC_GETLOADAVG}
15217 @end defmac
15219 @defmac AC_HAVE_FUNCS
15220 @acindex{HAVE_FUNCS}
15221 @code{AC_CHECK_FUNCS}
15222 @end defmac
15224 @defmac AC_HAVE_HEADERS
15225 @acindex{HAVE_HEADERS}
15226 @code{AC_CHECK_HEADERS}
15227 @end defmac
15229 @defmac AC_HAVE_LIBRARY (@var{library}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
15230 @acindex{HAVE_LIBRARY}
15231 This macro is equivalent to calling @code{AC_CHECK_LIB} with a
15232 @var{function} argument of @code{main}.  In addition, @var{library} can
15233 be written as any of @samp{foo}, @option{-lfoo}, or @samp{libfoo.a}.  In
15234 all of those cases, the compiler is passed @option{-lfoo}.  However,
15235 @var{library} cannot be a shell variable; it must be a literal name.
15236 @end defmac
15238 @defmac AC_HAVE_POUNDBANG
15239 @acindex{HAVE_POUNDBANG}
15240 @code{AC_SYS_INTERPRETER} (different calling convention)
15241 @end defmac
15243 @defmac AC_HEADER_CHECK
15244 @acindex{HEADER_CHECK}
15245 @code{AC_CHECK_HEADER}
15246 @end defmac
15248 @defmac AC_HEADER_EGREP
15249 @acindex{HEADER_EGREP}
15250 @code{AC_EGREP_HEADER}
15251 @end defmac
15253 @defmac AC_HELP_STRING
15254 @acindex{HELP_STRING}
15255 @code{AS_HELP_STRING}
15256 @end defmac
15258 @defmac AC_INIT (@var{unique-file-in-source-dir})
15259 @acindex{INIT}
15260 Formerly @code{AC_INIT} used to have a single argument, and was
15261 equivalent to:
15263 @example
15264 AC_INIT
15265 AC_CONFIG_SRCDIR(@var{unique-file-in-source-dir})
15266 @end example
15267 @end defmac
15269 @defmac AC_INLINE
15270 @acindex{INLINE}
15271 @code{AC_C_INLINE}
15272 @end defmac
15274 @defmac AC_INT_16_BITS
15275 @acindex{INT_16_BITS}
15276 @cvindex INT_16_BITS
15277 If the C type @code{int} is 16 bits wide, define @code{INT_16_BITS}.
15278 Use @samp{AC_CHECK_SIZEOF(int)} instead.
15279 @end defmac
15281 @defmac AC_IRIX_SUN
15282 @acindex{IRIX_SUN}
15283 If on @sc{irix} (Silicon Graphics Unix), add @option{-lsun} to output
15284 @code{LIBS}.  If you were using it to get @code{getmntent}, use
15285 @code{AC_FUNC_GETMNTENT} instead.  If you used it for the NIS versions
15286 of the password and group functions, use @samp{AC_CHECK_LIB(sun,
15287 getpwnam)}.  Up to Autoconf 2.13, it used to be
15289 @example
15290 AC_CHECK_LIB([sun], [getmntent], [LIBS="-lsun $LIBS"])
15291 @end example
15293 @noindent
15294 now it is defined as
15296 @example
15297 AC_FUNC_GETMNTENT
15298 AC_CHECK_LIB([sun], [getpwnam])
15299 @end example
15300 @end defmac
15302 @defmac AC_LANG_C
15303 @acindex{LANG_C}
15304 Same as @samp{AC_LANG([C])}.
15305 @end defmac
15307 @defmac AC_LANG_CPLUSPLUS
15308 @acindex{LANG_CPLUSPLUS}
15309 Same as @samp{AC_LANG([C++])}.
15310 @end defmac
15312 @defmac AC_LANG_FORTRAN77
15313 @acindex{LANG_FORTRAN77}
15314 Same as @samp{AC_LANG([Fortran 77])}.
15315 @end defmac
15317 @defmac AC_LANG_RESTORE
15318 @acindex{LANG_RESTORE}
15319 Select the @var{language} that is saved on the top of the stack, as set
15320 by @code{AC_LANG_SAVE}, remove it from the stack, and call
15321 @code{AC_LANG(@var{language})}.
15322 @end defmac
15324 @defmac AC_LANG_SAVE
15325 @acindex{LANG_SAVE}
15326 Remember the current language (as set by @code{AC_LANG}) on a stack.
15327 The current language does not change.  @code{AC_LANG_PUSH} is preferred.
15328 @end defmac
15330 @defmac AC_LINK_FILES (@var{source}@dots{}, @var{dest}@dots{})
15331 @acindex{LINK_FILES}
15332 This is an obsolete version of @code{AC_CONFIG_LINKS}.  An updated
15333 version of:
15335 @example
15336 AC_LINK_FILES(config/$machine.h config/$obj_format.h,
15337               host.h            object.h)
15338 @end example
15340 @noindent
15343 @example
15344 AC_CONFIG_LINKS([host.h:config/$machine.h
15345                 object.h:config/$obj_format.h])
15346 @end example
15347 @end defmac
15349 @defmac AC_LN_S
15350 @acindex{LN_S}
15351 @code{AC_PROG_LN_S}
15352 @end defmac
15354 @defmac AC_LONG_64_BITS
15355 @acindex{LONG_64_BITS}
15356 @cvindex LONG_64_BITS
15357 Define @code{LONG_64_BITS} if the C type @code{long int} is 64 bits wide.
15358 Use the generic macro @samp{AC_CHECK_SIZEOF([long int])} instead.
15359 @end defmac
15361 @defmac AC_LONG_DOUBLE
15362 @acindex{LONG_DOUBLE}
15363 @code{AC_C_LONG_DOUBLE}
15364 @end defmac
15366 @defmac AC_LONG_FILE_NAMES
15367 @acindex{LONG_FILE_NAMES}
15368 @code{AC_SYS_LONG_FILE_NAMES}
15369 @end defmac
15371 @defmac AC_MAJOR_HEADER
15372 @acindex{MAJOR_HEADER}
15373 @code{AC_HEADER_MAJOR}
15374 @end defmac
15376 @defmac AC_MEMORY_H
15377 @acindex{MEMORY_H}
15378 @cvindex NEED_MEMORY_H
15379 Used to define @code{NEED_MEMORY_H} if the @code{mem} functions were
15380 defined in @file{memory.h}.  Today it is equivalent to
15381 @samp{AC_CHECK_HEADERS([memory.h])}.  Adjust your code to depend upon
15382 @code{HAVE_MEMORY_H}, not @code{NEED_MEMORY_H}; see @ref{Standard
15383 Symbols}.
15384 @end defmac
15386 @defmac AC_MINGW32
15387 @acindex{MINGW32}
15388 Similar to @code{AC_CYGWIN} but checks for the MinGW compiler
15389 environment and sets @code{MINGW32}.
15390 @end defmac
15392 @defmac AC_MINUS_C_MINUS_O
15393 @acindex{MINUS_C_MINUS_O}
15394 @code{AC_PROG_CC_C_O}
15395 @end defmac
15397 @defmac AC_MMAP
15398 @acindex{MMAP}
15399 @code{AC_FUNC_MMAP}
15400 @end defmac
15402 @defmac AC_MODE_T
15403 @acindex{MODE_T}
15404 @code{AC_TYPE_MODE_T}
15405 @end defmac
15407 @defmac AC_OBJEXT
15408 @acindex{OBJEXT}
15409 @ovindex OBJEXT
15410 Defined the output variable @code{OBJEXT} based on the output of the
15411 compiler, after .c files have been excluded.  Typically set to @samp{o}
15412 if Posix, @samp{obj} if a @acronym{DOS} variant.
15413 Now the compiler checking macros handle
15414 this automatically.
15415 @end defmac
15417 @defmac AC_OBSOLETE (@var{this-macro-name}, @ovar{suggestion})
15418 @acindex{OBSOLETE}
15419 Make M4 print a message to the standard error output warning that
15420 @var{this-macro-name} is obsolete, and giving the file and line number
15421 where it was called.  @var{this-macro-name} should be the name of the
15422 macro that is calling @code{AC_OBSOLETE}.  If @var{suggestion} is given,
15423 it is printed at the end of the warning message; for example, it can be
15424 a suggestion for what to use instead of @var{this-macro-name}.
15426 For instance
15428 @example
15429 AC_OBSOLETE([$0], [; use AC_CHECK_HEADERS(unistd.h) instead])dnl
15430 @end example
15432 You are encouraged to use @code{AU_DEFUN} instead, since it gives better
15433 services to the user.
15434 @end defmac
15436 @defmac AC_OFF_T
15437 @acindex{OFF_T}
15438 @code{AC_TYPE_OFF_T}
15439 @end defmac
15441 @defmac AC_OUTPUT (@ovar{file}@dots{}, @ovar{extra-cmds}, @ovar{init-cmds})
15442 @acindex{OUTPUT}
15443 The use of @code{AC_OUTPUT} with argument is deprecated.  This obsoleted
15444 interface is equivalent to:
15446 @example
15447 @group
15448 AC_CONFIG_FILES(@var{file}@dots{})
15449 AC_CONFIG_COMMANDS([default],
15450                    @var{extra-cmds}, @var{init-cmds})
15451 AC_OUTPUT
15452 @end group
15453 @end example
15454 @end defmac
15456 @defmac AC_OUTPUT_COMMANDS (@var{extra-cmds}, @ovar{init-cmds})
15457 @acindex{OUTPUT_COMMANDS}
15458 Specify additional shell commands to run at the end of
15459 @file{config.status}, and shell commands to initialize any variables
15460 from @command{configure}.  This macro may be called multiple times.  It is
15461 obsolete, replaced by @code{AC_CONFIG_COMMANDS}.
15463 Here is an unrealistic example:
15465 @example
15466 fubar=27
15467 AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.],
15468                    [fubar=$fubar])
15469 AC_OUTPUT_COMMANDS([echo this is another, extra, bit],
15470                    [echo init bit])
15471 @end example
15473 Aside from the fact that @code{AC_CONFIG_COMMANDS} requires an
15474 additional key, an important difference is that
15475 @code{AC_OUTPUT_COMMANDS} is quoting its arguments twice, unlike
15476 @code{AC_CONFIG_COMMANDS}.  This means that @code{AC_CONFIG_COMMANDS}
15477 can safely be given macro calls as arguments:
15479 @example
15480 AC_CONFIG_COMMANDS(foo, [my_FOO()])
15481 @end example
15483 @noindent
15484 Conversely, where one level of quoting was enough for literal strings
15485 with @code{AC_OUTPUT_COMMANDS}, you need two with
15486 @code{AC_CONFIG_COMMANDS}.  The following lines are equivalent:
15488 @example
15489 @group
15490 AC_OUTPUT_COMMANDS([echo "Square brackets: []"])
15491 AC_CONFIG_COMMANDS([default], [[echo "Square brackets: []"]])
15492 @end group
15493 @end example
15494 @end defmac
15496 @defmac AC_PID_T
15497 @acindex{PID_T}
15498 @code{AC_TYPE_PID_T}
15499 @end defmac
15501 @defmac AC_PREFIX
15502 @acindex{PREFIX}
15503 @code{AC_PREFIX_PROGRAM}
15504 @end defmac
15506 @defmac AC_PROGRAMS_CHECK
15507 @acindex{PROGRAMS_CHECK}
15508 @code{AC_CHECK_PROGS}
15509 @end defmac
15511 @defmac AC_PROGRAMS_PATH
15512 @acindex{PROGRAMS_PATH}
15513 @code{AC_PATH_PROGS}
15514 @end defmac
15516 @defmac AC_PROGRAM_CHECK
15517 @acindex{PROGRAM_CHECK}
15518 @code{AC_CHECK_PROG}
15519 @end defmac
15521 @defmac AC_PROGRAM_EGREP
15522 @acindex{PROGRAM_EGREP}
15523 @code{AC_EGREP_CPP}
15524 @end defmac
15526 @defmac AC_PROGRAM_PATH
15527 @acindex{PROGRAM_PATH}
15528 @code{AC_PATH_PROG}
15529 @end defmac
15531 @defmac AC_REMOTE_TAPE
15532 @acindex{REMOTE_TAPE}
15533 removed because of limited usefulness
15534 @end defmac
15536 @defmac AC_RESTARTABLE_SYSCALLS
15537 @acindex{RESTARTABLE_SYSCALLS}
15538 @code{AC_SYS_RESTARTABLE_SYSCALLS}
15539 @end defmac
15541 @defmac AC_RETSIGTYPE
15542 @acindex{RETSIGTYPE}
15543 @code{AC_TYPE_SIGNAL}
15544 @end defmac
15546 @defmac AC_RSH
15547 @acindex{RSH}
15548 removed because of limited usefulness
15549 @end defmac
15551 @defmac AC_SCO_INTL
15552 @acindex{SCO_INTL}
15553 @ovindex LIBS
15554 If on SCO Unix, add @option{-lintl} to output variable @code{LIBS}.  This
15555 macro used to do this:
15557 @example
15558 AC_CHECK_LIB([intl], [strftime], [LIBS="-lintl $LIBS"])
15559 @end example
15561 @noindent
15562 Now it just calls @code{AC_FUNC_STRFTIME} instead.
15563 @end defmac
15565 @defmac AC_SETVBUF_REVERSED
15566 @acindex{SETVBUF_REVERSED}
15567 @code{AC_FUNC_SETVBUF_REVERSED}
15568 @end defmac
15570 @defmac AC_SET_MAKE
15571 @acindex{SET_MAKE}
15572 @code{AC_PROG_MAKE_SET}
15573 @end defmac
15575 @defmac AC_SIZEOF_TYPE
15576 @acindex{SIZEOF_TYPE}
15577 @code{AC_CHECK_SIZEOF}
15578 @end defmac
15580 @defmac AC_SIZE_T
15581 @acindex{SIZE_T}
15582 @code{AC_TYPE_SIZE_T}
15583 @end defmac
15585 @defmac AC_STAT_MACROS_BROKEN
15586 @acindex{STAT_MACROS_BROKEN}
15587 @code{AC_HEADER_STAT}
15588 @end defmac
15590 @defmac AC_STDC_HEADERS
15591 @acindex{STDC_HEADERS}
15592 @code{AC_HEADER_STDC}
15593 @end defmac
15595 @defmac AC_STRCOLL
15596 @acindex{STRCOLL}
15597 @code{AC_FUNC_STRCOLL}
15598 @end defmac
15600 @defmac AC_ST_BLKSIZE
15601 @acindex{ST_BLKSIZE}
15602 @code{AC_CHECK_MEMBERS}
15603 @end defmac
15605 @defmac AC_ST_BLOCKS
15606 @acindex{ST_BLOCKS}
15607 @code{AC_STRUCT_ST_BLOCKS}
15608 @end defmac
15610 @defmac AC_ST_RDEV
15611 @acindex{ST_RDEV}
15612 @code{AC_CHECK_MEMBERS}
15613 @end defmac
15615 @defmac AC_SYS_RESTARTABLE_SYSCALLS
15616 @acindex{SYS_RESTARTABLE_SYSCALLS}
15617 @cvindex HAVE_RESTARTABLE_SYSCALLS
15618 If the system automatically restarts a system call that is interrupted
15619 by a signal, define @code{HAVE_RESTARTABLE_SYSCALLS}.  This macro does
15620 not check whether system calls are restarted in general---it checks whether a
15621 signal handler installed with @code{signal} (but not @code{sigaction})
15622 causes system calls to be restarted.  It does not check whether system calls
15623 can be restarted when interrupted by signals that have no handler.
15625 These days portable programs should use @code{sigaction} with
15626 @code{SA_RESTART} if they want restartable system calls.  They should
15627 not rely on @code{HAVE_RESTARTABLE_SYSCALLS}, since nowadays whether a
15628 system call is restartable is a dynamic issue, not a configuration-time
15629 issue.
15630 @end defmac
15632 @defmac AC_SYS_SIGLIST_DECLARED
15633 @acindex{SYS_SIGLIST_DECLARED}
15634 @code{AC_DECL_SYS_SIGLIST}
15635 @end defmac
15637 @defmac AC_TEST_CPP
15638 @acindex{TEST_CPP}
15639 @code{AC_TRY_CPP}, replaced by @code{AC_PREPROC_IFELSE}.
15640 @end defmac
15642 @defmac AC_TEST_PROGRAM
15643 @acindex{TEST_PROGRAM}
15644 @code{AC_TRY_RUN}, replaced by @code{AC_RUN_IFELSE}.
15645 @end defmac
15647 @defmac AC_TIMEZONE
15648 @acindex{TIMEZONE}
15649 @code{AC_STRUCT_TIMEZONE}
15650 @end defmac
15652 @defmac AC_TIME_WITH_SYS_TIME
15653 @acindex{TIME_WITH_SYS_TIME}
15654 @code{AC_HEADER_TIME}
15655 @end defmac
15657 @defmac AC_TRY_COMPILE (@var{includes}, @var{function-body}, @ovar{action-if-found}, @ovar{action-if-not-found})
15658 @acindex{TRY_COMPILE}
15659 Same as:
15661 @example
15662 AC_COMPILE_IFELSE(
15663   [AC_LANG_PROGRAM([[@var{includes}]],
15664      [[@var{function-body}]])],
15665   [@var{action-if-true}],
15666   [@var{action-if-false}])
15667 @end example
15669 @noindent
15670 @xref{Running the Compiler}.
15672 This macro double quotes both @var{includes} and @var{function-body}.
15674 For C and C++, @var{includes} is any @code{#include} statements needed
15675 by the code in @var{function-body} (@var{includes} will be ignored if
15676 the currently selected language is Fortran or Fortran 77).  The compiler
15677 and compilation flags are determined by the current language
15678 (@pxref{Language Choice}).
15679 @end defmac
15681 @defmac AC_TRY_CPP (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
15682 @acindex{TRY_CPP}
15683 Same as:
15685 @example
15686 AC_PREPROC_IFELSE(
15687   [AC_LANG_SOURCE([[@var{input}]])],
15688   [@var{action-if-true}],
15689   [@var{action-if-false}])
15690 @end example
15692 @noindent
15693 @xref{Running the Preprocessor}.
15695 This macro double quotes the @var{input}.
15696 @end defmac
15698 @defmac AC_TRY_LINK (@var{includes}, @var{function-body}, @ovar{action-if-found}, @ovar{action-if-not-found})
15699 @acindex{TRY_LINK}
15700 Same as:
15702 @example
15703 AC_LINK_IFELSE(
15704   [AC_LANG_PROGRAM([[@var{includes}]],
15705      [[@var{function-body}]])],
15706   [@var{action-if-true}],
15707   [@var{action-if-false}])
15708 @end example
15710 @noindent
15711 @xref{Running the Compiler}.
15713 This macro double quotes both @var{includes} and @var{function-body}.
15715 Depending on the current language (@pxref{Language Choice}), create a
15716 test program to see whether a function whose body consists of
15717 @var{function-body} can be compiled and linked.  If the file compiles
15718 and links successfully, run shell commands @var{action-if-found},
15719 otherwise run @var{action-if-not-found}.
15721 This macro double quotes both @var{includes} and @var{function-body}.
15723 For C and C++, @var{includes} is any @code{#include} statements needed
15724 by the code in @var{function-body} (@var{includes} will be ignored if
15725 the currently selected language is Fortran or Fortran 77).  The compiler
15726 and compilation flags are determined by the current language
15727 (@pxref{Language Choice}), and in addition @code{LDFLAGS} and
15728 @code{LIBS} are used for linking.
15729 @end defmac
15731 @defmac AC_TRY_LINK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
15732 @acindex{TRY_LINK_FUNC}
15733 This macro is equivalent to
15734 @samp{AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])],
15735 [@var{action-if-found}], [@var{action-if-not-found}])}.
15736 @end defmac
15738 @defmac AC_TRY_RUN (@var{program}, @ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-cross-compiling})
15739 @acindex{TRY_RUN}
15740 Same as:
15742 @example
15743 AC_RUN_IFELSE(
15744   [AC_LANG_SOURCE([[@var{program}]])],
15745   [@var{action-if-true}],
15746   [@var{action-if-false}],
15747   [@var{action-if-cross-compiling}])
15748 @end example
15750 @noindent
15751 @xref{Run Time}.
15752 @end defmac
15754 @defmac AC_UID_T
15755 @acindex{UID_T}
15756 @code{AC_TYPE_UID_T}
15757 @end defmac
15759 @defmac AC_UNISTD_H
15760 @acindex{UNISTD_H}
15761 Same as @samp{AC_CHECK_HEADERS([unistd.h])}.
15762 @end defmac
15764 @defmac AC_USG
15765 @acindex{USG}
15766 @cvindex USG
15767 Define @code{USG} if the @acronym{BSD} string functions are defined in
15768 @file{strings.h}.  You should no longer depend upon @code{USG}, but on
15769 @code{HAVE_STRING_H}; see @ref{Standard Symbols}.
15770 @end defmac
15772 @defmac AC_UTIME_NULL
15773 @acindex{UTIME_NULL}
15774 @code{AC_FUNC_UTIME_NULL}
15775 @end defmac
15777 @defmac AC_VALIDATE_CACHED_SYSTEM_TUPLE (@ovar{cmd})
15778 @acindex{VALIDATE_CACHED_SYSTEM_TUPLE}
15779 If the cache file is inconsistent with the current host, target and
15780 build system types, it used to execute @var{cmd} or print a default
15781 error message.  This is now handled by default.
15782 @end defmac
15784 @defmac AC_VERBOSE (@var{result-description})
15785 @acindex{VERBOSE}
15786 @code{AC_MSG_RESULT}.
15787 @end defmac
15789 @defmac AC_VFORK
15790 @acindex{VFORK}
15791 @code{AC_FUNC_VFORK}
15792 @end defmac
15794 @defmac AC_VPRINTF
15795 @acindex{VPRINTF}
15796 @code{AC_FUNC_VPRINTF}
15797 @end defmac
15799 @defmac AC_WAIT3
15800 @acindex{WAIT3}
15801 @code{AC_FUNC_WAIT3}
15802 @end defmac
15804 @defmac AC_WARN
15805 @acindex{WARN}
15806 @code{AC_MSG_WARN}
15807 @end defmac
15809 @defmac AC_WORDS_BIGENDIAN
15810 @acindex{WORDS_BIGENDIAN}
15811 @code{AC_C_BIGENDIAN}
15812 @end defmac
15814 @defmac AC_XENIX_DIR
15815 @acindex{XENIX_DIR}
15816 @ovindex LIBS
15817 This macro used to add @option{-lx} to output variable @code{LIBS} if on
15818 Xenix.  Also, if @file{dirent.h} is being checked for, added
15819 @option{-ldir} to @code{LIBS}.  Now it is merely an alias of
15820 @code{AC_HEADER_DIRENT} instead, plus some code to detect whether
15821 running @sc{xenix} on which you should not depend:
15823 @example
15824 AC_MSG_CHECKING([for Xenix])
15825 AC_EGREP_CPP([yes],
15826 [#if defined M_XENIX && !defined M_UNIX
15827   yes
15828 #endif],
15829              [AC_MSG_RESULT([yes]); XENIX=yes],
15830              [AC_MSG_RESULT([no]); XENIX=])
15831 @end example
15832 @end defmac
15834 @defmac AC_YYTEXT_POINTER
15835 @acindex{YYTEXT_POINTER}
15836 @code{AC_DECL_YYTEXT}
15837 @end defmac
15839 @node Autoconf 1
15840 @section Upgrading From Version 1
15841 @cindex Upgrading autoconf
15842 @cindex Autoconf upgrading
15844 Autoconf version 2 is mostly backward compatible with version 1.
15845 However, it introduces better ways to do some things, and doesn't
15846 support some of the ugly things in version 1.  So, depending on how
15847 sophisticated your @file{configure.ac} files are, you might have to do
15848 some manual work in order to upgrade to version 2.  This chapter points
15849 out some problems to watch for when upgrading.  Also, perhaps your
15850 @command{configure} scripts could benefit from some of the new features in
15851 version 2; the changes are summarized in the file @file{NEWS} in the
15852 Autoconf distribution.
15854 @menu
15855 * Changed File Names::          Files you might rename
15856 * Changed Makefiles::           New things to put in @file{Makefile.in}
15857 * Changed Macros::              Macro calls you might replace
15858 * Changed Results::             Changes in how to check test results
15859 * Changed Macro Writing::       Better ways to write your own macros
15860 @end menu
15862 @node Changed File Names
15863 @subsection Changed File Names
15865 If you have an @file{aclocal.m4} installed with Autoconf (as opposed to
15866 in a particular package's source directory), you must rename it to
15867 @file{acsite.m4}.  @xref{autoconf Invocation}.
15869 If you distribute @file{install.sh} with your package, rename it to
15870 @file{install-sh} so @code{make} builtin rules won't inadvertently
15871 create a file called @file{install} from it.  @code{AC_PROG_INSTALL}
15872 looks for the script under both names, but it is best to use the new name.
15874 If you were using @file{config.h.top}, @file{config.h.bot}, or
15875 @file{acconfig.h}, you still can, but you will have less clutter if you
15876 use the @code{AH_} macros.  @xref{Autoheader Macros}.
15878 @node Changed Makefiles
15879 @subsection Changed Makefiles
15881 Add @samp{@@CFLAGS@@}, @samp{@@CPPFLAGS@@}, and @samp{@@LDFLAGS@@} in
15882 your @file{Makefile.in} files, so they can take advantage of the values
15883 of those variables in the environment when @command{configure} is run.
15884 Doing this isn't necessary, but it's a convenience for users.
15886 Also add @samp{@@configure_input@@} in a comment to each input file for
15887 @code{AC_OUTPUT}, so that the output files will contain a comment saying
15888 they were produced by @command{configure}.  Automatically selecting the
15889 right comment syntax for all the kinds of files that people call
15890 @code{AC_OUTPUT} on became too much work.
15892 Add @file{config.log} and @file{config.cache} to the list of files you
15893 remove in @code{distclean} targets.
15895 If you have the following in @file{Makefile.in}:
15897 @example
15898 prefix = /usr/local
15899 exec_prefix = $(prefix)
15900 @end example
15902 @noindent
15903 you must change it to:
15905 @example
15906 prefix = @@prefix@@
15907 exec_prefix = @@exec_prefix@@
15908 @end example
15910 @noindent
15911 The old behavior of replacing those variables without @samp{@@}
15912 characters around them has been removed.
15914 @node Changed Macros
15915 @subsection Changed Macros
15917 Many of the macros were renamed in Autoconf version 2.  You can still
15918 use the old names, but the new ones are clearer, and it's easier to find
15919 the documentation for them.  @xref{Obsolete Macros}, for a table showing the
15920 new names for the old macros.  Use the @command{autoupdate} program to
15921 convert your @file{configure.ac} to using the new macro names.
15922 @xref{autoupdate Invocation}.
15924 Some macros have been superseded by similar ones that do the job better,
15925 but are not call-compatible.  If you get warnings about calling obsolete
15926 macros while running @command{autoconf}, you may safely ignore them, but
15927 your @command{configure} script will generally work better if you follow
15928 the advice that is printed about what to replace the obsolete macros with.  In
15929 particular, the mechanism for reporting the results of tests has
15930 changed.  If you were using @command{echo} or @code{AC_VERBOSE} (perhaps
15931 via @code{AC_COMPILE_CHECK}), your @command{configure} script's output will
15932 look better if you switch to @code{AC_MSG_CHECKING} and
15933 @code{AC_MSG_RESULT}.  @xref{Printing Messages}.  Those macros work best
15934 in conjunction with cache variables.  @xref{Caching Results}.
15938 @node Changed Results
15939 @subsection Changed Results
15941 If you were checking the results of previous tests by examining the
15942 shell variable @code{DEFS}, you need to switch to checking the values of
15943 the cache variables for those tests.  @code{DEFS} no longer exists while
15944 @command{configure} is running; it is only created when generating output
15945 files.  This difference from version 1 is because properly quoting the
15946 contents of that variable turned out to be too cumbersome and
15947 inefficient to do every time @code{AC_DEFINE} is called.  @xref{Cache
15948 Variable Names}.
15950 For example, here is a @file{configure.ac} fragment written for Autoconf
15951 version 1:
15953 @example
15954 AC_HAVE_FUNCS(syslog)
15955 case "$DEFS" in
15956 *-DHAVE_SYSLOG*) ;;
15957 *) # syslog is not in the default libraries.  See if it's in some other.
15958   saved_LIBS="$LIBS"
15959   for lib in bsd socket inet; do
15960     AC_CHECKING(for syslog in -l$lib)
15961     LIBS="-l$lib $saved_LIBS"
15962     AC_HAVE_FUNCS(syslog)
15963     case "$DEFS" in
15964     *-DHAVE_SYSLOG*) break ;;
15965     *) ;;
15966     esac
15967     LIBS="$saved_LIBS"
15968   done ;;
15969 esac
15970 @end example
15972 Here is a way to write it for version 2:
15974 @example
15975 AC_CHECK_FUNCS([syslog])
15976 if test $ac_cv_func_syslog = no; then
15977   # syslog is not in the default libraries.  See if it's in some other.
15978   for lib in bsd socket inet; do
15979     AC_CHECK_LIB([$lib], [syslog], [AC_DEFINE([HAVE_SYSLOG])
15980       LIBS="-l$lib $LIBS"; break])
15981   done
15983 @end example
15985 If you were working around bugs in @code{AC_DEFINE_UNQUOTED} by adding
15986 backslashes before quotes, you need to remove them.  It now works
15987 predictably, and does not treat quotes (except back quotes) specially.
15988 @xref{Setting Output Variables}.
15990 All of the Boolean shell variables set by Autoconf macros now use
15991 @samp{yes} for the true value.  Most of them use @samp{no} for false,
15992 though for backward compatibility some use the empty string instead.  If
15993 you were relying on a shell variable being set to something like 1 or
15994 @samp{t} for true, you need to change your tests.
15996 @node Changed Macro Writing
15997 @subsection Changed Macro Writing
15999 When defining your own macros, you should now use @code{AC_DEFUN}
16000 instead of @code{define}.  @code{AC_DEFUN} automatically calls
16001 @code{AC_PROVIDE} and ensures that macros called via @code{AC_REQUIRE}
16002 do not interrupt other macros, to prevent nested @samp{checking@dots{}}
16003 messages on the screen.  There's no actual harm in continuing to use the
16004 older way, but it's less convenient and attractive.  @xref{Macro
16005 Definitions}.
16007 You probably looked at the macros that came with Autoconf as a guide for
16008 how to do things.  It would be a good idea to take a look at the new
16009 versions of them, as the style is somewhat improved and they take
16010 advantage of some new features.
16012 If you were doing tricky things with undocumented Autoconf internals
16013 (macros, variables, diversions), check whether you need to change
16014 anything to account for changes that have been made.  Perhaps you can
16015 even use an officially supported technique in version 2 instead of
16016 kludging.  Or perhaps not.
16018 To speed up your locally written feature tests, add caching to them.
16019 See whether any of your tests are of general enough usefulness to
16020 encapsulate them into macros that you can share.
16023 @node Autoconf 2.13
16024 @section Upgrading From Version 2.13
16025 @cindex Upgrading autoconf
16026 @cindex Autoconf upgrading
16028 The introduction of the previous section (@pxref{Autoconf 1}) perfectly
16029 suits this section@enddots{}
16031 @quotation
16032 Autoconf version 2.50 is mostly backward compatible with version 2.13.
16033 However, it introduces better ways to do some things, and doesn't
16034 support some of the ugly things in version 2.13.  So, depending on how
16035 sophisticated your @file{configure.ac} files are, you might have to do
16036 some manual work in order to upgrade to version 2.50.  This chapter
16037 points out some problems to watch for when upgrading.  Also, perhaps
16038 your @command{configure} scripts could benefit from some of the new
16039 features in version 2.50; the changes are summarized in the file
16040 @file{NEWS} in the Autoconf distribution.
16041 @end quotation
16043 @menu
16044 * Changed Quotation::           Broken code which used to work
16045 * New Macros::                  Interaction with foreign macros
16046 * Hosts and Cross-Compilation::  Bugward compatibility kludges
16047 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
16048 * AC_FOO_IFELSE vs AC_TRY_FOO::  A more generic scheme for testing sources
16049 @end menu
16051 @node Changed Quotation
16052 @subsection Changed Quotation
16054 The most important changes are invisible to you: the implementation of
16055 most macros have completely changed.  This allowed more factorization of
16056 the code, better error messages, a higher uniformity of the user's
16057 interface etc.  Unfortunately, as a side effect, some construct which
16058 used to (miraculously) work might break starting with Autoconf 2.50.
16059 The most common culprit is bad quotation.
16061 For instance, in the following example, the message is not properly
16062 quoted:
16064 @example
16065 AC_INIT
16066 AC_CHECK_HEADERS(foo.h, ,
16067   AC_MSG_ERROR(cannot find foo.h, bailing out))
16068 AC_OUTPUT
16069 @end example
16071 @noindent
16072 Autoconf 2.13 simply ignores it:
16074 @example
16075 $ @kbd{autoconf-2.13; ./configure --silent}
16076 creating cache ./config.cache
16077 configure: error: cannot find foo.h
16079 @end example
16081 @noindent
16082 while Autoconf 2.50 will produce a broken @file{configure}:
16084 @example
16085 $ @kbd{autoconf-2.50; ./configure --silent}
16086 configure: error: cannot find foo.h
16087 ./configure: exit: bad non-numeric arg `bailing'
16088 ./configure: exit: bad non-numeric arg `bailing'
16090 @end example
16092 The message needs to be quoted, and the @code{AC_MSG_ERROR} invocation
16093 too!
16095 @example
16096 AC_INIT([Example], [1.0], [bug-example@@example.org])
16097 AC_CHECK_HEADERS([foo.h], [],
16098   [AC_MSG_ERROR([cannot find foo.h, bailing out])])
16099 AC_OUTPUT
16100 @end example
16102 Many many (and many more) Autoconf macros were lacking proper quotation,
16103 including no less than@dots{} @code{AC_DEFUN} itself!
16105 @example
16106 $ @kbd{cat configure.in}
16107 AC_DEFUN([AC_PROG_INSTALL],
16108 [# My own much better version
16110 AC_INIT
16111 AC_PROG_INSTALL
16112 AC_OUTPUT
16113 $ @kbd{autoconf-2.13}
16114 autoconf: Undefined macros:
16115 ***BUG in Autoconf--please report*** AC_FD_MSG
16116 ***BUG in Autoconf--please report*** AC_EPI
16117 configure.in:1:AC_DEFUN([AC_PROG_INSTALL],
16118 configure.in:5:AC_PROG_INSTALL
16119 $ @kbd{autoconf-2.50}
16121 @end example
16124 @node New Macros
16125 @subsection New Macros
16127 @cindex undefined macro
16128 @cindex @code{_m4_divert_diversion}
16130 While Autoconf was relatively dormant in the late 1990s, Automake
16131 provided Autoconf-like macros for a while.  Starting with Autoconf 2.50
16132 in 2001, Autoconf provided
16133 versions of these macros, integrated in the @code{AC_} namespace,
16134 instead of @code{AM_}.  But in order to ease the upgrading via
16135 @command{autoupdate}, bindings to such @code{AM_} macros are provided.
16137 Unfortunately older versions of Automake (e.g., Automake 1.4)
16138 did not quote the names of these macros.
16139 Therefore, when @command{m4} finds something like
16140 @samp{AC_DEFUN(AM_TYPE_PTRDIFF_T, @dots{})} in @file{aclocal.m4},
16141 @code{AM_TYPE_PTRDIFF_T} is
16142 expanded, replaced with its Autoconf definition.
16144 Fortunately Autoconf catches pre-@code{AC_INIT} expansions, and will
16145 complain, in its own words:
16147 @example
16148 $ @kbd{cat configure.ac}
16149 AC_INIT([Example], [1.0], [bug-example@@example.org])
16150 AM_TYPE_PTRDIFF_T
16151 $ @kbd{aclocal-1.4}
16152 $ @kbd{autoconf}
16153 aclocal.m4:17: error: m4_defn: undefined macro: _m4_divert_diversion
16154 aclocal.m4:17: the top level
16155 autom4te: m4 failed with exit status: 1
16157 @end example
16159 Modern versions of Automake no longer define most of these
16160 macros, and will properly quote the names of the remaining macros.
16161 If you must use an old Automake, do not depend upon macros from Automake
16162 as it is simply not its job
16163 to provide macros (but the one it requires itself):
16165 @example
16166 $ @kbd{cat configure.ac}
16167 AC_INIT([Example], [1.0], [bug-example@@example.org])
16168 AM_TYPE_PTRDIFF_T
16169 $ @kbd{rm aclocal.m4}
16170 $ @kbd{autoupdate}
16171 autoupdate: `configure.ac' is updated
16172 $ @kbd{cat configure.ac}
16173 AC_INIT([Example], [1.0], [bug-example@@example.org])
16174 AC_CHECK_TYPES([ptrdiff_t])
16175 $ @kbd{aclocal-1.4}
16176 $ @kbd{autoconf}
16178 @end example
16181 @node Hosts and Cross-Compilation
16182 @subsection Hosts and Cross-Compilation
16183 @cindex Cross compilation
16185 Based on the experience of compiler writers, and after long public
16186 debates, many aspects of the cross-compilation chain have changed:
16188 @itemize @minus
16189 @item
16190 the relationship between the build, host, and target architecture types,
16192 @item
16193 the command line interface for specifying them to @command{configure},
16195 @item
16196 the variables defined in @command{configure},
16198 @item
16199 the enabling of cross-compilation mode.
16200 @end itemize
16202 @sp 1
16204 The relationship between build, host, and target have been cleaned up:
16205 the chain of default is now simply: target defaults to host, host to
16206 build, and build to the result of @command{config.guess}.  Nevertheless,
16207 in order to ease the transition from 2.13 to 2.50, the following
16208 transition scheme is implemented.  @emph{Do not rely on it}, as it will
16209 be completely disabled in a couple of releases (we cannot keep it, as it
16210 proves to cause more problems than it cures).
16212 They all default to the result of running @command{config.guess}, unless
16213 you specify either @option{--build} or @option{--host}.  In this case,
16214 the default becomes the system type you specified.  If you specify both,
16215 and they're different, @command{configure} will enter cross compilation
16216 mode, so it won't run any tests that require execution.
16218 Hint: if you mean to override the result of @command{config.guess},
16219 prefer @option{--build} over @option{--host}.  In the future,
16220 @option{--host} will not override the name of the build system type.
16221 Whenever you specify @code{--host}, be sure to specify @code{--build}
16222 too.
16224 @sp 1
16226 For backward compatibility, @command{configure} will accept a system
16227 type as an option by itself.  Such an option will override the
16228 defaults for build, host, and target system types.  The following
16229 configure statement will configure a cross toolchain that will run on
16230 Net@acronym{BSD}/alpha but generate code for @acronym{GNU} Hurd/sparc, which is
16231 also the build platform.
16233 @example
16234 ./configure --host=alpha-netbsd sparc-gnu
16235 @end example
16237 @sp 1
16239 In Autoconf 2.13 and before, the variables @code{build}, @code{host},
16240 and @code{target} had a different semantics before and after the
16241 invocation of @code{AC_CANONICAL_BUILD} etc.  Now, the argument of
16242 @option{--build} is strictly copied into @code{build_alias}, and is left
16243 empty otherwise.  After the @code{AC_CANONICAL_BUILD}, @code{build} is
16244 set to the canonicalized build type.  To ease the transition, before,
16245 its contents is the same as that of @code{build_alias}.  Do @emph{not}
16246 rely on this broken feature.
16248 For consistency with the backward compatibility scheme exposed above,
16249 when @option{--host} is specified but @option{--build} isn't, the build
16250 system will be assumed to be the same as @option{--host}, and
16251 @samp{build_alias} will be set to that value.  Eventually, this
16252 historically incorrect behavior will go away.
16254 @sp 1
16256 The former scheme to enable cross-compilation proved to cause more harm
16257 than good, in particular, it used to be triggered too easily, leaving
16258 regular end users puzzled in front of cryptic error messages.
16259 @command{configure} could even enter cross-compilation mode only
16260 because the compiler was not functional.  This is mainly because
16261 @command{configure} used to try to detect cross-compilation, instead of
16262 waiting for an explicit flag from the user.
16264 Now, @command{configure} enters cross-compilation mode if and only if
16265 @option{--host} is passed.
16267 That's the short documentation.  To ease the transition between 2.13 and
16268 its successors, a more complicated scheme is implemented.  @emph{Do not
16269 rely on the following}, as it will be removed in the near future.
16271 If you specify @option{--host}, but not @option{--build}, when
16272 @command{configure} performs the first compiler test it will try to run
16273 an executable produced by the compiler.  If the execution fails, it will
16274 enter cross-compilation mode.  This is fragile.  Moreover, by the time
16275 the compiler test is performed, it may be too late to modify the
16276 build-system type: other tests may have already been performed.
16277 Therefore, whenever you specify @code{--host}, be sure to specify
16278 @code{--build} too.
16280 @example
16281 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
16282 @end example
16284 @noindent
16285 will enter cross-compilation mode.  The former interface, which
16286 consisted in setting the compiler to a cross-compiler without informing
16287 @command{configure} is obsolete.  For instance, @command{configure} will
16288 fail if it can't run the code generated by the specified compiler if you
16289 configure as follows:
16291 @example
16292 ./configure CC=m68k-coff-gcc
16293 @end example
16296 @node AC_LIBOBJ vs LIBOBJS
16297 @subsection @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}
16299 Up to Autoconf 2.13, the replacement of functions was triggered via the
16300 variable @code{LIBOBJS}.  Since Autoconf 2.50, the macro
16301 @code{AC_LIBOBJ} should be used instead (@pxref{Generic Functions}).
16302 Starting at Autoconf 2.53, the use of @code{LIBOBJS} is an error.
16304 This change is mandated by the unification of the @acronym{GNU} Build System
16305 components.  In particular, the various fragile techniques used to parse
16306 a @file{configure.ac} are all replaced with the use of traces.  As a
16307 consequence, any action must be traceable, which obsoletes critical
16308 variable assignments.  Fortunately, @code{LIBOBJS} was the only problem,
16309 and it can even be handled gracefully (read, ``without your having to
16310 change something'').
16312 There were two typical uses of @code{LIBOBJS}: asking for a replacement
16313 function, and adjusting @code{LIBOBJS} for Automake and/or Libtool.
16315 @sp 1
16317 As for function replacement, the fix is immediate: use
16318 @code{AC_LIBOBJ}.  For instance:
16320 @example
16321 LIBOBJS="$LIBOBJS fnmatch.o"
16322 LIBOBJS="$LIBOBJS malloc.$ac_objext"
16323 @end example
16325 @noindent
16326 should be replaced with:
16328 @example
16329 AC_LIBOBJ([fnmatch])
16330 AC_LIBOBJ([malloc])
16331 @end example
16333 @sp 1
16335 @ovindex LIBOBJDIR
16336 When used with Automake 1.10 or newer, a suitable value for
16337 @code{LIBOBJDIR} is set so that the @code{LIBOBJS} and @code{LTLIBOBJS}
16338 can be referenced from any @file{Makefile.am}.  Even without Automake,
16339 arranging for @code{LIBOBJDIR} to be set correctly will enable
16340 referencing @code{LIBOBJS} and @code{LTLIBOBJS} in another directory.
16343 @node AC_FOO_IFELSE vs AC_TRY_FOO
16344 @subsection @code{AC_FOO_IFELSE} vs.@: @code{AC_TRY_FOO}
16346 Since Autoconf 2.50, internal codes uses @code{AC_PREPROC_IFELSE},
16347 @code{AC_COMPILE_IFELSE}, @code{AC_LINK_IFELSE}, and
16348 @code{AC_RUN_IFELSE} on one hand and @code{AC_LANG_SOURCES},
16349 and @code{AC_LANG_PROGRAM} on the other hand instead of the deprecated
16350 @code{AC_TRY_CPP}, @code{AC_TRY_COMPILE}, @code{AC_TRY_LINK}, and
16351 @code{AC_TRY_RUN}.  The motivations where:
16352 @itemize @minus
16353 @item
16354 a more consistent interface: @code{AC_TRY_COMPILE} etc.@: were double
16355 quoting their arguments;
16357 @item
16358 the combinatoric explosion is solved by decomposing on the one hand the
16359 generation of sources, and on the other hand executing the program;
16361 @item
16362 this scheme helps supporting more languages than plain C and C++.
16363 @end itemize
16365 In addition to the change of syntax, the philosophy has changed too:
16366 while emphasis was put on speed at the expense of accuracy, today's
16367 Autoconf promotes accuracy of the testing framework at, ahem@dots{}, the
16368 expense of speed.
16371 As a perfect example of what is @emph{not} to be done, here is how to
16372 find out whether a header file contains a particular declaration, such
16373 as a typedef, a structure, a structure member, or a function.  Use
16374 @code{AC_EGREP_HEADER} instead of running @code{grep} directly on the
16375 header file; on some systems the symbol might be defined in another
16376 header file that the file you are checking @samp{#include}s.
16378 As a (bad) example, here is how you should not check for C preprocessor
16379 symbols, either defined by header files or predefined by the C
16380 preprocessor: using @code{AC_EGREP_CPP}:
16382 @example
16383 @group
16384 AC_EGREP_CPP(yes,
16385 [#ifdef _AIX
16386   yes
16387 #endif
16388 ], is_aix=yes, is_aix=no)
16389 @end group
16390 @end example
16392 The above example, properly written would (i) use
16393 @code{AC_LANG_PROGRAM}, and (ii) run the compiler:
16395 @example
16396 @group
16397 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
16398 [[#if !defined _AIX
16399  error: This isn't AIX!
16400 #endif
16401 ]])],
16402                    [is_aix=yes],
16403                    [is_aix=no])
16404 @end group
16405 @end example
16408 @c ============================= Generating Test Suites with Autotest
16410 @node Using Autotest
16411 @chapter Generating Test Suites with Autotest
16413 @cindex Autotest
16415 @display
16416 @strong{N.B.: This section describes an experimental feature which will
16417 be part of Autoconf in a forthcoming release.  Although we believe
16418 Autotest is stabilizing, this documentation describes an interface which
16419 might change in the future: do not depend upon Autotest without
16420 subscribing to the Autoconf mailing lists.}
16421 @end display
16423 It is paradoxical that portable projects depend on nonportable tools
16424 to run their test suite.  Autoconf by itself is the paragon of this
16425 problem: although it aims at perfectly portability, up to 2.13 its
16426 test suite was using Deja@acronym{GNU}, a rich and complex testing
16427 framework, but which is far from being standard on Posix systems.
16428 Worse yet, it was likely to be missing on the most fragile platforms,
16429 the very platforms that are most likely to torture Autoconf and
16430 exhibit deficiencies.
16432 To circumvent this problem, many package maintainers have developed their
16433 own testing framework, based on simple shell scripts whose sole outputs
16434 are exit status values describing whether the test succeeded.  Most of
16435 these tests share common patterns, and this can result in lots of
16436 duplicated code and tedious maintenance.
16438 Following exactly the same reasoning that yielded to the inception of
16439 Autoconf, Autotest provides a test suite generation framework, based on
16440 M4 macros building a portable shell script.  The suite itself is
16441 equipped with automatic logging and tracing facilities which greatly
16442 diminish the interaction with bug reporters, and simple timing reports.
16444 Autoconf itself has been using Autotest for years, and we do attest that
16445 it has considerably improved the strength of the test suite and the
16446 quality of bug reports.  Other projects are known to use some generation
16447 of Autotest, such as Bison, Free Recode, Free Wdiff, @acronym{GNU} Tar, each of
16448 them with different needs, and this usage has validated Autotest as a general
16449 testing framework.
16451 Nonetheless, compared to Deja@acronym{GNU}, Autotest is inadequate for
16452 interactive tool testing, which is probably its main limitation.
16454 @menu
16455 * Using an Autotest Test Suite::  Autotest and the user
16456 * Writing testsuite.at::        Autotest macros
16457 * testsuite Invocation::        Running @command{testsuite} scripts
16458 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
16459 @end menu
16461 @node Using an Autotest Test Suite
16462 @section Using an Autotest Test Suite
16464 @menu
16465 * testsuite Scripts::           The concepts of Autotest
16466 * Autotest Logs::               Their contents
16467 @end menu
16469 @node testsuite Scripts
16470 @subsection @command{testsuite} Scripts
16472 @cindex @command{testsuite}
16474 Generating testing or validation suites using Autotest is rather easy.
16475 The whole validation suite is held in a file to be processed through
16476 @command{autom4te}, itself using @acronym{GNU} M4 under the scene, to
16477 produce a stand-alone Bourne shell script which then gets distributed.
16478 Neither @command{autom4te} nor @acronym{GNU} M4 are needed at
16479 the installer's end.
16481 @cindex test group
16482 Each test of the validation suite should be part of some test group.  A
16483 @dfn{test group} is a sequence of interwoven tests that ought to be
16484 executed together, usually because one test in the group creates data
16485 files than a later test in the same group needs to read.  Complex test
16486 groups make later debugging more tedious.  It is much better to
16487 keep only a few tests per test group.  Ideally there is only one test
16488 per test group.
16490 For all but the simplest packages, some file such as @file{testsuite.at}
16491 does not fully hold all test sources, as these are often easier to
16492 maintain in separate files.  Each of these separate files holds a single
16493 test group, or a sequence of test groups all addressing some common
16494 functionality in the package.  In such cases, @file{testsuite.at}
16495 merely initializes the validation suite, and sometimes does elementary
16496 health checking, before listing include statements for all other test
16497 files.  The special file @file{package.m4}, containing the
16498 identification of the package, is automatically included if found.
16500 A convenient alternative consists in moving all the global issues
16501 (local Autotest macros, elementary health checking, and @code{AT_INIT}
16502 invocation) into the file @code{local.at}, and making
16503 @file{testsuite.at} be a simple list of @code{m4_include} of sub test
16504 suites.  In such case, generating the whole test suite or pieces of it
16505 is only a matter of choosing the @command{autom4te} command line
16506 arguments.
16508 The validation scripts that Autotest produces are by convention called
16509 @command{testsuite}.  When run, @command{testsuite} executes each test
16510 group in turn, producing only one summary line per test to say if that
16511 particular test succeeded or failed.  At end of all tests, summarizing
16512 counters get printed.  One debugging directory is left for each test
16513 group which failed, if any: such directories are named
16514 @file{testsuite.dir/@var{nn}}, where @var{nn} is the sequence number of
16515 the test group, and they include:
16517 @itemize @bullet
16518 @item a debugging script named @file{run} which reruns the test in
16519 @dfn{debug mode} (@pxref{testsuite Invocation}).  The automatic generation
16520 of debugging scripts has the purpose of easing the chase for bugs.
16522 @item all the files created with @code{AT_DATA}
16524 @item a log of the run, named @file{testsuite.log}
16525 @end itemize
16527 In the ideal situation, none of the tests fail, and consequently no
16528 debugging directory is left behind for validation.
16530 It often happens in practice that individual tests in the validation
16531 suite need to get information coming out of the configuration process.
16532 Some of this information, common for all validation suites, is provided
16533 through the file @file{atconfig}, automatically created by
16534 @code{AC_CONFIG_TESTDIR}.  For configuration informations which your
16535 testing environment specifically needs, you might prepare an optional
16536 file named @file{atlocal.in}, instantiated by @code{AC_CONFIG_FILES}.
16537 The configuration process produces @file{atconfig} and @file{atlocal}
16538 out of these two input files, and these two produced files are
16539 automatically read by the @file{testsuite} script.
16541 Here is a diagram showing the relationship between files.
16543 @noindent
16544 Files used in preparing a software package for distribution:
16546 @example
16547                 [package.m4] -->.
16548                                  \
16549 subfile-1.at ->.  [local.at] ---->+
16550     ...         \                  \
16551 subfile-i.at ---->-- testsuite.at -->-- autom4te* -->testsuite
16552     ...         /
16553 subfile-n.at ->'
16554 @end example
16556 @noindent
16557 Files used in configuring a software package:
16559 @example
16560                                      .--> atconfig
16561                                     /
16562 [atlocal.in] -->  config.status* --<
16563                                     \
16564                                      `--> [atlocal]
16565 @end example
16567 @noindent
16568 Files created during the test suite execution:
16570 @example
16571 atconfig -->.                    .--> testsuite.log
16572              \                  /
16573               >-- testsuite* --<
16574              /                  \
16575 [atlocal] ->'                    `--> [testsuite.dir]
16576 @end example
16579 @node Autotest Logs
16580 @subsection Autotest Logs
16582 When run, the test suite creates a log file named after itself, e.g., a
16583 test suite named @command{testsuite} creates @file{testsuite.log}.  It
16584 contains a lot of information, usually more than maintainers actually
16585 need, but therefore most of the time it contains all that is needed:
16587 @table @asis
16588 @item command line arguments
16589 @c akim s/to consist in/to consist of/
16590 A very bad but unfortunately widespread Posix habit consists of
16591 setting environment variables before the command, such as in
16592 @samp{CC=my-home-grown-cc ./testsuite}.  The test suite will not
16593 know this change, hence (i) it cannot report it to you, and (ii)
16594 it cannot preserve the value of @code{CC} for subsequent runs.
16595 Autoconf faced exactly the same problem, and solved it by asking
16596 users to pass the variable definitions as command line arguments.
16597 Autotest requires this rule, too, but has no means to enforce it; the log
16598 then contains a trace of the variables that were changed by the user.
16600 @item @file{ChangeLog} excerpts
16601 The topmost lines of all the @file{ChangeLog}s found in the source
16602 hierarchy.  This is especially useful when bugs are reported against
16603 development versions of the package, since the version string does not
16604 provide sufficient information to know the exact state of the sources
16605 the user compiled.  Of course, this relies on the use of a
16606 @file{ChangeLog}.
16608 @item build machine
16609 Running a test suite in a cross-compile environment is not an easy task,
16610 since it would mean having the test suite run on a machine @var{build},
16611 while running programs on a machine @var{host}.  It is much simpler to
16612 run both the test suite and the programs on @var{host}, but then, from
16613 the point of view of the test suite, there remains a single environment,
16614 @var{host} = @var{build}.  The log contains relevant information on the
16615 state of the build machine, including some important environment
16616 variables.
16617 @c FIXME: How about having an M4sh macro to say `hey, log the value
16618 @c of `@dots{}'?  This would help both Autoconf and Autotest.
16620 @item tested programs
16621 The absolute file name and answers to @option{--version} of the tested
16622 programs (see @ref{Writing testsuite.at}, @code{AT_TESTED}).
16624 @item configuration log
16625 The contents of @file{config.log}, as created by @command{configure},
16626 are appended.  It contains the configuration flags and a detailed report
16627 on the configuration itself.
16628 @end table
16631 @node Writing testsuite.at
16632 @section Writing @file{testsuite.at}
16634 The @file{testsuite.at} is a Bourne shell script making use of special
16635 Autotest M4 macros.  It often contains a call to @code{AT_INIT} near
16636 its beginning followed by one call to @code{m4_include} per source file
16637 for tests.  Each such included file, or the remainder of
16638 @file{testsuite.at} if include files are not used, contain a sequence of
16639 test groups.  Each test group begins with a call to @code{AT_SETUP},
16640 then an arbitrary number of shell commands or calls to @code{AT_CHECK},
16641 and then completes with a call to @code{AT_CLEANUP}.
16643 @defmac AT_INIT (@ovar{name})
16644 @atindex{INIT}
16645 @c FIXME: Not clear, plus duplication of the information.
16646 Initialize Autotest.  Giving a @var{name} to the test suite is
16647 encouraged if your package includes several test suites.  In any case,
16648 the test suite always displays the package name and version.  It also
16649 inherits the package bug report address.
16650 @end defmac
16652 @defmac AT_COPYRIGHT (@var{copyright-notice})
16653 @atindex{COPYRIGHT}
16654 @cindex Copyright Notice
16655 State that, in addition to the Free Software Foundation's copyright on
16656 the Autotest macros, parts of your test suite are covered by
16657 @var{copyright-notice}.
16659 The @var{copyright-notice} will show up in both the head of
16660 @command{testsuite} and in @samp{testsuite --version}.
16661 @end defmac
16663 @defmac AT_TESTED (@var{executables})
16664 @atindex{TESTED}
16665 Log the file name and answer to @option{--version} of each program in
16666 space-separated list @var{executables}.  Several invocations register
16667 new executables, in other words, don't fear registering one program
16668 several times.
16669 @end defmac
16671 Autotest test suites rely on @env{PATH} to find the tested program.
16672 This avoids the need to generate absolute names of the various tools, and
16673 makes it possible to test installed programs.  Therefore, knowing which
16674 programs are being exercised is crucial to understanding problems in
16675 the test suite itself, or its occasional misuses.  It is a good idea to
16676 also subscribe foreign programs you depend upon, to avoid incompatible
16677 diagnostics.
16679 @sp 1
16681 @defmac AT_SETUP (@var{test-group-name})
16682 @atindex{SETUP}
16683 This macro starts a group of related tests, all to be executed in the
16684 same subshell.  It accepts a single argument, which holds a few words
16685 (no more than about 30 or 40 characters) quickly describing the purpose
16686 of the test group being started.
16687 @end defmac
16689 @defmac AT_KEYWORDS (@var{keywords})
16690 @atindex{KEYWORDS}
16691 Associate the space-separated list of @var{keywords} to the enclosing
16692 test group.  This makes it possible to run ``slices'' of the test suite.
16693 For instance, if some of your test groups exercise some @samp{foo}
16694 feature, then using @samp{AT_KEYWORDS(foo)} lets you run
16695 @samp{./testsuite -k foo} to run exclusively these test groups.  The
16696 @var{title} of the test group is automatically recorded to
16697 @code{AT_KEYWORDS}.
16699 Several invocations within a test group accumulate new keywords.  In
16700 other words, don't fear registering the same keyword several times in a
16701 test group.
16702 @end defmac
16704 @defmac AT_CAPTURE_FILE (@var{file})
16705 @atindex{CAPTURE_FILE}
16706 If the current test group fails, log the contents of @var{file}.
16707 Several identical calls within one test group have no additional effect.
16708 @end defmac
16710 @defmac AT_XFAIL_IF (@var{shell-condition})
16711 @atindex{XFAIL_IF}
16712 Determine whether the test is expected to fail because it is a known
16713 bug (for unsupported features, you should skip the test).
16714 @var{shell-condition} is a shell expression such as a @code{test}
16715 command; you can instantiate this macro many times from within the
16716 same test group, and one of the conditions will be enough to turn
16717 the test into an expected failure.
16718 @end defmac
16720 @defmac AT_CLEANUP
16721 @atindex{CLEANUP}
16722 End the current test group.
16723 @end defmac
16725 @sp 1
16727 @defmac AT_DATA (@var{file}, @var{contents})
16728 @atindex{DATA}
16729 Initialize an input data @var{file} with given @var{contents}.  Of
16730 course, the @var{contents} have to be properly quoted between square
16731 brackets to protect against included commas or spurious M4
16732 expansion.  The contents ought to end with an end of line.
16733 @end defmac
16735 @defmac AT_CHECK (@var{commands}, @dvar{status, @samp{0}}, @dvar{stdout, @samp{}}, @dvar{stderr, @samp{}}, @ovar{run-if-fail}, @ovar{run-if-pass})
16736 @atindex{CHECK}
16737 Execute a test by performing given shell @var{commands}.  These commands
16738 should normally exit with @var{status}, while producing expected
16739 @var{stdout} and @var{stderr} contents.  If @var{commands} exit with
16740 status 77, then the whole test group is skipped.  Otherwise, if this test
16741 fails, run shell commands @var{run-if-fail} or, if this test passes, run shell
16742 commands @var{run-if-pass}.
16744 The @var{commands} @emph{must not} redirect the standard output, nor the
16745 standard error.
16747 If @var{status}, or @var{stdout}, or @var{stderr} is @samp{ignore}, then
16748 the corresponding value is not checked.
16750 The special value @samp{expout} for @var{stdout} means the expected
16751 output of the @var{commands} is the content of the file @file{expout}.
16752 If @var{stdout} is @samp{stdout}, then the standard output of the
16753 @var{commands} is available for further tests in the file @file{stdout}.
16754 Similarly for @var{stderr} with @samp{expout} and @samp{stderr}.
16755 @end defmac
16758 @node testsuite Invocation
16759 @section Running @command{testsuite} Scripts
16760 @cindex @command{testsuite}
16762 Autotest test suites support the following arguments:
16764 @table @option
16765 @item --help
16766 @itemx -h
16767 Display the list of options and exit successfully.
16769 @item --version
16770 @itemx -V
16771 Display the version of the test suite and exit successfully.
16773 @item --clean
16774 @itemx -c
16775 Remove all the files the test suite might have created and exit.  Meant
16776 for @code{clean} Makefile targets.
16778 @item --list
16779 @itemx -l
16780 List all the tests (or only the selection), including their possible
16781 keywords.
16782 @end table
16784 @sp 1
16786 By default all tests are performed (or described with
16787 @option{--list}) in the default environment first silently, then
16788 verbosely, but the environment, set of tests, and verbosity level can be
16789 tuned:
16791 @table @samp
16792 @item @var{variable}=@var{value}
16793 Set the environment @var{variable} to @var{value}.  Use this rather
16794 than @samp{FOO=foo ./testsuite} as debugging scripts would then run in a
16795 different environment.
16797 @cindex @code{AUTOTEST_PATH}
16798 The variable @code{AUTOTEST_PATH} specifies the testing path to prepend
16799 to @env{PATH}.  Relative directory names (not starting with
16800 @samp{/}) are considered to be relative to the top level of the
16801 package being built.  All directories are made absolute, first
16802 starting from the top level @emph{build} tree, then from the
16803 @emph{source} tree.  For instance @samp{./testsuite
16804 AUTOTEST_PATH=tests:bin} for a @file{/src/foo-1.0} source package built
16805 in @file{/tmp/foo} results in @samp{/tmp/foo/tests:/tmp/foo/bin} and
16806 then @samp{/src/foo-1.0/tests:/src/foo-1.0/bin} being prepended to
16807 @env{PATH}.
16809 @item @var{number}
16810 @itemx @var{number}-@var{number}
16811 @itemx @var{number}-
16812 @itemx -@var{number}
16813 Add the corresponding test groups, with obvious semantics, to the
16814 selection.
16816 @item --keywords=@var{keywords}
16817 @itemx -k @var{keywords}
16818 Add to the selection the test groups with title or keywords (arguments
16819 to @code{AT_SETUP} or @code{AT_KEYWORDS}) that match @emph{all} keywords
16820 of the comma separated list @var{keywords}, case-insensitively.  Use
16821 @samp{!} immediately before the keyword to invert the selection for this
16822 keyword.  By default, the keywords match whole words; enclose them in
16823 @samp{.*} to also match parts of words.
16825 For example, running
16827 @example
16828 @kbd{./testsuite -k 'autoupdate,.*FUNC.*'}
16829 @end example
16831 @noindent
16832 will select all tests tagged @samp{autoupdate} @emph{and} with tags
16833 containing @samp{FUNC} (as in @samp{AC_CHECK_FUNC}, @samp{AC_FUNC_FNMATCH},
16834 etc.), while
16836 @example
16837 @kbd{./testsuite -k '!autoupdate' -k '.*FUNC.*'}
16838 @end example
16840 @noindent
16841 will select all tests not tagged @samp{autoupdate} @emph{or} with tags
16842 containing @samp{FUNC}.
16844 @item --errexit
16845 @itemx -e
16846 If any test fails, immediately abort testing.  It implies
16847 @option{--debug}: post test group clean up, debugging script generation,
16848 and logging are inhibited.  This option is meant for the full test
16849 suite, it is not really useful for generated debugging scripts.
16851 @item --verbose
16852 @itemx -v
16853 Force more verbosity in the detailed output of what is being done.  This
16854 is the default for debugging scripts.
16856 @item --debug
16857 @itemx -d
16858 Do not remove the files after a test group was performed ---but they are
16859 still removed @emph{before}, therefore using this option is sane when
16860 running several test groups.  Do not create debugging scripts.  Do not
16861 log (in order to preserve supposedly existing full log file).  This is
16862 the default for debugging scripts, but it can also be useful to debug
16863 the testsuite itself.
16865 @item --trace
16866 @itemx -x
16867 Trigger shell tracing of the test groups.
16868 @end table
16871 @node Making testsuite Scripts
16872 @section Making @command{testsuite} Scripts
16874 For putting Autotest into movement, you need some configuration and
16875 Makefile machinery.  We recommend, at least if your package uses deep or
16876 shallow hierarchies, that you use @file{tests/} as the name of the
16877 directory holding all your tests and their @file{Makefile}.  Here is a
16878 check list of things to do.
16880 @itemize @minus
16882 @item
16883 @cindex @file{package.m4}
16884 Make sure to create the file @file{package.m4}, which defines the
16885 identity of the package.  It must define @code{AT_PACKAGE_STRING}, the
16886 full signature of the package, and @code{AT_PACKAGE_BUGREPORT}, the
16887 address to which bug reports should be sent.  For sake of completeness,
16888 we suggest that you also define @code{AT_PACKAGE_NAME},
16889 @code{AT_PACKAGE_TARNAME}, and @code{AT_PACKAGE_VERSION}.
16890 @xref{Initializing configure}, for a description of these variables.  We
16891 suggest the following Makefile excerpt:
16893 @smallexample
16894 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
16895         @{                                      \
16896           echo '# Signature of the current package.'; \
16897           echo 'm4_define([AT_PACKAGE_NAME],      [@@PACKAGE_NAME@@])'; \
16898           echo 'm4_define([AT_PACKAGE_TARNAME],   [@@PACKAGE_TARNAME@@])'; \
16899           echo 'm4_define([AT_PACKAGE_VERSION],   [@@PACKAGE_VERSION@@])'; \
16900           echo 'm4_define([AT_PACKAGE_STRING],    [@@PACKAGE_STRING@@])'; \
16901           echo 'm4_define([AT_PACKAGE_BUGREPORT], [@@PACKAGE_BUGREPORT@@])'; \
16902         @} >$(srcdir)/package.m4
16903 @end smallexample
16905 @noindent
16906 Be sure to distribute @file{package.m4} and to put it into the source
16907 hierarchy: the test suite ought to be shipped!
16909 @item
16910 Invoke @code{AC_CONFIG_TESTDIR}.
16912 @defmac AC_CONFIG_TESTDIR (@var{directory}, @dvar{test-path, @var{directory}})
16913 @acindex{CONFIG_TESTDIR}
16914 An Autotest test suite is to be configured in @var{directory}.  This
16915 macro requires the instantiation of @file{@var{directory}/atconfig} from
16916 @file{@var{directory}/atconfig.in}, and sets the default
16917 @code{AUTOTEST_PATH} to @var{test-path} (@pxref{testsuite Invocation}).
16918 @end defmac
16920 @item
16921 Still within @file{configure.ac}, as appropriate, ensure that some
16922 @code{AC_CONFIG_FILES} command includes substitution for
16923 @file{tests/atlocal}.
16925 @item
16926 The @file{tests/Makefile.in} should be modified so the validation in
16927 your package is triggered by @samp{make check}.  An example is provided
16928 below.
16929 @end itemize
16931 With Automake, here is a minimal example about how to link @samp{make
16932 check} with a validation suite.
16934 @example
16935 EXTRA_DIST = testsuite.at $(TESTSUITE) atlocal.in
16936 TESTSUITE = $(srcdir)/testsuite
16938 check-local: atconfig atlocal $(TESTSUITE)
16939         $(SHELL) $(TESTSUITE) $(TESTSUITEFLAGS)
16941 installcheck-local: atconfig atlocal $(TESTSUITE)
16942         $(SHELL) $(TESTSUITE) AUTOTEST_PATH="$(bindir)" \
16943           $(TESTSUITEFLAGS)
16945 AUTOTEST = $(AUTOM4TE) --language=autotest
16946 $(TESTSUITE): $(srcdir)/testsuite.at
16947         $(AUTOTEST) -I $(srcdir) -o $@@.tmp $@@.at
16948         mv $@@.tmp $@@
16949 @end example
16951 You might want to list explicitly the dependencies, i.e., the list of
16952 the files @file{testsuite.at} includes.
16954 With strict Autoconf, you might need to add lines inspired from the
16955 following:
16957 @example
16958 subdir = tests
16960 atconfig: $(top_builddir)/config.status
16961         cd $(top_builddir) && \
16962            $(SHELL) ./config.status $(subdir)/$@@
16964 atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
16965         cd $(top_builddir) && \
16966            $(SHELL) ./config.status $(subdir)/$@@
16967 @end example
16969 @noindent
16970 and manage to have @file{atconfig.in} and @code{$(EXTRA_DIST)}
16971 distributed.
16975 @c =============================== Frequent Autoconf Questions, with answers
16977 @node FAQ
16978 @chapter Frequent Autoconf Questions, with answers
16980 Several questions about Autoconf come up occasionally.  Here some of them
16981 are addressed.
16983 @menu
16984 * Distributing::                Distributing @command{configure} scripts
16985 * Why GNU m4::                  Why not use the standard M4?
16986 * Bootstrapping::               Autoconf and @acronym{GNU} M4 require each other?
16987 * Why Not Imake::               Why @acronym{GNU} uses @command{configure} instead of Imake
16988 * Defining Directories::        Passing @code{datadir} to program
16989 * autom4te.cache::              What is it?  Can I remove it?
16990 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
16991 @end menu
16993 @node Distributing
16994 @section Distributing @command{configure} Scripts
16995 @cindex License
16997 @display
16998 What are the restrictions on distributing @command{configure}
16999 scripts that Autoconf generates?  How does that affect my
17000 programs that use them?
17001 @end display
17003 There are no restrictions on how the configuration scripts that Autoconf
17004 produces may be distributed or used.  In Autoconf version 1, they were
17005 covered by the @acronym{GNU} General Public License.  We still encourage
17006 software authors to distribute their work under terms like those of the
17007 @acronym{GPL}, but doing so is not required to use Autoconf.
17009 Of the other files that might be used with @command{configure},
17010 @file{config.h.in} is under whatever copyright you use for your
17011 @file{configure.ac}.  @file{config.sub} and @file{config.guess} have an
17012 exception to the @acronym{GPL} when they are used with an Autoconf-generated
17013 @command{configure} script, which permits you to distribute them under the
17014 same terms as the rest of your package.  @file{install-sh} is from the X
17015 Consortium and is not copyrighted.
17017 @node Why GNU m4
17018 @section Why Require @acronym{GNU} M4?
17020 @display
17021 Why does Autoconf require @acronym{GNU} M4?
17022 @end display
17024 Many M4 implementations have hard-coded limitations on the size and
17025 number of macros that Autoconf exceeds.  They also lack several
17026 builtin macros that it would be difficult to get along without in a
17027 sophisticated application like Autoconf, including:
17029 @example
17030 m4_builtin
17031 m4_indir
17032 m4_bpatsubst
17033 __file__
17034 __line__
17035 @end example
17037 Autoconf requires version 1.4.3 or later of @acronym{GNU} M4.
17039 Since only software maintainers need to use Autoconf, and since @acronym{GNU}
17040 M4 is simple to configure and install, it seems reasonable to require
17041 @acronym{GNU} M4 to be installed also.  Many maintainers of @acronym{GNU} and
17042 other free software already have most of the @acronym{GNU} utilities
17043 installed, since they prefer them.
17045 @node Bootstrapping
17046 @section How Can I Bootstrap?
17047 @cindex Bootstrap
17049 @display
17050 If Autoconf requires @acronym{GNU} M4 and @acronym{GNU} M4 has an Autoconf
17051 @command{configure} script, how do I bootstrap?  It seems like a chicken
17052 and egg problem!
17053 @end display
17055 This is a misunderstanding.  Although @acronym{GNU} M4 does come with a
17056 @command{configure} script produced by Autoconf, Autoconf is not required
17057 in order to run the script and install @acronym{GNU} M4.  Autoconf is only
17058 required if you want to change the M4 @command{configure} script, which few
17059 people have to do (mainly its maintainer).
17061 @node Why Not Imake
17062 @section Why Not Imake?
17063 @cindex Imake
17065 @display
17066 Why not use Imake instead of @command{configure} scripts?
17067 @end display
17069 Several people have written addressing this question, so I include
17070 adaptations of their explanations here.
17072 The following answer is based on one written by Richard Pixley:
17074 @quotation
17075 Autoconf generated scripts frequently work on machines that it has
17076 never been set up to handle before.  That is, it does a good job of
17077 inferring a configuration for a new system.  Imake cannot do this.
17079 Imake uses a common database of host specific data.  For X11, this makes
17080 sense because the distribution is made as a collection of tools, by one
17081 central authority who has control over the database.
17083 @acronym{GNU} tools are not released this way.  Each @acronym{GNU} tool has a
17084 maintainer; these maintainers are scattered across the world.  Using a
17085 common database would be a maintenance nightmare.  Autoconf may appear
17086 to be this kind of database, but in fact it is not.  Instead of listing
17087 host dependencies, it lists program requirements.
17089 If you view the @acronym{GNU} suite as a collection of native tools, then the
17090 problems are similar.  But the @acronym{GNU} development tools can be
17091 configured as cross tools in almost any host+target permutation.  All of
17092 these configurations can be installed concurrently.  They can even be
17093 configured to share host independent files across hosts.  Imake doesn't
17094 address these issues.
17096 Imake templates are a form of standardization.  The @acronym{GNU} coding
17097 standards address the same issues without necessarily imposing the same
17098 restrictions.
17099 @end quotation
17102 Here is some further explanation, written by Per Bothner:
17104 @quotation
17105 One of the advantages of Imake is that it easy to generate large
17106 Makefiles using @code{cpp}'s @samp{#include} and macro mechanisms.
17107 However, @code{cpp} is not programmable: it has limited conditional
17108 facilities, and no looping.  And @code{cpp} cannot inspect its
17109 environment.
17111 All of these problems are solved by using @code{sh} instead of
17112 @code{cpp}.  The shell is fully programmable, has macro substitution,
17113 can execute (or source) other shell scripts, and can inspect its
17114 environment.
17115 @end quotation
17118 Paul Eggert elaborates more:
17120 @quotation
17121 With Autoconf, installers need not assume that Imake itself is already
17122 installed and working well.  This may not seem like much of an advantage
17123 to people who are accustomed to Imake.  But on many hosts Imake is not
17124 installed or the default installation is not working well, and requiring
17125 Imake to install a package hinders the acceptance of that package on
17126 those hosts.  For example, the Imake template and configuration files
17127 might not be installed properly on a host, or the Imake build procedure
17128 might wrongly assume that all source files are in one big directory
17129 tree, or the Imake configuration might assume one compiler whereas the
17130 package or the installer needs to use another, or there might be a
17131 version mismatch between the Imake expected by the package and the Imake
17132 supported by the host.  These problems are much rarer with Autoconf,
17133 where each package comes with its own independent configuration
17134 processor.
17136 Also, Imake often suffers from unexpected interactions between
17137 @command{make} and the installer's C preprocessor.  The fundamental problem
17138 here is that the C preprocessor was designed to preprocess C programs,
17139 not @file{Makefile}s.  This is much less of a problem with Autoconf,
17140 which uses the general-purpose preprocessor M4, and where the
17141 package's author (rather than the installer) does the preprocessing in a
17142 standard way.
17143 @end quotation
17146 Finally, Mark Eichin notes:
17148 @quotation
17149 Imake isn't all that extensible, either.  In order to add new features to
17150 Imake, you need to provide your own project template, and duplicate most
17151 of the features of the existing one.  This means that for a sophisticated
17152 project, using the vendor-provided Imake templates fails to provide any
17153 leverage---since they don't cover anything that your own project needs
17154 (unless it is an X11 program).
17156 On the other side, though:
17158 The one advantage that Imake has over @command{configure}:
17159 @file{Imakefile}s tend to be much shorter (likewise, less redundant)
17160 than @file{Makefile.in}s.  There is a fix to this, however---at least
17161 for the Kerberos V5 tree, we've modified things to call in common
17162 @file{post.in} and @file{pre.in} @file{Makefile} fragments for the
17163 entire tree.  This means that a lot of common things don't have to be
17164 duplicated, even though they normally are in @command{configure} setups.
17165 @end quotation
17168 @node Defining Directories
17169 @section How Do I @code{#define} Installation Directories?
17171 @display
17172 My program needs library files, installed in @code{datadir} and
17173 similar.  If I use
17175 @example
17176 AC_DEFINE_UNQUOTED([DATADIR], [$datadir],
17177   [Define to the read-only architecture-independent
17178    data directory.])
17179 @end example
17181 @noindent
17182 I get
17184 @example
17185 #define DATADIR "$@{prefix@}/share"
17186 @end example
17187 @end display
17189 As already explained, this behavior is on purpose, mandated by the
17190 @acronym{GNU} Coding Standards, see @ref{Installation Directory
17191 Variables}.  There are several means to achieve a similar goal:
17193 @itemize @minus
17194 @item
17195 Do not use @code{AC_DEFINE} but use your @file{Makefile} to pass the
17196 actual value of @code{datadir} via compilation flags, see
17197 @ref{Installation Directory Variables}, for the details.
17199 @item
17200 This solution can be simplified when compiling a program: you may either
17201 extend the @code{CPPFLAGS}:
17203 @example
17204 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
17205 @end example
17207 @noindent
17208 or create a dedicated header file:
17210 @example
17211 DISTCLEANFILES = datadir.h
17212 datadir.h: Makefile
17213         echo '#define DATADIR "$(datadir)"' >$@@
17214 @end example
17216 @item
17217 Use @code{AC_DEFINE} but have @command{configure} compute the literal
17218 value of @code{datadir} and others.  Many people have wrapped macros to
17219 automate this task.  For instance, the macro @code{AC_DEFINE_DIR} from
17220 the @uref{http://www.gnu.org/software/ac-archive/, @acronym{GNU} Autoconf Macro
17221 Archive}.
17223 This solution does not conform to the @acronym{GNU} Coding Standards.
17225 @item
17226 Note that all the previous solutions hard wire the absolute name of
17227 these directories in the executables, which is not a good property.  You
17228 may try to compute the names relative to @code{prefix}, and try to
17229 find @code{prefix} at runtime, this way your package is relocatable.
17230 Some macros are already available to address this issue: see
17231 @code{adl_COMPUTE_RELATIVE_PATHS} and
17232 @code{adl_COMPUTE_STANDARD_RELATIVE_PATHS} on the
17233 @uref{http://www.gnu.org/software/ac-archive/,
17234 @acronym{GNU} Autoconf Macro Archive}.
17235 @end itemize
17238 @node autom4te.cache
17239 @section What is @file{autom4te.cache}?
17241 @display
17242 What is this directory @file{autom4te.cache}?  Can I safely remove it?
17243 @end display
17245 In the @acronym{GNU} Build System, @file{configure.ac} plays a central
17246 role and is read by many tools: @command{autoconf} to create
17247 @file{configure}, @command{autoheader} to create @file{config.h.in},
17248 @command{automake} to create @file{Makefile.in}, @command{autoscan} to
17249 check the completeness of @file{configure.ac}, @command{autoreconf} to
17250 check the @acronym{GNU} Build System components that are used.  To
17251 ``read @file{configure.ac}'' actually means to compile it with M4,
17252 which can be a very long process for complex @file{configure.ac}.
17254 This is why all these tools, instead of running directly M4, invoke
17255 @command{autom4te} (@pxref{autom4te Invocation}) which, while answering to
17256 a specific demand, stores additional information in
17257 @file{autom4te.cache} for future runs.  For instance, if you run
17258 @command{autoconf}, behind the scenes, @command{autom4te} will also
17259 store information for the other tools, so that when you invoke
17260 @command{autoheader} or @command{automake} etc., re-processing
17261 @file{configure.ac} is not needed.  The speed up is frequently of 30%,
17262 and is increasing with the size of @file{configure.ac}.
17264 But it is and remains being simply a cache: you can safely remove it.
17266 @sp 1
17268 @display
17269 Can I permanently get rid of it?
17270 @end display
17272 The creation of this cache can be disabled from
17273 @file{~/.autom4te.cfg}, see @ref{Customizing autom4te}, for more
17274 details.  You should be aware that disabling the cache slows down the
17275 Autoconf test suite by 40%.  The more @acronym{GNU} Build System
17276 components are used, the more the cache is useful; for instance
17277 running @samp{autoreconf -f} on the Core Utilities is twice slower without
17278 the cache @emph{although @option{--force} implies that the cache is
17279 not fully exploited}, and eight times slower than without
17280 @option{--force}.
17283 @node Present But Cannot Be Compiled
17284 @section Header Present But Cannot Be Compiled
17286 The most important guideline to bear in mind when checking for
17287 features is to mimic as much as possible the intended use.
17288 Unfortunately, old versions of @code{AC_CHECK_HEADER} and
17289 @code{AC_CHECK_HEADERS} failed to follow this idea, and called
17290 the preprocessor, instead of the compiler, to check for headers.  As a
17291 result, incompatibilities between headers went unnoticed during
17292 configuration, and maintainers finally had to deal with this issue
17293 elsewhere.
17295 As of Autoconf 2.56 both checks are performed, and @code{configure}
17296 complains loudly if the compiler and the preprocessor do not agree.
17297 For the time being the result used is that of the preprocessor, to give
17298 maintainers time to adjust their @file{configure.ac}, but in the
17299 future, only the compiler will be considered.
17301 Consider the following example:
17303 @smallexample
17304 $ @kbd{cat number.h}
17305 typedef int number;
17306 $ @kbd{cat pi.h}
17307 const number pi = 3;
17308 $ @kbd{cat configure.ac}
17309 AC_INIT([Example], [1.0], [bug-example@@example.org])
17310 AC_CHECK_HEADERS([pi.h])
17311 $ @kbd{autoconf -Wall}
17312 $ @kbd{./configure}
17313 checking for gcc... gcc
17314 checking for C compiler default output file name... a.out
17315 checking whether the C compiler works... yes
17316 checking whether we are cross compiling... no
17317 checking for suffix of executables...
17318 checking for suffix of object files... o
17319 checking whether we are using the GNU C compiler... yes
17320 checking whether gcc accepts -g... yes
17321 checking for gcc option to accept ISO C89... none needed
17322 checking how to run the C preprocessor... gcc -E
17323 checking for grep that handles long lines and -e... grep
17324 checking for egrep... grep -E
17325 checking for ANSI C header files... yes
17326 checking for sys/types.h... yes
17327 checking for sys/stat.h... yes
17328 checking for stdlib.h... yes
17329 checking for string.h... yes
17330 checking for memory.h... yes
17331 checking for strings.h... yes
17332 checking for inttypes.h... yes
17333 checking for stdint.h... yes
17334 checking for unistd.h... yes
17335 checking pi.h usability... no
17336 checking pi.h presence... yes
17337 configure: WARNING: pi.h: present but cannot be compiled
17338 configure: WARNING: pi.h:     check for missing prerequisite headers?
17339 configure: WARNING: pi.h: see the Autoconf documentation
17340 configure: WARNING: pi.h:     section "Present But Cannot Be Compiled"
17341 configure: WARNING: pi.h: proceeding with the preprocessor's result
17342 configure: WARNING: pi.h: in the future, the compiler will take precedence
17343 configure: WARNING:     ## -------------------------------------- ##
17344 configure: WARNING:     ## Report this to bug-example@@example.org ##
17345 configure: WARNING:     ## -------------------------------------- ##
17346 checking for pi.h... yes
17347 @end smallexample
17349 @noindent
17350 The proper way the handle this case is using the fourth argument
17351 (@pxref{Generic Headers}):
17353 @example
17354 $ @kbd{cat configure.ac}
17355 AC_INIT([Example], [1.0], [bug-example@@example.org])
17356 AC_CHECK_HEADERS([number.h pi.h], [], [],
17357 [[#if HAVE_NUMBER_H
17358 # include <number.h>
17359 #endif
17361 $ @kbd{autoconf -Wall}
17362 $ @kbd{./configure}
17363 checking for gcc... gcc
17364 checking for C compiler default output... a.out
17365 checking whether the C compiler works... yes
17366 checking whether we are cross compiling... no
17367 checking for suffix of executables...
17368 checking for suffix of object files... o
17369 checking whether we are using the GNU C compiler... yes
17370 checking whether gcc accepts -g... yes
17371 checking for gcc option to accept ANSI C... none needed
17372 checking for number.h... yes
17373 checking for pi.h... yes
17374 @end example
17376 See @ref{Particular Headers}, for a list of headers with their
17377 prerequisite.
17379 @c ===================================================== History of Autoconf.
17381 @node History
17382 @chapter History of Autoconf
17383 @cindex History of autoconf
17385 You may be wondering, Why was Autoconf originally written?  How did it
17386 get into its present form?  (Why does it look like gorilla spit?)  If
17387 you're not wondering, then this chapter contains no information useful
17388 to you, and you might as well skip it.  If you @emph{are} wondering,
17389 then let there be light@enddots{}
17391 @menu
17392 * Genesis::                     Prehistory and naming of @command{configure}
17393 * Exodus::                      The plagues of M4 and Perl
17394 * Leviticus::                   The priestly code of portability arrives
17395 * Numbers::                     Growth and contributors
17396 * Deuteronomy::                 Approaching the promises of easy configuration
17397 @end menu
17399 @node Genesis
17400 @section Genesis
17402 In June 1991 I was maintaining many of the @acronym{GNU} utilities for the
17403 Free Software Foundation.  As they were ported to more platforms and
17404 more programs were added, the number of @option{-D} options that users
17405 had to select in the @file{Makefile} (around 20) became burdensome.
17406 Especially for me---I had to test each new release on a bunch of
17407 different systems.  So I wrote a little shell script to guess some of
17408 the correct settings for the fileutils package, and released it as part
17409 of fileutils 2.0.  That @command{configure} script worked well enough that
17410 the next month I adapted it (by hand) to create similar @command{configure}
17411 scripts for several other @acronym{GNU} utilities packages.  Brian Berliner
17412 also adapted one of my scripts for his @acronym{CVS} revision control system.
17414 Later that summer, I learned that Richard Stallman and Richard Pixley
17415 were developing similar scripts to use in the @acronym{GNU} compiler tools;
17416 so I adapted my @command{configure} scripts to support their evolving
17417 interface: using the file name @file{Makefile.in} as the templates;
17418 adding @samp{+srcdir}, the first option (of many); and creating
17419 @file{config.status} files.
17421 @node Exodus
17422 @section Exodus
17424 As I got feedback from users, I incorporated many improvements, using
17425 Emacs to search and replace, cut and paste, similar changes in each of
17426 the scripts.  As I adapted more @acronym{GNU} utilities packages to use
17427 @command{configure} scripts, updating them all by hand became impractical.
17428 Rich Murphey, the maintainer of the @acronym{GNU} graphics utilities, sent me
17429 mail saying that the @command{configure} scripts were great, and asking if
17430 I had a tool for generating them that I could send him.  No, I thought,
17431 but I should!  So I started to work out how to generate them.  And the
17432 journey from the slavery of hand-written @command{configure} scripts to the
17433 abundance and ease of Autoconf began.
17435 Cygnus @command{configure}, which was being developed at around that time,
17436 is table driven; it is meant to deal mainly with a discrete number of
17437 system types with a small number of mainly unguessable features (such as
17438 details of the object file format).  The automatic configuration system
17439 that Brian Fox had developed for Bash takes a similar approach.  For
17440 general use, it seems to me a hopeless cause to try to maintain an
17441 up-to-date database of which features each variant of each operating
17442 system has.  It's easier and more reliable to check for most features on
17443 the fly---especially on hybrid systems that people have hacked on
17444 locally or that have patches from vendors installed.
17446 I considered using an architecture similar to that of Cygnus
17447 @command{configure}, where there is a single @command{configure} script that
17448 reads pieces of @file{configure.in} when run.  But I didn't want to have
17449 to distribute all of the feature tests with every package, so I settled
17450 on having a different @command{configure} made from each
17451 @file{configure.in} by a preprocessor.  That approach also offered more
17452 control and flexibility.
17454 I looked briefly into using the Metaconfig package, by Larry Wall,
17455 Harlan Stenn, and Raphael Manfredi, but I decided not to for several
17456 reasons.  The @command{Configure} scripts it produces are interactive,
17457 which I find quite inconvenient; I didn't like the ways it checked for
17458 some features (such as library functions); I didn't know that it was
17459 still being maintained, and the @command{Configure} scripts I had
17460 seen didn't work on many modern systems (such as System V R4 and NeXT);
17461 it wasn't very flexible in what it could do in response to a feature's
17462 presence or absence; I found it confusing to learn; and it was too big
17463 and complex for my needs (I didn't realize then how much Autoconf would
17464 eventually have to grow).
17466 I considered using Perl to generate my style of @command{configure}
17467 scripts, but decided that M4 was better suited to the job of simple
17468 textual substitutions: it gets in the way less, because output is
17469 implicit.  Plus, everyone already has it.  (Initially I didn't rely on
17470 the @acronym{GNU} extensions to M4.)  Also, some of my friends at the
17471 University of Maryland had recently been putting M4 front ends on
17472 several programs, including @code{tvtwm}, and I was interested in trying
17473 out a new language.
17475 @node Leviticus
17476 @section Leviticus
17478 Since my @command{configure} scripts determine the system's capabilities
17479 automatically, with no interactive user intervention, I decided to call
17480 the program that generates them Autoconfig.  But with a version number
17481 tacked on, that name would be too long for old Unix file systems,
17482 so I shortened it to Autoconf.
17484 In the fall of 1991 I called together a group of fellow questers after
17485 the Holy Grail of portability (er, that is, alpha testers) to give me
17486 feedback as I encapsulated pieces of my handwritten scripts in M4 macros
17487 and continued to add features and improve the techniques used in the
17488 checks.  Prominent among the testers were Fran@,{c}ois Pinard, who came up
17489 with the idea of making an Autoconf shell script to run M4
17490 and check for unresolved macro calls; Richard Pixley, who suggested
17491 running the compiler instead of searching the file system to find
17492 include files and symbols, for more accurate results; Karl Berry, who
17493 got Autoconf to configure @TeX{} and added the macro index to the
17494 documentation; and Ian Lance Taylor, who added support for creating a C
17495 header file as an alternative to putting @option{-D} options in a
17496 @file{Makefile}, so he could use Autoconf for his @acronym{UUCP} package.
17497 The alpha testers cheerfully adjusted their files again and again as the
17498 names and calling conventions of the Autoconf macros changed from
17499 release to release.  They all contributed many specific checks, great
17500 ideas, and bug fixes.
17502 @node Numbers
17503 @section Numbers
17505 In July 1992, after months of alpha testing, I released Autoconf 1.0,
17506 and converted many @acronym{GNU} packages to use it.  I was surprised by how
17507 positive the reaction to it was.  More people started using it than I
17508 could keep track of, including people working on software that wasn't
17509 part of the @acronym{GNU} Project (such as TCL, FSP, and Kerberos V5).
17510 Autoconf continued to improve rapidly, as many people using the
17511 @command{configure} scripts reported problems they encountered.
17513 Autoconf turned out to be a good torture test for M4 implementations.
17514 Unix M4 started to dump core because of the length of the
17515 macros that Autoconf defined, and several bugs showed up in @acronym{GNU}
17516 M4 as well.  Eventually, we realized that we needed to use some
17517 features that only @acronym{GNU} M4 has.  4.3@acronym{BSD} M4, in
17518 particular, has an impoverished set of builtin macros; the System V
17519 version is better, but still doesn't provide everything we need.
17521 More development occurred as people put Autoconf under more stresses
17522 (and to uses I hadn't anticipated).  Karl Berry added checks for X11.
17523 david zuhn contributed C++ support.  Fran@,{c}ois Pinard made it diagnose
17524 invalid arguments.  Jim Blandy bravely coerced it into configuring
17525 @acronym{GNU} Emacs, laying the groundwork for several later improvements.
17526 Roland McGrath got it to configure the @acronym{GNU} C Library, wrote the
17527 @command{autoheader} script to automate the creation of C header file
17528 templates, and added a @option{--verbose} option to @command{configure}.
17529 Noah Friedman added the @option{--autoconf-dir} option and
17530 @code{AC_MACRODIR} environment variable.  (He also coined the term
17531 @dfn{autoconfiscate} to mean ``adapt a software package to use
17532 Autoconf''.)  Roland and Noah improved the quoting protection in
17533 @code{AC_DEFINE} and fixed many bugs, especially when I got sick of
17534 dealing with portability problems from February through June, 1993.
17536 @node Deuteronomy
17537 @section Deuteronomy
17539 A long wish list for major features had accumulated, and the effect of
17540 several years of patching by various people had left some residual
17541 cruft.  In April 1994, while working for Cygnus Support, I began a major
17542 revision of Autoconf.  I added most of the features of the Cygnus
17543 @command{configure} that Autoconf had lacked, largely by adapting the
17544 relevant parts of Cygnus @command{configure} with the help of david zuhn
17545 and Ken Raeburn.  These features include support for using
17546 @file{config.sub}, @file{config.guess}, @option{--host}, and
17547 @option{--target}; making links to files; and running @command{configure}
17548 scripts in subdirectories.  Adding these features enabled Ken to convert
17549 @acronym{GNU} @code{as}, and Rob Savoye to convert Deja@acronym{GNU}, to using
17550 Autoconf.
17552 I added more features in response to other peoples' requests.  Many
17553 people had asked for @command{configure} scripts to share the results of
17554 the checks between runs, because (particularly when configuring a large
17555 source tree, like Cygnus does) they were frustratingly slow.  Mike
17556 Haertel suggested adding site-specific initialization scripts.  People
17557 distributing software that had to unpack on MS-DOS asked for a way to
17558 override the @file{.in} extension on the file names, which produced file
17559 names like @file{config.h.in} containing two dots.  Jim Avera did an
17560 extensive examination of the problems with quoting in @code{AC_DEFINE}
17561 and @code{AC_SUBST}; his insights led to significant improvements.
17562 Richard Stallman asked that compiler output be sent to @file{config.log}
17563 instead of @file{/dev/null}, to help people debug the Emacs
17564 @command{configure} script.
17566 I made some other changes because of my dissatisfaction with the quality
17567 of the program.  I made the messages showing results of the checks less
17568 ambiguous, always printing a result.  I regularized the names of the
17569 macros and cleaned up coding style inconsistencies.  I added some
17570 auxiliary utilities that I had developed to help convert source code
17571 packages to use Autoconf.  With the help of Fran@,{c}ois Pinard, I made
17572 the macros not interrupt each others' messages.  (That feature revealed
17573 some performance bottlenecks in @acronym{GNU} M4, which he hastily
17574 corrected!)  I reorganized the documentation around problems people want
17575 to solve.  And I began a test suite, because experience had shown that
17576 Autoconf has a pronounced tendency to regress when we change it.
17578 Again, several alpha testers gave invaluable feedback, especially
17579 Fran@,{c}ois Pinard, Jim Meyering, Karl Berry, Rob Savoye, Ken Raeburn,
17580 and Mark Eichin.
17582 Finally, version 2.0 was ready.  And there was much rejoicing.  (And I
17583 have free time again.  I think.  Yeah, right.)
17586 @c ========================================================== Appendices
17588 @node Copying This Manual
17589 @appendix Copying This Manual
17590 @cindex License
17592 @menu
17593 * GNU Free Documentation License::  License for copying this manual
17594 @end menu
17596 @include fdl.texi
17598 @node Indices
17599 @appendix Indices
17601 @menu
17602 * Environment Variable Index::  Index of environment variables used
17603 * Output Variable Index::       Index of variables set in output files
17604 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
17605 * Autoconf Macro Index::        Index of Autoconf macros
17606 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
17607 * Autotest Macro Index::        Index of Autotest macros
17608 * Program & Function Index::    Index of those with portability problems
17609 * Concept Index::               General index
17610 @end menu
17612 @node Environment Variable Index
17613 @appendixsec Environment Variable Index
17615 This is an alphabetical list of the environment variables that Autoconf
17616 checks.
17618 @printindex ev
17620 @node Output Variable Index
17621 @appendixsec Output Variable Index
17623 This is an alphabetical list of the variables that Autoconf can
17624 substitute into files that it creates, typically one or more
17625 @file{Makefile}s.  @xref{Setting Output Variables}, for more information
17626 on how this is done.
17628 @printindex ov
17630 @node Preprocessor Symbol Index
17631 @appendixsec Preprocessor Symbol Index
17633 This is an alphabetical list of the C preprocessor symbols that the
17634 Autoconf macros define.  To work with Autoconf, C source code needs to
17635 use these names in @code{#if} directives.
17637 @printindex cv
17639 @node Autoconf Macro Index
17640 @appendixsec Autoconf Macro Index
17642 This is an alphabetical list of the Autoconf macros.
17643 @ifset shortindexflag
17644 To make the list easier to use, the macros are listed without their
17645 preceding @samp{AC_}.
17646 @end ifset
17648 @printindex AC
17650 @node M4 Macro Index
17651 @appendixsec M4 Macro Index
17653 This is an alphabetical list of the M4, M4sugar, and M4sh macros.
17654 @ifset shortindexflag
17655 To make the list easier to use, the macros are listed without their
17656 preceding @samp{m4_} or @samp{AS_}.
17657 @end ifset
17659 @printindex MS
17661 @node Autotest Macro Index
17662 @appendixsec Autotest Macro Index
17664 This is an alphabetical list of the Autotest macros.
17665 @ifset shortindexflag
17666 To make the list easier to use, the macros are listed without their
17667 preceding @samp{AT_}.
17668 @end ifset
17670 @printindex AT
17672 @node Program & Function Index
17673 @appendixsec Program and Function Index
17675 This is an alphabetical list of the programs and functions which
17676 portability is discussed in this document.
17678 @printindex pr
17680 @node Concept Index
17681 @appendixsec Concept Index
17683 This is an alphabetical list of the files, tools, and concepts
17684 introduced in this document.
17686 @printindex cp
17688 @bye
17690 @c  LocalWords:  texinfo setfilename autoconf texi settitle setchapternewpage
17691 @c  LocalWords:  setcontentsaftertitlepage finalout ARG ovar varname dvar acx
17692 @c  LocalWords:  makeinfo dvi defcodeindex ev ov CPP cv Autotest mv defindex fn
17693 @c  LocalWords:  shortindexflag iftex ifset acindex ACindex ifclear ahindex fu
17694 @c  LocalWords:  asindex MSindex atindex ATindex auindex hdrindex prindex FIXME
17695 @c  LocalWords:  msindex alloca fnindex Aaarg indices FSF's dircategory ifnames
17696 @c  LocalWords:  direntry autoscan autoreconf autoheader autoupdate config FDs
17697 @c  LocalWords:  testsuite titlepage Elliston Demaille vskip filll ifnottex hmm
17698 @c  LocalWords:  insertcopying Autoconf's detailmenu Automake Libtool Posix ois
17699 @c  LocalWords:  Systemology Checkpointing Changequote INTERCAL changequote dfn
17700 @c  LocalWords:  Quadrigraphs builtins Shellology acconfig Bugward LIBOBJ Imake
17701 @c  LocalWords:  LIBOBJS IFELSE cindex flushright Pinard Metaconfig uref Simons
17702 @c  LocalWords:  filesystems distclean uninstall noindent versioning Tromey dir
17703 @c  LocalWords:  SAMS samp aclocal acsite underquoted emph itemx prepend SUBST
17704 @c  LocalWords:  evindex automake Gettext autopoint gettext symlink libtoolize
17705 @c  LocalWords:  defmac INIT tarname ovindex cvindex BUGREPORT PREREQ asis PROG
17706 @c  LocalWords:  SRCDIR srcdir globbing afterwards cmds foos fooo foooo init cd
17707 @c  LocalWords:  builddir timestamp src Imakefile chmod defvar CFLAGS CPPFLAGS
17708 @c  LocalWords:  CXXFLAGS DEFS DHAVE defvarx FCFLAGS FFLAGS LDFLAGS bindir GCC
17709 @c  LocalWords:  datadir datarootdir docdir dvidir htmldir libdir ifnothtml kbd
17710 @c  LocalWords:  includedir infodir libexecdir localedir localstatedir mandir
17711 @c  LocalWords:  oldincludedir pdfdir PDF psdir PostScript sbindir sysconfdir
17712 @c  LocalWords:  sharedstatedir DDATADIR sed tmp pkgdatadir VPATH conf unistd
17713 @c  LocalWords:  undef endif builtin FUNCS ifndef STACKSEG getb GETB YMP fubar
17714 @c  LocalWords:  PRE dest SUBDIRS subdirs fi struct STDC stdlib stddef INTTYPES
17715 @c  LocalWords:  inttypes STDINT stdint AWK AIX Solaris NeXT env EGREP FGREP yy
17716 @c  LocalWords:  LEXLIB YYTEXT lfl nonportable Automake's LN RANLIB byacc INETD
17717 @c  LocalWords:  inetd prog PROGS progs ranlib lmp lXt lX nsl gethostbyname UX
17718 @c  LocalWords:  NextStep isinf isnan glibc IRIX sunmath lm lsunmath pre sizeof
17719 @c  LocalWords:  ld inline malloc OSF putenv setenv FreeBSD realloc SunOS MinGW
17720 @c  LocalWords:  snprintf vsnprintf sprintf vsprintf sscanf gcc strerror ifdef
17721 @c  LocalWords:  strnlen sysconf PAGESIZE unsetenv va fallback memcpy dst FUNC
17722 @c  LocalWords:  PowerPC GNUC libPW pragma Olibcalls CHOWN chown CLOSEDIR VFORK
17723 @c  LocalWords:  closedir FNMATCH fnmatch vfork FSEEKO LARGEFILE fseeko SVR sc
17724 @c  LocalWords:  largefile GETGROUPS getgroups GETLOADAVG DGUX UMAX NLIST KMEM
17725 @c  LocalWords:  GETLODAVG SETGID getloadavg nlist setgid setuid GETMNTENT irix
17726 @c  LocalWords:  getmntent UnixWare GETPGRP getpgid getpgrp Posix's pid LSTAT
17727 @c  LocalWords:  lstat rpl MEMCMP memcmp OpenStep MBRTOWC mbrtowc MKTIME mktime
17728 @c  LocalWords:  localtime MMAP mmap OBSTACK obstack obstacks ARGTYPES timeval
17729 @c  LocalWords:  SETPGRP setpgrp defmacx Hurd SETVBUF setvbuf STRCOLL strcoll
17730 @c  LocalWords:  STRTOD strtod DECL STRFTIME strftime SCO UTIME utime VPRINTF
17731 @c  LocalWords:  DOPRNT vprintf doprnt sp unfixable LIBSOURCE LIBSOURCES Eggert
17732 @c  LocalWords:  linux netinet ia Tru XFree DIRENT NDIR dirent ndir multitable
17733 @c  LocalWords:  NAMLEN strlen namlen MKDEV SYSMACROS makedev RESOLV resolv DNS
17734 @c  LocalWords:  inet structs NAMESER arpa NETDB netdb UTekV UTS autom GCC's kB
17735 @c  LocalWords:  STDBOOL BOOL stdbool conformant cplusplus bool Bool stdarg tm
17736 @c  LocalWords:  ctype strchr strrchr rindex bcopy memmove memchr WEXITSTATUS
17737 @c  LocalWords:  WIFEXITED TIOCGWINSZ GWINSZ termios preprocess preprocessable
17738 @c  LocalWords:  DECLS strdup calloc BLKSIZE blksize RDEV rdev TZNAME tzname pw
17739 @c  LocalWords:  passwd gecos pwd MBSTATE mbstate wchar RETSIGTYPE hup UID uid
17740 @c  LocalWords:  gid ptrdiff uintmax EXEEXT OBJEXT Ae Onolimit conftest AXP str
17741 @c  LocalWords:  ALIGNOF WERROR Werror cpp HP's WorkShop egcs un fied stdc CXX
17742 @c  LocalWords:  varargs BIGENDIAN Endianness SPARC endianness grep'ed CONST FC
17743 @c  LocalWords:  const STRINGIZE stringizing PARAMS unprotoize protos KCC cxx
17744 @c  LocalWords:  xlC aCC CXXCPP FREEFORM xlf FLIBS FCLIBS ish SRCEXT XTRA LFS
17745 @c  LocalWords:  ISC lcposix MINIX Minix conditionalized inlines hw dD confdefs
17746 @c  LocalWords:  fputs stdout PREPROC ar UFS HFS QNX realtime fstype STATVFS se
17747 @c  LocalWords:  statvfs STATFS statfs func machfile hdr lelf raboof DEFUN GTK
17748 @c  LocalWords:  GTKMM Grmph ified ine defn baz EOF qar Ahhh changecom algol io
17749 @c  LocalWords:  changeword quadrigraphs quadrigraph dnl SGI atoi overquoting
17750 @c  LocalWords:  Aas Wcross sep args namespace undefine bpatsubst popdef dquote
17751 @c  LocalWords:  bregexp Overquote overquotation meisch maisch meische maische
17752 @c  LocalWords:  miscian DIRNAME dirname MKDIR CATFILE XMKMF TRAVOLTA celsius
17753 @c  LocalWords:  EMX emxos Emacsen Korn DYNIX subshell posix Ksh ksh Pdksh Zsh
17754 @c  LocalWords:  pdksh zsh Allbery Lipe Kubota UWS zorglub stderr eval esac lfn
17755 @c  LocalWords:  drivespec Posixy DJGPP doschk prettybird LPT pfew Zsh's yu yaa
17756 @c  LocalWords:  yM uM aM firebird IP subdir misparses ok Unpatched abc bc zA
17757 @c  LocalWords:  CDPATH DUALCASE LINENO prepass Subshells lineno NULLCMD cmp wc
17758 @c  LocalWords:  MAILPATH scanset arg NetBSD Almquist printf filesystem expr cp
17759 @c  LocalWords:  Oliva awk Aaaaarg cmd regex xfoo GNV OpenVMS unwriteable te VM
17760 @c  LocalWords:  coreutils sparc Proulx SysV nbar nfoo maxdepth acdilrtu TWG mc
17761 @c  LocalWords:  mkdir exe uname OpenBSD Fileutils mktemp umask TMPDIR guid os
17762 @c  LocalWords:  fooXXXXXX Unicos parenthesization utimes hpux hppa unescaped
17763 @c  LocalWords:  pmake DOS's gmake ifoo DESTDIR autoconfiscated pc coff mips gg
17764 @c  LocalWords:  dec ultrix cpu wildcards rpcc rdtsc powerpc behaviour readline
17765 @c  LocalWords:  withval vxworks gless localcache usr LOFF loff CYGWIN Cygwin
17766 @c  LocalWords:  cygwin SIGLIST siglist SYSNDIR SYSDIR ptx lseq rusage elif MSC
17767 @c  LocalWords:  lfoo POUNDBANG lsun NIS getpwnam SYSCALLS RSH INTL lintl aix
17768 @c  LocalWords:  intl lx ldir syslog bsd EPI toolchain netbsd objext de KNR nn
17769 @c  LocalWords:  fication LTLIBOBJS Wdiff TESTDIR atconfig atlocal akim XFAIL
17770 @c  LocalWords:  ChangeLog prepended errexit smallexample TESTSUITEFLAGS GPL er
17771 @c  LocalWords:  installcheck autotest indir Pixley Bothner Eichin Kerberos adl
17772 @c  LocalWords:  DISTCLEANFILES preprocessor's fileutils Stallman Murphey Stenn
17773 @c  LocalWords:  Manfredi Autoconfig TCL FSP david zuhn Blandy MACRODIR Raeburn
17774 @c  LocalWords:  autoconfiscate Savoye Haertel Avera Meyering fdl appendixsec
17775 @c  LocalWords:  printindex american LIBOBJDIR LibdirTest ERLCFLAGS OBJCFLAGS
17776 @c  LocalWords:  VER Gnulib online xyes strcpy TYPEOF typeof OBJC objcc objc ln
17777 @c  LocalWords:  GOBJC OBJCCPP OTP ERLC erl valloc decr dumpdef errprint incr
17778 @c  LocalWords:  esyscmd len maketemp pushdef substr syscmd sysval translit txt
17779 @c  LocalWords:  sinclude foreach myvar tolower toupper uniq BASENAME STDIN ig
17780 @c  LocalWords:  Dynix descrips basename aname cname ih macroexpands xno xcheck
17781 @c  LocalWords:  LIBREADLINE lreadline lncurses libreadline
17783 @c Local Variables:
17784 @c fill-column: 72
17785 @c ispell-local-dictionary: "american"
17786 @c End: