* README: Recomment m4 1.4.4 instead of 1.4.3..
[autoconf/tsuna.git] / doc / autoconf.texi
blobcacb50ba3dbd6e83ea83be5bb1927d089e816cda
1 \input texinfo @c -*-texinfo-*-
2 @comment ========================================================
3 @comment %**start of header
4 @setfilename autoconf.info
5 @include version.texi
6 @settitle Autoconf
7 @setchapternewpage odd
8 @ifnothtml
9 @setcontentsaftertitlepage
10 @end ifnothtml
11 @finalout
13 @c @ovar(ARG, DEFAULT)
14 @c -------------------
15 @c The ARG is an optional argument.  To be used for macro arguments in
16 @c their documentation (@defmac).
17 @macro ovar{varname}
18 @r{[}@var{\varname\}@r{]}
19 @end macro
21 @c @dvar(ARG, DEFAULT)
22 @c -------------------
23 @c The ARG is an optional argument, defaulting to DEFAULT.  To be used
24 @c for macro arguments in their documentation (@defmac).
25 @macro dvar{varname, default}
26 @r{[}@var{\varname\} = @samp{\default\}@r{]}
27 @end macro
29 @c Handling the indexes with Texinfo yields several different problems.
31 @c Because we want to drop out the AC_ part of the macro names in the
32 @c printed manual, but not in the other outputs, we need a layer above
33 @c the usual @acindex{} etc.  That's why we first define indexes such as
34 @c acx meant to become the macro @acindex.  First of all, using ``ac_''
35 @c does not work with makeinfo, and using ``ac1'' doesn't work with TeX.
36 @c So use something more regular ``acx''.  Then you finish with a printed
37 @c index saying ``index is not existent''.  Of course: you ought to use
38 @c two letters :(  So you use capitals.
40 @c Second, when defining a macro in the TeX world, following spaces are
41 @c eaten.  But then, since we embed @acxindex commands that use the end
42 @c of line as an end marker, the whole things wrecks itself.  So make
43 @c sure you do *force* an additional end of line, add a ``@c''.
45 @c Finally, you might want to get rid of TeX expansion, using --expand
46 @c with texi2dvi.  But then you wake up an old problem: we use macros
47 @c in @defmac etc. where TeX does perform the expansion, but not makeinfo.
49 @c Define an environment variable index.
50 @defcodeindex ev
51 @c Define an output variable index.
52 @defcodeindex ov
53 @c Define a CPP variable index.
54 @defcodeindex cv
55 @c Define an Autoconf macro index that @defmac doesn't write to.
56 @defcodeindex AC
57 @c Define an Autotest macro index that @defmac doesn't write to.
58 @defcodeindex AT
59 @c Define an M4sugar macro index that @defmac doesn't write to.
60 @defcodeindex MS
61 @c Define an index for *foreign* programs: `mv' etc.  Used for the
62 @c portability sections and so on.
63 @defindex pr
65 @c shortindexflag
66 @c --------------
67 @c Shall we factor AC_ out of the Autoconf macro index etc.?
68 @iftex
69 @set shortindexflag
70 @end iftex
72 @c @acindex{MACRO}
73 @c ---------------
74 @c Registering an AC_\MACRO\.
75 @ifset shortindexflag
76 @macro acindex{macro}
77 @ACindex \macro\
79 @end macro
80 @end ifset
81 @ifclear shortindexflag
82 @macro acindex{macro}
83 @ACindex AC_\macro\
84 @end macro
85 @end ifclear
87 @c @ahindex{MACRO}
88 @c ---------------
89 @c Registering an AH_\MACRO\.
90 @macro ahindex{macro}
91 @ACindex AH_\macro\
93 @end macro
95 @c @asindex{MACRO}
96 @c ---------------
97 @c Registering an AS_\MACRO\.
98 @ifset shortindexflag
99 @macro asindex{macro}
100 @MSindex \macro\
102 @end macro
103 @end ifset
104 @ifclear shortindexflag
105 @macro asindex{macro}
106 @MSindex AS_\macro\
107 @end macro
108 @end ifclear
110 @c @atindex{MACRO}
111 @c ---------------
112 @c Registering an AT_\MACRO\.
113 @ifset shortindexflag
114 @macro atindex{macro}
115 @ATindex \macro\
117 @end macro
118 @end ifset
119 @ifclear shortindexflag
120 @macro atindex{macro}
121 @ATindex AT_\macro\
122 @end macro
123 @end ifclear
125 @c @auindex{MACRO}
126 @c ---------------
127 @c Registering an AU_\MACRO\.
128 @macro auindex{macro}
129 @ACindex AU_\macro\
131 @end macro
133 @c @hdrindex{MACRO}
134 @c ----------------
135 @c Indexing a header.
136 @macro hdrindex{macro}
137 @prindex @file{\macro\}
139 @end macro
141 @c @msindex{MACRO}
142 @c ---------------
143 @c Registering an m4_\MACRO\.
144 @ifset shortindexflag
145 @macro msindex{macro}
146 @MSindex \macro\
148 @end macro
149 @end ifset
150 @ifclear shortindexflag
151 @macro msindex{macro}
152 @MSindex m4_\macro\
153 @end macro
154 @end ifclear
157 @c Define an index for functions: `alloca' etc.  Used for the
158 @c portability sections and so on.  We can't use `fn' (aka `fnindex),
159 @c since `@defmac' goes into it => we'd get all the macros too.
161 @c   FIXME: Aaarg!  It seems there are too many indices for TeX :(
163 @c   ! No room for a new @write .
164 @c   l.112 @defcodeindex fu
166 @c   so don't define yet another one :(  Just put some tags before each
167 @c   @prindex which is actually a @funindex.
169 @c   @defcodeindex fu
172 @c   @c Put the programs and functions into their own index.
173 @c   @syncodeindex fu pr
175 @comment %**end of header
176 @comment ========================================================
178 @copying
180 This manual is for @acronym{GNU} Autoconf
181 (version @value{VERSION}, @value{UPDATED}),
182 a package for creating scripts to configure source code packages using
183 templates and an M4 macro package.
185 Copyright @copyright{} 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000,
186 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
188 @quotation
189 Permission is granted to copy, distribute and/or modify this document
190 under the terms of the @acronym{GNU} Free Documentation License,
191 Version 1.2 or any later version published by the Free Software
192 Foundation; with no Invariant Sections, with the Front-Cover texts
193 being ``A @acronym{GNU} Manual,'' and with the Back-Cover Texts as in
194 (a) below.  A copy of the license is included in the section entitled
195 ``@acronym{GNU} Free Documentation License.''
197 (a) The FSF's Back-Cover Text is: ``You have freedom to copy and
198 modify this @acronym{GNU} Manual, like @acronym{GNU} software.  Copies
199 published by the Free Software Foundation raise funds for
200 @acronym{GNU} development.''
201 @end quotation
202 @end copying
206 @dircategory Software development
207 @direntry
208 * Autoconf: (autoconf).         Create source code configuration scripts.
209 @end direntry
211 @dircategory Individual utilities
212 @direntry
213 * autoscan: (autoconf)autoscan Invocation.
214                                 Semi-automatic @file{configure.ac} writing
215 * ifnames: (autoconf)ifnames Invocation.        Listing conditionals in source.
216 * autoconf: (autoconf)autoconf Invocation.
217                                 How to create configuration scripts
218 * autoreconf: (autoconf)autoreconf Invocation.
219                                 Remaking multiple @command{configure} scripts
220 * autoheader: (autoconf)autoheader Invocation.
221                                 How to create configuration templates
222 * autom4te: (autoconf)autom4te Invocation.
223                                 The Autoconf executables backbone
224 * configure: (autoconf)configure Invocation.    Configuring a package.
225 * autoupdate: (autoconf)autoupdate Invocation.
226                                 Automatic update of @file{configure.ac}
227 * config.status: (autoconf)config.status Invocation. Recreating configurations.
228 * testsuite: (autoconf)testsuite Invocation.    Running an Autotest test suite.
229 @end direntry
231 @titlepage
232 @title Autoconf
233 @subtitle Creating Automatic Configuration Scripts
234 @subtitle for version @value{VERSION}, @value{UPDATED}
235 @author David MacKenzie
236 @author Ben Elliston
237 @author Akim Demaille
238 @page
239 @vskip 0pt plus 1filll
240 @insertcopying
241 @end titlepage
243 @contents
246 @ifnottex
247 @node Top
248 @top Autoconf
249 @insertcopying
250 @end ifnottex
252 @c The master menu, created with texinfo-master-menu, goes here.
254 @menu
255 * Introduction::                Autoconf's purpose, strengths, and weaknesses
256 * The GNU Build System::        A set of tools for portable software packages
257 * Making configure Scripts::    How to organize and produce Autoconf scripts
258 * Setup::                       Initialization and output
259 * Existing Tests::              Macros that check for particular features
260 * Writing Tests::               How to write new feature checks
261 * Results::                     What to do with results from feature checks
262 * Programming in M4::           Layers on top of which Autoconf is written
263 * Writing Autoconf Macros::     Adding new macros to Autoconf
264 * Portable Shell::              Shell script portability pitfalls
265 * Portable Make::               Makefile portability pitfalls
266 * Portable C and C++::          C and C++ portability pitfalls
267 * Manual Configuration::        Selecting features that can't be guessed
268 * Site Configuration::          Local defaults for @command{configure}
269 * Running configure Scripts::   How to use the Autoconf output
270 * config.status Invocation::    Recreating a configuration
271 * Obsolete Constructs::         Kept for backward compatibility
272 * Using Autotest::              Creating portable test suites
273 * FAQ::                         Frequent Autoconf Questions, with answers
274 * History::                     History of Autoconf
275 * Copying This Manual::         How to make copies of this manual
276 * Indices::                     Indices of symbols, concepts, etc.
278 @detailmenu
279  --- The Detailed Node Listing ---
281 The @acronym{GNU} Build System
283 * Automake::                    Escaping makefile hell
284 * Gnulib::                      The @acronym{GNU} portability library
285 * Libtool::                     Building libraries portably
286 * Pointers::                    More info on the @acronym{GNU} build system
288 Making @command{configure} Scripts
290 * Writing configure.ac::        What to put in an Autoconf input file
291 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
292 * ifnames Invocation::          Listing the conditionals in source code
293 * autoconf Invocation::         How to create configuration scripts
294 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
296 Writing @file{configure.ac}
298 * Shell Script Compiler::       Autoconf as solution of a problem
299 * Autoconf Language::           Programming in Autoconf
300 * configure.ac Layout::         Standard organization of @file{configure.ac}
302 Initialization and Output Files
304 * Initializing configure::      Option processing etc.
305 * Notices::                     Copyright, version numbers in @command{configure}
306 * Input::                       Where Autoconf should find files
307 * Output::                      Outputting results from the configuration
308 * Configuration Actions::       Preparing the output based on results
309 * Configuration Files::         Creating output files
310 * Makefile Substitutions::      Using output variables in makefiles
311 * Configuration Headers::       Creating a configuration header file
312 * Configuration Commands::      Running arbitrary instantiation commands
313 * Configuration Links::         Links depending on the configuration
314 * Subdirectories::              Configuring independent packages together
315 * Default Prefix::              Changing the default installation prefix
317 Substitutions in Makefiles
319 * Preset Output Variables::     Output variables that are always set
320 * Installation Directory Variables::  Other preset output variables
321 * Build Directories::           Supporting multiple concurrent compiles
322 * Automatic Remaking::          Makefile rules for configuring
324 Configuration Header Files
326 * Header Templates::            Input for the configuration headers
327 * autoheader Invocation::       How to create configuration templates
328 * Autoheader Macros::           How to specify CPP templates
330 Existing Tests
332 * Common Behavior::             Macros' standard schemes
333 * Alternative Programs::        Selecting between alternative programs
334 * Files::                       Checking for the existence of files
335 * Libraries::                   Library archives that might be missing
336 * Library Functions::           C library functions that might be missing
337 * Header Files::                Header files that might be missing
338 * Declarations::                Declarations that may be missing
339 * Structures::                  Structures or members that might be missing
340 * Types::                       Types that might be missing
341 * Compilers and Preprocessors::  Checking for compiling programs
342 * System Services::             Operating system services
343 * Posix Variants::              Special kludges for specific Posix variants
344 * Erlang Libraries::            Checking for the existence of Erlang libraries
346 Common Behavior
348 * Standard Symbols::            Symbols defined by the macros
349 * Default Includes::            Includes used by the generic macros
351 Alternative Programs
353 * Particular Programs::         Special handling to find certain programs
354 * Generic Programs::            How to find other programs
356 Library Functions
358 * Function Portability::        Pitfalls with usual functions
359 * Particular Functions::        Special handling to find certain functions
360 * Generic Functions::           How to find other functions
362 Header Files
364 * Header Portability::          Collected knowledge on common headers
365 * Particular Headers::          Special handling to find certain headers
366 * Generic Headers::             How to find other headers
368 Declarations
370 * Particular Declarations::     Macros to check for certain declarations
371 * Generic Declarations::        How to find other declarations
373 Structures
375 * Particular Structures::       Macros to check for certain structure members
376 * Generic Structures::          How to find other structure members
378 Types
380 * Particular Types::            Special handling to find certain types
381 * Generic Types::               How to find other types
383 Compilers and Preprocessors
385 * Specific Compiler Characteristics::  Some portability issues
386 * Generic Compiler Characteristics::  Language independent tests and features
387 * C Compiler::                  Checking its characteristics
388 * C++ Compiler::                Likewise
389 * Objective C Compiler::        Likewise
390 * Erlang Compiler and Interpreter::  Likewise
391 * Fortran Compiler::            Likewise
393 Writing Tests
395 * Language Choice::             Selecting which language to use for testing
396 * Writing Test Programs::       Forging source files for compilers
397 * Running the Preprocessor::    Detecting preprocessor symbols
398 * Running the Compiler::        Detecting language or header features
399 * Running the Linker::          Detecting library features
400 * Runtime::                     Testing for runtime features
401 * Systemology::                 A zoology of operating systems
402 * Multiple Cases::              Tests for several possible values
404 Writing Test Programs
406 * Guidelines::                  General rules for writing test programs
407 * Test Functions::              Avoiding pitfalls in test programs
408 * Generating Sources::          Source program boilerplate
410 Results of Tests
412 * Defining Symbols::            Defining C preprocessor symbols
413 * Setting Output Variables::    Replacing variables in output files
414 * Special Chars in Variables::  Characters to beware of in variables
415 * Caching Results::             Speeding up subsequent @command{configure} runs
416 * Printing Messages::           Notifying @command{configure} users
418 Caching Results
420 * Cache Variable Names::        Shell variables used in caches
421 * Cache Files::                 Files @command{configure} uses for caching
422 * Cache Checkpointing::         Loading and saving the cache file
424 Programming in M4
426 * M4 Quotation::                Protecting macros from unwanted expansion
427 * Using autom4te::              The Autoconf executables backbone
428 * Programming in M4sugar::      Convenient pure M4 macros
429 * Programming in M4sh::         Common shell Constructs
430 * File Descriptor Macros::      File descriptor macros for input and output
432 M4 Quotation
434 * Active Characters::           Characters that change the behavior of M4
435 * One Macro Call::              Quotation and one macro call
436 * Quotation and Nested Macros::  Macros calling macros
437 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
438 * Quadrigraphs::                Another way to escape special characters
439 * Quotation Rule Of Thumb::     One parenthesis, one quote
441 Using @command{autom4te}
443 * autom4te Invocation::         A @acronym{GNU} M4 wrapper
444 * Customizing autom4te::        Customizing the Autoconf package
446 Programming in M4sugar
448 * Redefined M4 Macros::         M4 builtins changed in M4sugar
449 * Looping constructs::          Iteration in M4
450 * Evaluation Macros::           More quotation and evaluation control
451 * Text processing Macros::      String manipulation in M4
452 * Forbidden Patterns::          Catching unexpanded macros
454 Writing Autoconf Macros
456 * Macro Definitions::           Basic format of an Autoconf macro
457 * Macro Names::                 What to call your new macros
458 * Reporting Messages::          Notifying @command{autoconf} users
459 * Dependencies Between Macros::  What to do when macros depend on other macros
460 * Obsoleting Macros::           Warning about old ways of doing things
461 * Coding Style::                Writing Autoconf macros @`a la Autoconf
463 Dependencies Between Macros
465 * Prerequisite Macros::         Ensuring required information
466 * Suggested Ordering::          Warning about possible ordering problems
467 * One-Shot Macros::             Ensuring a macro is called only once
469 Portable Shell Programming
471 * Shellology::                  A zoology of shells
472 * Here-Documents::              Quirks and tricks
473 * File Descriptors::            FDs and redirections
474 * File System Conventions::     File names
475 * Shell Substitutions::         Variable and command expansions
476 * Assignments::                 Varying side effects of assignments
477 * Parentheses::                 Parentheses in shell scripts
478 * Slashes::                     Slashes in shell scripts
479 * Special Shell Variables::     Variables you should not change
480 * Limitations of Builtins::     Portable use of not so portable /bin/sh
481 * Limitations of Usual Tools::  Portable use of portable tools
483 Portable Make Programming
485 * $< in Ordinary Make Rules::   $< in ordinary rules
486 * Failure in Make Rules::       Failing portably in rules
487 * Special Chars in Names::      Special Characters in Macro Names
488 * Backslash-Newline-Newline::   Empty last lines in macro definitions
489 * Backslash-Newline Comments::  Spanning comments across line boundaries
490 * Long Lines in Makefiles::     Line length limitations
491 * Macros and Submakes::         @code{make macro=value} and submakes
492 * The Make Macro MAKEFLAGS::    @code{$(MAKEFLAGS)} portability issues
493 * The Make Macro SHELL::        @code{$(SHELL)} portability issues
494 * Comments in Make Rules::      Other problems with Make comments
495 * obj/ and Make::               Don't name a subdirectory @file{obj}
496 * make -k Status::              Exit status of @samp{make -k}
497 * VPATH and Make::              @code{VPATH} woes
498 * Single Suffix Rules::         Single suffix rules and separated dependencies
499 * Timestamps and Make::         Subsecond timestamp resolution
501 @code{VPATH} and Make
503 * VPATH and Double-colon::      Problems with @samp{::} on ancient hosts
504 * $< in Explicit Rules::        @code{$<} does not work in ordinary rules
505 * Automatic Rule Rewriting::    @code{VPATH} goes wild on Solaris
506 * OSF/Tru64 Directory Magic::   @command{mkdir} goes wild on OSF/Tru64
507 * Make Target Lookup::          More details about @code{VPATH} lookup
509 Portable C and C++ Programming
511 * Varieties of Unportability::  How to make your programs unportable
512 * Integer Overflow::            When integers get too large
513 * Null Pointers::               Properties of null pointers
514 * Buffer Overruns::             Subscript errors and the like
515 * Floating Point Portability::  Portable floating-point arithmetic
516 * Exiting Portably::            Exiting and the exit status
518 Manual Configuration
520 * Specifying Names::            Specifying the system type
521 * Canonicalizing::              Getting the canonical system type
522 * Using System Type::           What to do with the system type
524 Site Configuration
526 * Help Formatting::             Customizing @samp{configure --help}
527 * External Software::           Working with other optional software
528 * Package Options::             Selecting optional features
529 * Pretty Help Strings::         Formatting help string
530 * Site Details::                Configuring site details
531 * Transforming Names::          Changing program names when installing
532 * Site Defaults::               Giving @command{configure} local defaults
534 Transforming Program Names When Installing
536 * Transformation Options::      @command{configure} options to transform names
537 * Transformation Examples::     Sample uses of transforming names
538 * Transformation Rules::        Makefile uses of transforming names
540 Running @command{configure} Scripts
542 * Basic Installation::          Instructions for typical cases
543 * Compilers and Options::       Selecting compilers and optimization
544 * Multiple Architectures::      Compiling for multiple architectures at once
545 * Installation Names::          Installing in different directories
546 * Optional Features::           Selecting optional features
547 * System Type::                 Specifying the system type
548 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
549 * Defining Variables::          Specifying the compiler etc.
550 * configure Invocation::        Changing how @command{configure} runs
552 Obsolete Constructs
554 * Obsolete config.status Use::  Different calling convention
555 * acconfig.h::                  Additional entries in @file{config.h.in}
556 * autoupdate Invocation::       Automatic update of @file{configure.ac}
557 * Obsolete Macros::             Backward compatibility macros
558 * Autoconf 1::                  Tips for upgrading your files
559 * Autoconf 2.13::               Some fresher tips
561 Upgrading From Version 1
563 * Changed File Names::          Files you might rename
564 * Changed Makefiles::           New things to put in @file{Makefile.in}
565 * Changed Macros::              Macro calls you might replace
566 * Changed Results::             Changes in how to check test results
567 * Changed Macro Writing::       Better ways to write your own macros
569 Upgrading From Version 2.13
571 * Changed Quotation::           Broken code which used to work
572 * New Macros::                  Interaction with foreign macros
573 * Hosts and Cross-Compilation::  Bugward compatibility kludges
574 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
575 * AC_FOO_IFELSE vs AC_TRY_FOO::  A more generic scheme for testing sources
577 Generating Test Suites with Autotest
579 * Using an Autotest Test Suite::  Autotest and the user
580 * Writing testsuite.at::        Autotest macros
581 * testsuite Invocation::        Running @command{testsuite} scripts
582 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
584 Using an Autotest Test Suite
586 * testsuite Scripts::           The concepts of Autotest
587 * Autotest Logs::               Their contents
589 Frequent Autoconf Questions, with answers
591 * Distributing::                Distributing @command{configure} scripts
592 * Why GNU m4::                  Why not use the standard M4?
593 * Bootstrapping::               Autoconf and @acronym{GNU} M4 require each other?
594 * Why Not Imake::               Why @acronym{GNU} uses @command{configure} instead of Imake
595 * Defining Directories::        Passing @code{datadir} to program
596 * autom4te.cache::              What is it?  Can I remove it?
597 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
599 History of Autoconf
601 * Genesis::                     Prehistory and naming of @command{configure}
602 * Exodus::                      The plagues of M4 and Perl
603 * Leviticus::                   The priestly code of portability arrives
604 * Numbers::                     Growth and contributors
605 * Deuteronomy::                 Approaching the promises of easy configuration
607 Copying This Manual
609 * GNU Free Documentation License::  License for copying this manual
611 Indices
613 * Environment Variable Index::  Index of environment variables used
614 * Output Variable Index::       Index of variables set in output files
615 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
616 * Autoconf Macro Index::        Index of Autoconf macros
617 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
618 * Autotest Macro Index::        Index of Autotest macros
619 * Program & Function Index::    Index of those with portability problems
620 * Concept Index::               General index
622 @end detailmenu
623 @end menu
625 @c ============================================================= Introduction.
627 @node Introduction
628 @chapter Introduction
629 @cindex Introduction
631 @flushright
632 A physicist, an engineer, and a computer scientist were discussing the
633 nature of God.  ``Surely a Physicist,'' said the physicist, ``because
634 early in the Creation, God made Light; and you know, Maxwell's
635 equations, the dual nature of electromagnetic waves, the relativistic
636 consequences@dots{}'' ``An Engineer!,'' said the engineer, ``because
637 before making Light, God split the Chaos into Land and Water; it takes a
638 hell of an engineer to handle that big amount of mud, and orderly
639 separation of solids from liquids@dots{}'' The computer scientist
640 shouted: ``And the Chaos, where do you think it was coming from, hmm?''
642 ---Anonymous
643 @end flushright
644 @c (via Franc,ois Pinard)
646 Autoconf is a tool for producing shell scripts that automatically
647 configure software source code packages to adapt to many kinds of
648 Posix-like systems.  The configuration scripts produced by Autoconf
649 are independent of Autoconf when they are run, so their users do not
650 need to have Autoconf.
652 The configuration scripts produced by Autoconf require no manual user
653 intervention when run; they do not normally even need an argument
654 specifying the system type.  Instead, they individually test for the
655 presence of each feature that the software package they are for might need.
656 (Before each check, they print a one-line message stating what they are
657 checking for, so the user doesn't get too bored while waiting for the
658 script to finish.)  As a result, they deal well with systems that are
659 hybrids or customized from the more common Posix variants.  There is
660 no need to maintain files that list the features supported by each
661 release of each variant of Posix.
663 For each software package that Autoconf is used with, it creates a
664 configuration script from a template file that lists the system features
665 that the package needs or can use.  After the shell code to recognize
666 and respond to a system feature has been written, Autoconf allows it to
667 be shared by many software packages that can use (or need) that feature.
668 If it later turns out that the shell code needs adjustment for some
669 reason, it needs to be changed in only one place; all of the
670 configuration scripts can be regenerated automatically to take advantage
671 of the updated code.
673 The Metaconfig package is similar in purpose to Autoconf, but the
674 scripts it produces require manual user intervention, which is quite
675 inconvenient when configuring large source trees.  Unlike Metaconfig
676 scripts, Autoconf scripts can support cross-compiling, if some care is
677 taken in writing them.
679 Autoconf does not solve all problems related to making portable
680 software packages---for a more complete solution, it should be used in
681 concert with other @acronym{GNU} build tools like Automake and
682 Libtool.  These other tools take on jobs like the creation of a
683 portable, recursive makefile with all of the standard targets,
684 linking of shared libraries, and so on.  @xref{The GNU Build System},
685 for more information.
687 Autoconf imposes some restrictions on the names of macros used with
688 @code{#if} in C programs (@pxref{Preprocessor Symbol Index}).
690 Autoconf requires @acronym{GNU} M4 in order to generate the scripts.  It uses
691 features that some versions of M4, including @acronym{GNU} M4 1.3,
692 do not have.  You should use version 1.4.4 or later of @acronym{GNU} M4.
694 @xref{Autoconf 1}, for information about upgrading from version 1.
695 @xref{History}, for the story of Autoconf's development.  @xref{FAQ},
696 for answers to some common questions about Autoconf.
698 See the @uref{http://www.gnu.org/software/autoconf/,
699 Autoconf web page} for up-to-date information, details on the mailing
700 lists, pointers to a list of known bugs, etc.
702 Mail suggestions to @email{autoconf@@gnu.org, the Autoconf mailing
703 list}.  Past suggestions are
704 @uref{http://lists.gnu.org/archive/html/autoconf/, archived}.
706 Mail bug reports to @email{bug-autoconf@@gnu.org, the
707 Autoconf Bugs mailing list}.  Past bug reports are
708 @uref{http://lists.gnu.org/archive/html/bug-autoconf/, archived}.
710 If possible, first check that your bug is
711 not already solved in current development versions, and that it has not
712 been reported yet.  Be sure to include all the needed information and a
713 short @file{configure.ac} that demonstrates the problem.
715 Autoconf's development tree is accessible via anonymous @acronym{CVS}; see the
716 @uref{http://savannah.gnu.org/projects/autoconf/, Autoconf
717 Summary} for details.  Patches relative to the
718 current @acronym{CVS} version can be sent for review to the
719 @email{autoconf-patches@@gnu.org, Autoconf Patches mailing list}.
720 Past patches are
721 @uref{http://lists.gnu.org/@/archive/@/html/@/autoconf-patches/, archived}.
723 Because of its mission, the Autoconf package itself
724 includes only a set of often-used
725 macros that have already demonstrated their usefulness.  Nevertheless,
726 if you wish to share your macros, or find existing ones, see the
727 @uref{http://autoconf-archive.cryp.to/, Autoconf Macro
728 Archive}, which is kindly run by @email{simons@@cryp.to,
729 Peter Simons}.
732 @c ================================================= The GNU Build System
734 @node The GNU Build System
735 @chapter The @acronym{GNU} Build System
736 @cindex GNU build system
738 Autoconf solves an important problem---reliable discovery of
739 system-specific build and runtime information---but this is only one
740 piece of the puzzle for the development of portable software.  To this
741 end, the @acronym{GNU} project has developed a suite of integrated
742 utilities to finish the job Autoconf started: the @acronym{GNU} build
743 system, whose most important components are Autoconf, Automake, and
744 Libtool.  In this chapter, we introduce you to those tools, point you
745 to sources of more information, and try to convince you to use the
746 entire @acronym{GNU} build system for your software.
748 @menu
749 * Automake::                    Escaping makefile hell
750 * Gnulib::                      The @acronym{GNU} portability library
751 * Libtool::                     Building libraries portably
752 * Pointers::                    More info on the @acronym{GNU} build system
753 @end menu
755 @node Automake
756 @section Automake
758 The ubiquity of @command{make} means that a makefile is almost the
759 only viable way to distribute automatic build rules for software, but
760 one quickly runs into its numerous limitations.  Its lack of
761 support for automatic dependency tracking, recursive builds in
762 subdirectories, reliable timestamps (e.g., for network file systems), and
763 so on, mean that developers must painfully (and often incorrectly)
764 reinvent the wheel for each project.  Portability is non-trivial, thanks
765 to the quirks of @command{make} on many systems.  On top of all this is the
766 manual labor required to implement the many standard targets that users
767 have come to expect (@code{make install}, @code{make distclean},
768 @code{make uninstall}, etc.).  Since you are, of course, using Autoconf,
769 you also have to insert repetitive code in your @code{Makefile.in} to
770 recognize @code{@@CC@@}, @code{@@CFLAGS@@}, and other substitutions
771 provided by @command{configure}.  Into this mess steps @dfn{Automake}.
772 @cindex Automake
774 Automake allows you to specify your build needs in a @code{Makefile.am}
775 file with a vastly simpler and more powerful syntax than that of a plain
776 makefile, and then generates a portable @code{Makefile.in} for
777 use with Autoconf.  For example, the @code{Makefile.am} to build and
778 install a simple ``Hello world'' program might look like:
780 @example
781 bin_PROGRAMS = hello
782 hello_SOURCES = hello.c
783 @end example
785 @noindent
786 The resulting @code{Makefile.in} (~400 lines) automatically supports all
787 the standard targets, the substitutions provided by Autoconf, automatic
788 dependency tracking, @code{VPATH} building, and so on.  @command{make}
789 builds the @code{hello} program, and @code{make install} installs it
790 in @file{/usr/local/bin} (or whatever prefix was given to
791 @command{configure}, if not @file{/usr/local}).
793 The benefits of Automake increase for larger packages (especially ones
794 with subdirectories), but even for small programs the added convenience
795 and portability can be substantial.  And that's not all@enddots{}
797 @node Gnulib
798 @section Gnulib
800 @acronym{GNU} software has a well-deserved reputation for running on
801 many different types of systems.  While our primary goal is to write
802 software for the @acronym{GNU} system, many users and developers have
803 been introduced to us through the systems that they were already using.
805 @cindex Gnulib
806 Gnulib is a central location for common @acronym{GNU} code, intended to
807 be shared among free software packages.  Its components are typically
808 shared at the source level, rather than being a library that gets built,
809 installed, and linked against.  The idea is to copy files from Gnulib
810 into your own source tree.  There is no distribution tarball; developers
811 should just grab source modules from the repository.  The source files
812 are available online, under various licenses, mostly @acronym{GNU}
813 @acronym{GPL} or @acronym{GNU} @acronym{LGPL}.
815 Gnulib modules typically contain C source code along with Autoconf
816 macros used to configure the source code.  For example, the Gnulib
817 @code{stdbool} module implements a @file{stdbool.h} header that nearly
818 conforms to C99, even on old-fashioned hosts that lack @file{stdbool.h}.
819 This module contains a source file for the replacement header, along
820 with an Autoconf macro that arranges to use the replacement header on
821 old-fashioned systems.
823 @node Libtool
824 @section Libtool
826 Often, one wants to build not only programs, but libraries, so that
827 other programs can benefit from the fruits of your labor.  Ideally, one
828 would like to produce @emph{shared} (dynamically linked) libraries,
829 which can be used by multiple programs without duplication on disk or in
830 memory and can be updated independently of the linked programs.
831 Producing shared libraries portably, however, is the stuff of
832 nightmares---each system has its own incompatible tools, compiler flags,
833 and magic incantations.  Fortunately, @acronym{GNU} provides a solution:
834 @dfn{Libtool}.
835 @cindex Libtool
837 Libtool handles all the requirements of building shared libraries for
838 you, and at this time seems to be the @emph{only} way to do so with any
839 portability.  It also handles many other headaches, such as: the
840 interaction of Make rules with the variable suffixes of
841 shared libraries, linking reliably with shared libraries before they are
842 installed by the superuser, and supplying a consistent versioning system
843 (so that different versions of a library can be installed or upgraded
844 without breaking binary compatibility).  Although Libtool, like
845 Autoconf, can be used without Automake, it is most simply utilized in
846 conjunction with Automake---there, Libtool is used automatically
847 whenever shared libraries are needed, and you need not know its syntax.
849 @node Pointers
850 @section Pointers
852 Developers who are used to the simplicity of @command{make} for small
853 projects on a single system might be daunted at the prospect of
854 learning to use Automake and Autoconf.  As your software is
855 distributed to more and more users, however, you otherwise
856 quickly find yourself putting lots of effort into reinventing the
857 services that the @acronym{GNU} build tools provide, and making the
858 same mistakes that they once made and overcame.  (Besides, since
859 you're already learning Autoconf, Automake is a piece of cake.)
861 There are a number of places that you can go to for more information on
862 the @acronym{GNU} build tools.
864 @itemize @minus
866 @item Web
868 The home pages for
869 @uref{http://www.gnu.org/@/software/@/autoconf/, Autoconf},
870 @uref{http://www.gnu.org/@/software/@/automake/, Automake},
871 @uref{http://www.gnu.org/@/software/@/gnulib/, Gnulib}, and
872 @uref{http://www.gnu.org/@/software/@/libtool/, Libtool}.
874 @item Automake Manual
876 @xref{Top, , Automake, automake, @acronym{GNU} Automake}, for more
877 information on Automake.
879 @item Books
881 The book @cite{@acronym{GNU} Autoconf, Automake and
882 Libtool}@footnote{@cite{@acronym{GNU} Autoconf, Automake and Libtool},
883 by G. V. Vaughan, B. Elliston, T. Tromey, and I. L. Taylor.  SAMS (originally
884 New Riders), 2000, ISBN 1578701902.} describes the complete @acronym{GNU}
885 build environment.  You can also find
886 @uref{http://sources.redhat.com/@/autobook/, the entire book on-line}.
888 @end itemize
890 @c ================================================= Making configure Scripts.
892 @node Making configure Scripts
893 @chapter Making @command{configure} Scripts
894 @cindex @file{aclocal.m4}
895 @cindex @command{configure}
897 The configuration scripts that Autoconf produces are by convention
898 called @command{configure}.  When run, @command{configure} creates several
899 files, replacing configuration parameters in them with appropriate
900 values.  The files that @command{configure} creates are:
902 @itemize @minus
903 @item
904 one or more @file{Makefile} files, usually one in each subdirectory of the
905 package (@pxref{Makefile Substitutions});
907 @item
908 optionally, a C header file, the name of which is configurable,
909 containing @code{#define} directives (@pxref{Configuration Headers});
911 @item
912 a shell script called @file{config.status} that, when run, recreates
913 the files listed above (@pxref{config.status Invocation});
915 @item
916 an optional shell script normally called @file{config.cache}
917 (created when using @samp{configure --config-cache}) that
918 saves the results of running many of the tests (@pxref{Cache Files});
920 @item
921 a file called @file{config.log} containing any messages produced by
922 compilers, to help debugging if @command{configure} makes a mistake.
923 @end itemize
925 @cindex @file{configure.in}
926 @cindex @file{configure.ac}
927 To create a @command{configure} script with Autoconf, you need to write an
928 Autoconf input file @file{configure.ac} (or @file{configure.in}) and run
929 @command{autoconf} on it.  If you write your own feature tests to
930 supplement those that come with Autoconf, you might also write files
931 called @file{aclocal.m4} and @file{acsite.m4}.  If you use a C header
932 file to contain @code{#define} directives, you might also run
933 @command{autoheader}, and you can distribute the generated file
934 @file{config.h.in} with the package.
936 Here is a diagram showing how the files that can be used in
937 configuration are produced.  Programs that are executed are suffixed by
938 @samp{*}.  Optional files are enclosed in square brackets (@samp{[]}).
939 @command{autoconf} and @command{autoheader} also read the installed Autoconf
940 macro files (by reading @file{autoconf.m4}).
942 @noindent
943 Files used in preparing a software package for distribution:
944 @example
945 your source files --> [autoscan*] --> [configure.scan] --> configure.ac
947 @group
948 configure.ac --.
949                |   .------> autoconf* -----> configure
950 [aclocal.m4] --+---+
951                |   `-----> [autoheader*] --> [config.h.in]
952 [acsite.m4] ---'
953 @end group
955 Makefile.in -------------------------------> Makefile.in
956 @end example
958 @noindent
959 Files used in configuring a software package:
960 @example
961 @group
962                        .-------------> [config.cache]
963 configure* ------------+-------------> config.log
964                        |
965 [config.h.in] -.       v            .-> [config.h] -.
966                +--> config.status* -+               +--> make*
967 Makefile.in ---'                    `-> Makefile ---'
968 @end group
969 @end example
971 @menu
972 * Writing configure.ac::        What to put in an Autoconf input file
973 * autoscan Invocation::         Semi-automatic @file{configure.ac} writing
974 * ifnames Invocation::          Listing the conditionals in source code
975 * autoconf Invocation::         How to create configuration scripts
976 * autoreconf Invocation::       Remaking multiple @command{configure} scripts
977 @end menu
979 @node Writing configure.ac
980 @section Writing @file{configure.ac}
982 To produce a @command{configure} script for a software package, create a
983 file called @file{configure.ac} that contains invocations of the
984 Autoconf macros that test the system features your package needs or can
985 use.  Autoconf macros already exist to check for many features; see
986 @ref{Existing Tests}, for their descriptions.  For most other features,
987 you can use Autoconf template macros to produce custom checks; see
988 @ref{Writing Tests}, for information about them.  For especially tricky
989 or specialized features, @file{configure.ac} might need to contain some
990 hand-crafted shell commands; see @ref{Portable Shell}.  The
991 @command{autoscan} program can give you a good start in writing
992 @file{configure.ac} (@pxref{autoscan Invocation}, for more information).
994 Previous versions of Autoconf promoted the name @file{configure.in},
995 which is somewhat ambiguous (the tool needed to process this file is not
996 described by its extension), and introduces a slight confusion with
997 @file{config.h.in} and so on (for which @samp{.in} means ``to be
998 processed by @command{configure}'').  Using @file{configure.ac} is now
999 preferred.
1001 @menu
1002 * Shell Script Compiler::       Autoconf as solution of a problem
1003 * Autoconf Language::           Programming in Autoconf
1004 * configure.ac Layout::         Standard organization of @file{configure.ac}
1005 @end menu
1007 @node Shell Script Compiler
1008 @subsection A Shell Script Compiler
1010 Just as for any other computer language, in order to properly program
1011 @file{configure.ac} in Autoconf you must understand @emph{what} problem
1012 the language tries to address and @emph{how} it does so.
1014 The problem Autoconf addresses is that the world is a mess.  After all,
1015 you are using Autoconf in order to have your package compile easily on
1016 all sorts of different systems, some of them being extremely hostile.
1017 Autoconf itself bears the price for these differences: @command{configure}
1018 must run on all those systems, and thus @command{configure} must limit itself
1019 to their lowest common denominator of features.
1021 Naturally, you might then think of shell scripts; who needs
1022 @command{autoconf}?  A set of properly written shell functions is enough to
1023 make it easy to write @command{configure} scripts by hand.  Sigh!
1024 Unfortunately, shell functions do not belong to the least common
1025 denominator; therefore, where you would like to define a function and
1026 use it ten times, you would instead need to copy its body ten times.
1028 So, what is really needed is some kind of compiler, @command{autoconf},
1029 that takes an Autoconf program, @file{configure.ac}, and transforms it
1030 into a portable shell script, @command{configure}.
1032 How does @command{autoconf} perform this task?
1034 There are two obvious possibilities: creating a brand new language or
1035 extending an existing one.  The former option is attractive: all
1036 sorts of optimizations could easily be implemented in the compiler and
1037 many rigorous checks could be performed on the Autoconf program
1038 (e.g., rejecting any non-portable construct).  Alternatively, you can
1039 extend an existing language, such as the @code{sh} (Bourne shell)
1040 language.
1042 Autoconf does the latter: it is a layer on top of @code{sh}.  It was
1043 therefore most convenient to implement @command{autoconf} as a macro
1044 expander: a program that repeatedly performs @dfn{macro expansions} on
1045 text input, replacing macro calls with macro bodies and producing a pure
1046 @code{sh} script in the end.  Instead of implementing a dedicated
1047 Autoconf macro expander, it is natural to use an existing
1048 general-purpose macro language, such as M4, and implement the extensions
1049 as a set of M4 macros.
1052 @node Autoconf Language
1053 @subsection The Autoconf Language
1054 @cindex quotation
1056 The Autoconf language differs from many other computer
1057 languages because it treats actual code the same as plain text.  Whereas
1058 in C, for instance, data and instructions have different syntactic
1059 status, in Autoconf their status is rigorously the same.  Therefore, we
1060 need a means to distinguish literal strings from text to be expanded:
1061 quotation.
1063 When calling macros that take arguments, there must not be any white
1064 space between the macro name and the open parenthesis.  Arguments should
1065 be enclosed within the M4 quote characters @samp{[} and @samp{]}, and be
1066 separated by commas.  Any leading blanks or newlines in arguments are ignored,
1067 unless they are quoted.  You should always quote an argument that
1068 might contain a macro name, comma, parenthesis, or a leading blank or
1069 newline.  This rule applies recursively for every macro
1070 call, including macros called from other macros.
1072 For instance:
1074 @example
1075 AC_CHECK_HEADER([stdio.h],
1076                 [AC_DEFINE([HAVE_STDIO_H], [1],
1077                    [Define to 1 if you have <stdio.h>.])],
1078                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1079 @end example
1081 @noindent
1082 is quoted properly.  You may safely simplify its quotation to:
1084 @example
1085 AC_CHECK_HEADER([stdio.h],
1086                 [AC_DEFINE([HAVE_STDIO_H], 1,
1087                    [Define to 1 if you have <stdio.h>.])],
1088                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1089 @end example
1091 @noindent
1092 because @samp{1} cannot contain a macro call.  Here, the argument of
1093 @code{AC_MSG_ERROR} must be quoted; otherwise, its comma would be
1094 interpreted as an argument separator.  Also, the second and third arguments
1095 of @samp{AC_CHECK_HEADER} must be quoted, since they contain
1096 macro calls.  The three arguments @samp{HAVE_STDIO_H}, @samp{stdio.h},
1097 and @samp{Define to 1 if you have <stdio.h>.} do not need quoting, but
1098 if you unwisely defined a macro with a name like @samp{Define} or
1099 @samp{stdio} then they would need quoting.  Cautious Autoconf users
1100 would keep the quotes, but many Autoconf users find such precautions
1101 annoying, and would rewrite the example as follows:
1103 @example
1104 AC_CHECK_HEADER(stdio.h,
1105                 [AC_DEFINE(HAVE_STDIO_H, 1,
1106                    [Define to 1 if you have <stdio.h>.])],
1107                 [AC_MSG_ERROR([Sorry, can't do anything for you])])
1108 @end example
1110 @noindent
1111 This is safe, so long as you adopt good naming conventions and do not
1112 define macros with names like @samp{HAVE_STDIO_H}, @samp{stdio}, or
1113 @samp{h}.  Though it is also safe here to omit the quotes around
1114 @samp{Define to 1 if you have <stdio.h>.} this is not recommended, as
1115 message strings are more likely to inadvertently contain commas.
1117 The following example is wrong and dangerous, as it is underquoted:
1119 @example
1120 AC_CHECK_HEADER(stdio.h,
1121                 AC_DEFINE(HAVE_STDIO_H, 1,
1122                    Define to 1 if you have <stdio.h>.),
1123                 AC_MSG_ERROR([Sorry, can't do anything for you]))
1124 @end example
1126 In other cases, you may have to use text that also resembles a macro
1127 call.  You must quote that text even when it is not passed as a macro
1128 argument:
1130 @example
1131 echo "Hard rock was here!  --[AC_DC]"
1132 @end example
1134 @noindent
1135 which results in:
1137 @example
1138 echo "Hard rock was here!  --AC_DC"
1139 @end example
1141 @noindent
1142 When you use the same text in a macro argument, you must therefore have
1143 an extra quotation level (since one is stripped away by the macro
1144 substitution).  In general, then, it is a good idea to @emph{use double
1145 quoting for all literal string arguments}:
1147 @example
1148 AC_MSG_WARN([[AC_DC stinks  --Iron Maiden]])
1149 @end example
1151 You are now able to understand one of the constructs of Autoconf that
1152 has been continually misunderstood@dots{}  The rule of thumb is that
1153 @emph{whenever you expect macro expansion, expect quote expansion};
1154 i.e., expect one level of quotes to be lost.  For instance:
1156 @example
1157 AC_COMPILE_IFELSE([char b[10];], [], [AC_MSG_ERROR([you lose])])
1158 @end example
1160 @noindent
1161 is incorrect: here, the first argument of @code{AC_COMPILE_IFELSE} is
1162 @samp{char b[10];} and is expanded once, which results in
1163 @samp{char b10;}.  (There was an idiom common in Autoconf's past to
1164 address this issue via the M4 @code{changequote} primitive, but do not
1165 use it!)  Let's take a closer look: the author meant the first argument
1166 to be understood as a literal, and therefore it must be quoted twice:
1168 @example
1169 AC_COMPILE_IFELSE([[char b[10];]], [], [AC_MSG_ERROR([you lose])])
1170 @end example
1172 @noindent
1173 Voil@`a, you actually produce @samp{char b[10];} this time!
1175 On the other hand, descriptions (e.g., the last parameter of
1176 @code{AC_DEFINE} or @code{AS_HELP_STRING}) are not literals---they
1177 are subject to line breaking, for example---and should not be double quoted.
1178 Even if these descriptions are short and are not actually broken, double
1179 quoting them yields weird results.
1181 Some macros take optional arguments, which this documentation represents
1182 as @ovar{arg} (not to be confused with the quote characters).  You may
1183 just leave them empty, or use @samp{[]} to make the emptiness of the
1184 argument explicit, or you may simply omit the trailing commas.  The
1185 three lines below are equivalent:
1187 @example
1188 AC_CHECK_HEADERS([stdio.h], [], [], [])
1189 AC_CHECK_HEADERS([stdio.h],,,)
1190 AC_CHECK_HEADERS([stdio.h])
1191 @end example
1193 It is best to put each macro call on its own line in
1194 @file{configure.ac}.  Most of the macros don't add extra newlines; they
1195 rely on the newline after the macro call to terminate the commands.
1196 This approach makes the generated @command{configure} script a little
1197 easier to read by not inserting lots of blank lines.  It is generally
1198 safe to set shell variables on the same line as a macro call, because
1199 the shell allows assignments without intervening newlines.
1201 You can include comments in @file{configure.ac} files by starting them
1202 with the @samp{#}.  For example, it is helpful to begin
1203 @file{configure.ac} files with a line like this:
1205 @example
1206 # Process this file with autoconf to produce a configure script.
1207 @end example
1209 @node configure.ac Layout
1210 @subsection Standard @file{configure.ac} Layout
1212 The order in which @file{configure.ac} calls the Autoconf macros is not
1213 important, with a few exceptions.  Every @file{configure.ac} must
1214 contain a call to @code{AC_INIT} before the checks, and a call to
1215 @code{AC_OUTPUT} at the end (@pxref{Output}).  Additionally, some macros
1216 rely on other macros having been called first, because they check
1217 previously set values of some variables to decide what to do.  These
1218 macros are noted in the individual descriptions (@pxref{Existing
1219 Tests}), and they also warn you when @command{configure} is created if they
1220 are called out of order.
1222 To encourage consistency, here is a suggested order for calling the
1223 Autoconf macros.  Generally speaking, the things near the end of this
1224 list are those that could depend on things earlier in it.  For example,
1225 library functions could be affected by types and libraries.
1227 @display
1228 @group
1229 Autoconf requirements
1230 @code{AC_INIT(@var{package}, @var{version}, @var{bug-report-address})}
1231 information on the package
1232 checks for programs
1233 checks for libraries
1234 checks for header files
1235 checks for types
1236 checks for structures
1237 checks for compiler characteristics
1238 checks for library functions
1239 checks for system services
1240 @code{AC_CONFIG_FILES(@r{[}@var{file@dots{}}@r{]})}
1241 @code{AC_OUTPUT}
1242 @end group
1243 @end display
1246 @node autoscan Invocation
1247 @section Using @command{autoscan} to Create @file{configure.ac}
1248 @cindex @command{autoscan}
1250 The @command{autoscan} program can help you create and/or maintain a
1251 @file{configure.ac} file for a software package.  @command{autoscan}
1252 examines source files in the directory tree rooted at a directory given
1253 as a command line argument, or the current directory if none is given.
1254 It searches the source files for common portability problems and creates
1255 a file @file{configure.scan} which is a preliminary @file{configure.ac}
1256 for that package, and checks a possibly existing @file{configure.ac} for
1257 completeness.
1259 When using @command{autoscan} to create a @file{configure.ac}, you
1260 should manually examine @file{configure.scan} before renaming it to
1261 @file{configure.ac}; it probably needs some adjustments.
1262 Occasionally, @command{autoscan} outputs a macro in the wrong order
1263 relative to another macro, so that @command{autoconf} produces a warning;
1264 you need to move such macros manually.  Also, if you want the package to
1265 use a configuration header file, you must add a call to
1266 @code{AC_CONFIG_HEADERS} (@pxref{Configuration Headers}).  You might
1267 also have to change or add some @code{#if} directives to your program in
1268 order to make it work with Autoconf (@pxref{ifnames Invocation}, for
1269 information about a program that can help with that job).
1271 When using @command{autoscan} to maintain a @file{configure.ac}, simply
1272 consider adding its suggestions.  The file @file{autoscan.log}
1273 contains detailed information on why a macro is requested.
1275 @command{autoscan} uses several data files (installed along with Autoconf)
1276 to determine which macros to output when it finds particular symbols in
1277 a package's source files.  These data files all have the same format:
1278 each line consists of a symbol, one or more blanks, and the Autoconf macro to
1279 output if that symbol is encountered.  Lines starting with @samp{#} are
1280 comments.
1282 @command{autoscan} accepts the following options:
1284 @table @option
1285 @item --help
1286 @itemx -h
1287 Print a summary of the command line options and exit.
1289 @item --version
1290 @itemx -V
1291 Print the version number of Autoconf and exit.
1293 @item --verbose
1294 @itemx -v
1295 Print the names of the files it examines and the potentially interesting
1296 symbols it finds in them.  This output can be voluminous.
1298 @item --include=@var{dir}
1299 @itemx -I @var{dir}
1300 Append @var{dir} to the include path.  Multiple invocations accumulate.
1302 @item --prepend-include=@var{dir}
1303 @item -B @var{dir}
1304 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1305 @end table
1307 @node ifnames Invocation
1308 @section Using @command{ifnames} to List Conditionals
1309 @cindex @command{ifnames}
1311 @command{ifnames} can help you write @file{configure.ac} for a software
1312 package.  It prints the identifiers that the package already uses in C
1313 preprocessor conditionals.  If a package has already been set up to have
1314 some portability, @command{ifnames} can thus help you figure out what its
1315 @command{configure} needs to check for.  It may help fill in some gaps in a
1316 @file{configure.ac} generated by @command{autoscan} (@pxref{autoscan
1317 Invocation}).
1319 @command{ifnames} scans all of the C source files named on the command line
1320 (or the standard input, if none are given) and writes to the standard
1321 output a sorted list of all the identifiers that appear in those files
1322 in @code{#if}, @code{#elif}, @code{#ifdef}, or @code{#ifndef}
1323 directives.  It prints each identifier on a line, followed by a
1324 space-separated list of the files in which that identifier occurs.
1326 @noindent
1327 @command{ifnames} accepts the following options:
1329 @table @option
1330 @item --help
1331 @itemx -h
1332 Print a summary of the command line options and exit.
1334 @item --version
1335 @itemx -V
1336 Print the version number of Autoconf and exit.
1337 @end table
1339 @node autoconf Invocation
1340 @section Using @command{autoconf} to Create @command{configure}
1341 @cindex @command{autoconf}
1343 To create @command{configure} from @file{configure.ac}, run the
1344 @command{autoconf} program with no arguments.  @command{autoconf} processes
1345 @file{configure.ac} with the M4 macro processor, using the
1346 Autoconf macros.  If you give @command{autoconf} an argument, it reads that
1347 file instead of @file{configure.ac} and writes the configuration script
1348 to the standard output instead of to @command{configure}.  If you give
1349 @command{autoconf} the argument @option{-}, it reads from the standard
1350 input instead of @file{configure.ac} and writes the configuration script
1351 to the standard output.
1353 The Autoconf macros are defined in several files.  Some of the files are
1354 distributed with Autoconf; @command{autoconf} reads them first.  Then it
1355 looks for the optional file @file{acsite.m4} in the directory that
1356 contains the distributed Autoconf macro files, and for the optional file
1357 @file{aclocal.m4} in the current directory.  Those files can contain
1358 your site's or the package's own Autoconf macro definitions
1359 (@pxref{Writing Autoconf Macros}, for more information).  If a macro is
1360 defined in more than one of the files that @command{autoconf} reads, the
1361 last definition it reads overrides the earlier ones.
1363 @command{autoconf} accepts the following options:
1365 @table @option
1366 @item --help
1367 @itemx -h
1368 Print a summary of the command line options and exit.
1370 @item --version
1371 @itemx -V
1372 Print the version number of Autoconf and exit.
1374 @item --verbose
1375 @itemx -v
1376 Report processing steps.
1378 @item --debug
1379 @itemx -d
1380 Don't remove the temporary files.
1382 @item --force
1383 @itemx -f
1384 Remake @file{configure} even if newer than its input files.
1386 @item --include=@var{dir}
1387 @itemx -I @var{dir}
1388 Append @var{dir} to the include path.  Multiple invocations accumulate.
1390 @item --prepend-include=@var{dir}
1391 @item -B @var{dir}
1392 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1394 @item --output=@var{file}
1395 @itemx -o @var{file}
1396 Save output (script or trace) to @var{file}.  The file @option{-} stands
1397 for the standard output.
1399 @item --warnings=@var{category}
1400 @itemx -W @var{category}
1401 @evindex WARNINGS
1402 Report the warnings related to @var{category} (which can actually be a
1403 comma separated list).  @xref{Reporting Messages}, macro
1404 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
1405 values include:
1407 @table @samp
1408 @item all
1409 report all the warnings
1411 @item none
1412 report none
1414 @item error
1415 treats warnings as errors
1417 @item no-@var{category}
1418 disable warnings falling into @var{category}
1419 @end table
1421 Warnings about @samp{syntax} are enabled by default, and the environment
1422 variable @env{WARNINGS}, a comma separated list of categories, is
1423 honored as well.  Passing @option{-W @var{category}} actually behaves as if
1424 you had passed @option{--warnings=syntax,$WARNINGS,@var{category}}.  If
1425 you want to disable the defaults and @env{WARNINGS}, but (for example)
1426 enable the warnings about obsolete constructs, you would use @option{-W
1427 none,obsolete}.
1429 @cindex Back trace
1430 @cindex Macro invocation stack
1431 Because @command{autoconf} uses @command{autom4te} behind the scenes, it
1432 displays a back trace for errors, but not for warnings; if you want
1433 them, just pass @option{-W error}.  @xref{autom4te Invocation}, for some
1434 examples.
1436 @item --trace=@var{macro}[:@var{format}]
1437 @itemx -t @var{macro}[:@var{format}]
1438 Do not create the @command{configure} script, but list the calls to
1439 @var{macro} according to the @var{format}.  Multiple @option{--trace}
1440 arguments can be used to list several macros.  Multiple @option{--trace}
1441 arguments for a single macro are not cumulative; instead, you should
1442 just make @var{format} as long as needed.
1444 The @var{format} is a regular string, with newlines if desired, and
1445 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}; see
1446 @ref{autom4te Invocation}, for details on the @var{format}.
1448 @item --initialization
1449 @itemx -i
1450 By default, @option{--trace} does not trace the initialization of the
1451 Autoconf macros (typically the @code{AC_DEFUN} definitions).  This
1452 results in a noticeable speedup, but can be disabled by this option.
1453 @end table
1456 It is often necessary to check the content of a @file{configure.ac}
1457 file, but parsing it yourself is extremely fragile and error-prone.  It
1458 is suggested that you rely upon @option{--trace} to scan
1459 @file{configure.ac}.  For instance, to find the list of variables that
1460 are substituted, use:
1462 @example
1463 @group
1464 $ @kbd{autoconf -t AC_SUBST}
1465 configure.ac:2:AC_SUBST:ECHO_C
1466 configure.ac:2:AC_SUBST:ECHO_N
1467 configure.ac:2:AC_SUBST:ECHO_T
1468 @i{More traces deleted}
1469 @end group
1470 @end example
1472 @noindent
1473 The example below highlights the difference between @samp{$@@},
1474 @samp{$*}, and @samp{$%}.
1476 @example
1477 @group
1478 $ @kbd{cat configure.ac}
1479 AC_DEFINE(This, is, [an
1480 [example]])
1481 $ @kbd{autoconf -t 'AC_DEFINE:@@: $@@}
1482 *: $*
1483 %: $%'
1484 @@: [This],[is],[an
1485 [example]]
1486 *: This,is,an
1487 [example]
1488 %: This:is:an [example]
1489 @end group
1490 @end example
1492 @noindent
1493 The @var{format} gives you a lot of freedom:
1495 @example
1496 @group
1497 $ @kbd{autoconf -t 'AC_SUBST:$$ac_subst@{"$1"@} = "$f:$l";'}
1498 $ac_subst@{"ECHO_C"@} = "configure.ac:2";
1499 $ac_subst@{"ECHO_N"@} = "configure.ac:2";
1500 $ac_subst@{"ECHO_T"@} = "configure.ac:2";
1501 @i{More traces deleted}
1502 @end group
1503 @end example
1505 @noindent
1506 A long @var{separator} can be used to improve the readability of complex
1507 structures, and to ease their parsing (for instance when no single
1508 character is suitable as a separator):
1510 @example
1511 @group
1512 $ @kbd{autoconf -t 'AM_MISSING_PROG:$@{|:::::|@}*'}
1513 ACLOCAL|:::::|aclocal|:::::|$missing_dir
1514 AUTOCONF|:::::|autoconf|:::::|$missing_dir
1515 AUTOMAKE|:::::|automake|:::::|$missing_dir
1516 @i{More traces deleted}
1517 @end group
1518 @end example
1520 @node autoreconf Invocation
1521 @section Using @command{autoreconf} to Update @command{configure} Scripts
1522 @cindex @command{autoreconf}
1524 Installing the various components of the @acronym{GNU} Build System can be
1525 tedious: running @command{autopoint} for Gettext, @command{automake} for
1526 @file{Makefile.in} etc.@: in each directory.  It may be needed either
1527 because some tools such as @command{automake} have been updated on your
1528 system, or because some of the sources such as @file{configure.ac} have
1529 been updated, or finally, simply in order to install the @acronym{GNU} Build
1530 System in a fresh tree.
1532 @command{autoreconf} runs @command{autoconf}, @command{autoheader},
1533 @command{aclocal}, @command{automake}, @command{libtoolize}, and
1534 @command{autopoint} (when appropriate) repeatedly to update the
1535 @acronym{GNU} Build System in the specified directories and their
1536 subdirectories (@pxref{Subdirectories}).  By default, it only remakes
1537 those files that are older than their sources.
1539 If you install a new version of some tool, you can make
1540 @command{autoreconf} remake @emph{all} of the files by giving it the
1541 @option{--force} option.
1543 @xref{Automatic Remaking}, for Make rules to automatically
1544 remake @command{configure} scripts when their source files change.  That
1545 method handles the timestamps of configuration header templates
1546 properly, but does not pass @option{--autoconf-dir=@var{dir}} or
1547 @option{--localdir=@var{dir}}.
1549 @cindex Gettext
1550 @cindex @command{autopoint}
1551 Gettext supplies the @command{autopoint} command to add translation
1552 infrastructure to a source package.  If you use @command{autopoint},
1553 your @file{configure.ac} should invoke both @code{AM_GNU_GETTEXT} and
1554 @code{AM_GNU_GETTEXT_VERSION(@var{gettext-version})}.  @xref{autopoint
1555 Invocation, , Invoking the @code{autopoint} Program, gettext, GNU
1556 @code{gettext} utilities}, for further details.
1558 @noindent
1559 @command{autoreconf} accepts the following options:
1561 @table @option
1562 @item --help
1563 @itemx -h
1564 Print a summary of the command line options and exit.
1566 @item --version
1567 @itemx -V
1568 Print the version number of Autoconf and exit.
1570 @item --verbose
1571 Print the name of each directory @command{autoreconf} examines and the
1572 commands it runs.  If given two or more times, pass @option{--verbose}
1573 to subordinate tools that support it.
1575 @item --debug
1576 @itemx -d
1577 Don't remove the temporary files.
1579 @item --force
1580 @itemx -f
1581 Remake even @file{configure} scripts and configuration headers that are
1582 newer than their input files (@file{configure.ac} and, if present,
1583 @file{aclocal.m4}).
1585 @item --install
1586 @itemx -i
1587 Install the missing auxiliary files in the package.  By default, files
1588 are copied; this can be changed with @option{--symlink}.
1590 If deemed appropriate, this option triggers calls to
1591 @samp{automake --add-missing},
1592 @samp{libtoolize}, @samp{autopoint}, etc.
1594 @item --no-recursive
1595 Do not rebuild files in subdirectories to configure (see @ref{Subdirectories},
1596 macro @code{AC_CONFIG_SUBDIRS}).
1598 @item --symlink
1599 @itemx -s
1600 When used with @option{--install}, install symbolic links to the missing
1601 auxiliary files instead of copying them.
1603 @item --make
1604 @itemx -m
1605 When the directories were configured, update the configuration by
1606 running @samp{./config.status --recheck && ./config.status}, and then
1607 run @samp{make}.
1609 @item --include=@var{dir}
1610 @itemx -I @var{dir}
1611 Append @var{dir} to the include path.  Multiple invocations accumulate.
1612 Passed on to @command{autoconf} and @command{autoheader} internally.
1614 @item --prepend-include=@var{dir}
1615 @item -B @var{dir}
1616 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
1617 Passed on to @command{autoconf} and @command{autoheader} internally.
1619 @item --warnings=@var{category}
1620 @itemx -W @var{category}
1621 @evindex WARNINGS
1622 Report the warnings related to @var{category} (which can actually be a
1623 comma separated list).
1625 @table @samp
1626 @item cross
1627 related to cross compilation issues.
1629 @item obsolete
1630 report the uses of obsolete constructs.
1632 @item portability
1633 portability issues
1635 @item syntax
1636 dubious syntactic constructs.
1638 @item all
1639 report all the warnings
1641 @item none
1642 report none
1644 @item error
1645 treats warnings as errors
1647 @item no-@var{category}
1648 disable warnings falling into @var{category}
1649 @end table
1651 Warnings about @samp{syntax} are enabled by default, and the environment
1652 variable @env{WARNINGS}, a comma separated list of categories, is
1653 honored as well.  Passing @option{-W @var{category}} actually behaves as if
1654 you had passed @option{--warnings=syntax,$WARNINGS,@var{category}}.  If
1655 you want to disable the defaults and @env{WARNINGS}, but (for example)
1656 enable the warnings about obsolete constructs, you would use @option{-W
1657 none,obsolete}.
1658 @end table
1660 If you want @command{autoreconf} to pass flags that are not listed here
1661 on to @command{aclocal}, set @code{ACLOCAL_AMFLAGS} in your @file{Makefile.am}.
1663 @c ========================================= Initialization and Output Files.
1665 @node Setup
1666 @chapter Initialization and Output Files
1668 Autoconf-generated @command{configure} scripts need some information about
1669 how to initialize, such as how to find the package's source files and
1670 about the output files to produce.  The following sections describe the
1671 initialization and the creation of output files.
1673 @menu
1674 * Initializing configure::      Option processing etc.
1675 * Notices::                     Copyright, version numbers in @command{configure}
1676 * Input::                       Where Autoconf should find files
1677 * Output::                      Outputting results from the configuration
1678 * Configuration Actions::       Preparing the output based on results
1679 * Configuration Files::         Creating output files
1680 * Makefile Substitutions::      Using output variables in makefiles
1681 * Configuration Headers::       Creating a configuration header file
1682 * Configuration Commands::      Running arbitrary instantiation commands
1683 * Configuration Links::         Links depending on the configuration
1684 * Subdirectories::              Configuring independent packages together
1685 * Default Prefix::              Changing the default installation prefix
1686 @end menu
1688 @node Initializing configure
1689 @section Initializing @command{configure}
1691 Every @command{configure} script must call @code{AC_INIT} before doing
1692 anything else.  The only other required macro is @code{AC_OUTPUT}
1693 (@pxref{Output}).
1695 @defmac AC_INIT (@var{package}, @var{version}, @ovar{bug-report}, @ovar{tarname})
1696 @acindex{INIT}
1697 Process any command-line arguments and perform various initializations
1698 and verifications.
1700 Set the name of the @var{package} and its @var{version}.  These are
1701 typically used in @option{--version} support, including that of
1702 @command{configure}.  The optional argument @var{bug-report} should be
1703 the email to which users should send bug reports.  The package
1704 @var{tarname} differs from @var{package}: the latter designates the full
1705 package name (e.g., @samp{GNU Autoconf}), while the former is meant for
1706 distribution tar ball names (e.g., @samp{autoconf}).  It defaults to
1707 @var{package} with @samp{GNU } stripped, lower-cased, and all characters
1708 other than alphanumerics and underscores are changed to @samp{-}.
1710 It is preferable that the arguments of @code{AC_INIT} be static, i.e.,
1711 there should not be any shell computation, but they can be computed by
1714 The following M4 macros (e.g., @code{AC_PACKAGE_NAME}), output variables
1715 (e.g., @code{PACKAGE_NAME}), and preprocessor symbols (e.g.,
1716 @code{PACKAGE_NAME}) are defined by @code{AC_INIT}:
1718 @table @asis
1719 @item @code{AC_PACKAGE_NAME}, @code{PACKAGE_NAME}
1720 @acindex{PACKAGE_NAME}
1721 @ovindex PACKAGE_NAME
1722 @cvindex PACKAGE_NAME
1723 Exactly @var{package}.
1725 @item @code{AC_PACKAGE_TARNAME}, @code{PACKAGE_TARNAME}
1726 @acindex{PACKAGE_TARNAME}
1727 @ovindex PACKAGE_TARNAME
1728 @cvindex PACKAGE_TARNAME
1729 Exactly @var{tarname}.
1731 @item @code{AC_PACKAGE_VERSION}, @code{PACKAGE_VERSION}
1732 @acindex{PACKAGE_VERSION}
1733 @ovindex PACKAGE_VERSION
1734 @cvindex PACKAGE_VERSION
1735 Exactly @var{version}.
1737 @item @code{AC_PACKAGE_STRING}, @code{PACKAGE_STRING}
1738 @acindex{PACKAGE_STRING}
1739 @ovindex PACKAGE_STRING
1740 @cvindex PACKAGE_STRING
1741 Exactly @samp{@var{package} @var{version}}.
1743 @item @code{AC_PACKAGE_BUGREPORT}, @code{PACKAGE_BUGREPORT}
1744 @acindex{PACKAGE_BUGREPORT}
1745 @ovindex PACKAGE_BUGREPORT
1746 @cvindex PACKAGE_BUGREPORT
1747 Exactly @var{bug-report}.
1748 @end table
1749 @end defmac
1751 If your @command{configure} script does its own option processing, it
1752 should inspect @samp{$@@} or @samp{$*} immediately after calling
1753 @code{AC_INIT}, because other Autoconf macros liberally use the
1754 @command{set} command to process strings, and this has the side effect
1755 of updating @samp{$@@} and @samp{$*}.  However, we suggest that you use
1756 standard macros like @code{AC_ARG_ENABLE} instead of attempting to
1757 implement your own option processing.  @xref{Site Configuration}.
1760 @node Notices
1761 @section Notices in @command{configure}
1762 @cindex Notices in @command{configure}
1764 The following macros manage version numbers for @command{configure}
1765 scripts.  Using them is optional.
1767 @c FIXME: AC_PREREQ should not be here
1768 @defmac AC_PREREQ (@var{version})
1769 @acindex{PREREQ}
1770 @cindex Version
1771 Ensure that a recent enough version of Autoconf is being used.  If the
1772 version of Autoconf being used to create @command{configure} is
1773 earlier than @var{version}, print an error message to the standard
1774 error output and exit with failure (exit status is 63).  For example:
1776 @example
1777 AC_PREREQ([@value{VERSION}])
1778 @end example
1780 This macro is the only macro that may be used before @code{AC_INIT}, but
1781 for consistency, you are invited not to do so.
1782 @end defmac
1784 @defmac AC_COPYRIGHT (@var{copyright-notice})
1785 @acindex{COPYRIGHT}
1786 @cindex Copyright Notice
1787 State that, in addition to the Free Software Foundation's copyright on
1788 the Autoconf macros, parts of your @command{configure} are covered by the
1789 @var{copyright-notice}.
1791 The @var{copyright-notice} shows up in both the head of
1792 @command{configure} and in @samp{configure --version}.
1793 @end defmac
1796 @defmac AC_REVISION (@var{revision-info})
1797 @acindex{REVISION}
1798 @cindex Revision
1799 Copy revision stamp @var{revision-info} into the @command{configure}
1800 script, with any dollar signs or double-quotes removed.  This macro lets
1801 you put a revision stamp from @file{configure.ac} into @command{configure}
1802 without @acronym{RCS} or @acronym{CVS} changing it when you check in
1803 @command{configure}.  That way, you can determine easily which revision of
1804 @file{configure.ac} a particular @command{configure} corresponds to.
1806 For example, this line in @file{configure.ac}:
1808 @c The asis prevents RCS from changing the example in the manual.
1809 @example
1810 AC_REVISION([$@asis{Revision: 1.30 }$])
1811 @end example
1813 @noindent
1814 produces this in @command{configure}:
1816 @example
1817 #!/bin/sh
1818 # From configure.ac Revision: 1.30
1819 @end example
1820 @end defmac
1823 @node Input
1824 @section Finding @command{configure} Input
1827 @defmac AC_CONFIG_SRCDIR (@var{unique-file-in-source-dir})
1828 @acindex{CONFIG_SRCDIR}
1829 @var{unique-file-in-source-dir} is some file that is in the package's
1830 source directory; @command{configure} checks for this file's existence to
1831 make sure that the directory that it is told contains the source code in
1832 fact does.  Occasionally people accidentally specify the wrong directory
1833 with @option{--srcdir}; this is a safety check.  @xref{configure
1834 Invocation}, for more information.
1835 @end defmac
1838 @c FIXME: Remove definitively once --install explained.
1840 @c Small packages may store all their macros in @code{aclocal.m4}.  As the
1841 @c set of macros grows, or for maintenance reasons, a maintainer may prefer
1842 @c to split the macros in several files.  In this case, Autoconf must be
1843 @c told which files to load, and in which order.
1845 @c @defmac AC_INCLUDE (@var{file}@dots{})
1846 @c @acindex{INCLUDE}
1847 @c @c FIXME: There is no longer shell globbing.
1848 @c Read the macro definitions that appear in the listed files.  A list of
1849 @c space-separated file names or shell globbing patterns is expected.  The
1850 @c files are read in the order they're listed.
1852 @c Because the order of definition of macros is important (only the last
1853 @c definition of a macro is used), beware that it is @code{AC_INIT} that
1854 @c loads @file{acsite.m4} and @file{aclocal.m4}.  Note that
1855 @c @code{AC_INCLUDE}ing a file before @code{AC_INIT} or within
1856 @c @file{aclocal.m4} is different from doing so after @code{AC_INIT}: in
1857 @c the latter case, non-macro lines from included files may end up in the
1858 @c @file{configure} script, whereas in the former case, they'd be discarded
1859 @c just like any text that appear before @code{AC_INIT}.
1860 @c @end defmac
1862 Packages that do manual configuration or use the @command{install} program
1863 might need to tell @command{configure} where to find some other shell
1864 scripts by calling @code{AC_CONFIG_AUX_DIR}, though the default places
1865 it looks are correct for most cases.
1867 @defmac AC_CONFIG_AUX_DIR (@var{dir})
1868 @acindex{CONFIG_AUX_DIR}
1869 Use the auxiliary build tools (e.g., @file{install-sh},
1870 @file{config.sub}, @file{config.guess}, Cygnus @command{configure},
1871 Automake and Libtool scripts, etc.)@: that are in directory @var{dir}.
1872 These are auxiliary files used in configuration.  @var{dir} can be
1873 either absolute or relative to @file{@var{srcdir}}.  The default is
1874 @file{@var{srcdir}} or @file{@var{srcdir}/..} or
1875 @file{@var{srcdir}/../..}, whichever is the first that contains
1876 @file{install-sh}.  The other files are not checked for, so that using
1877 @code{AC_PROG_INSTALL} does not automatically require distributing the
1878 other auxiliary files.  It checks for @file{install.sh} also, but that
1879 name is obsolete because some @code{make} have a rule that creates
1880 @file{install} from it if there is no makefile.
1882 The auxiliary directory is commonly named @file{build-aux}.
1883 If you need portability to @acronym{DOS} variants, do not name the
1884 auxiliary directory @file{aux}.  @xref{File System Conventions}.
1885 @end defmac
1887 @defmac AC_REQUIRE_AUX_FILE (@var{file})
1888 @acindex{REQUIRE_AUX_FILE}
1889 Declares that @var{file} is expected in the directory defined above.  In
1890 Autoconf proper, this macro does nothing: its sole purpose is to be
1891 traced by third-party tools to produce a list of expected auxiliary
1892 files.  For instance it is called by macros like @code{AC_PROG_INSTALL}
1893 (@pxref{Particular Programs}) or @code{AC_CANONICAL_BUILD}
1894 (@pxref{Canonicalizing}) to register the auxiliary files they need.
1895 @end defmac
1897 Similarly, packages that use @command{aclocal} should declare where
1898 local macros can be found using @code{AC_CONFIG_MACRO_DIR}.
1900 @defmac AC_CONFIG_MACRO_DIR (@var{dir})
1901 @acindex{CONFIG_MACRO_DIR}
1902 Future versions of @command{autopoint}, @command{libtoolize},
1903 @command{aclocal} and @command{autoreconf} will use directory
1904 @var{dir} as the location of additional local Autoconf macros.  Be
1905 sure to call this macro directly from @file{configure.ac} so that
1906 tools that install macros for @command{aclocal} can find the
1907 declaration before @option{--trace} can be called safely.
1908 @end defmac
1911 @node Output
1912 @section Outputting Files
1913 @cindex Outputting files
1915 Every Autoconf script, e.g., @file{configure.ac}, should finish by
1916 calling @code{AC_OUTPUT}.  That is the macro that generates and runs
1917 @file{config.status}, which in turn creates the makefiles and any
1918 other files resulting from configuration.  This is the only required
1919 macro besides @code{AC_INIT} (@pxref{Input}).
1921 @defmac AC_OUTPUT
1922 @acindex{OUTPUT}
1923 @cindex Instantiation
1924 Generate @file{config.status} and launch it.  Call this macro once, at
1925 the end of @file{configure.ac}.
1927 @file{config.status} performs all the configuration actions: all the
1928 output files (see @ref{Configuration Files}, macro
1929 @code{AC_CONFIG_FILES}), header files (see @ref{Configuration Headers},
1930 macro @code{AC_CONFIG_HEADERS}), commands (see @ref{Configuration
1931 Commands}, macro @code{AC_CONFIG_COMMANDS}), links (see
1932 @ref{Configuration Links}, macro @code{AC_CONFIG_LINKS}), subdirectories
1933 to configure (see @ref{Subdirectories}, macro @code{AC_CONFIG_SUBDIRS})
1934 are honored.
1936 The location of your @code{AC_OUTPUT} invocation is the exact point
1937 where configuration actions are taken: any code afterwards is
1938 executed by @code{configure} once @command{config.status} was run.  If
1939 you want to bind actions to @command{config.status} itself
1940 (independently of whether @command{configure} is being run), see
1941 @ref{Configuration Commands, , Running Arbitrary Configuration
1942 Commands}.
1943 @end defmac
1945 Historically, the usage of @code{AC_OUTPUT} was somewhat different.
1946 @xref{Obsolete Macros}, for a description of the arguments that
1947 @code{AC_OUTPUT} used to support.
1950 If you run @command{make} in subdirectories, you should run it using the
1951 @code{make} variable @code{MAKE}.  Most versions of @command{make} set
1952 @code{MAKE} to the name of the @command{make} program plus any options it
1953 was given.  (But many do not include in it the values of any variables
1954 set on the command line, so those are not passed on automatically.)
1955 Some old versions of @command{make} do not set this variable.  The
1956 following macro allows you to use it even with those versions.
1958 @defmac AC_PROG_MAKE_SET
1959 @acindex{PROG_MAKE_SET}
1960 @ovindex SET_MAKE
1961 If the Make command, @code{$MAKE} if set or else @samp{make}, predefines
1962 @code{$(MAKE)}, define output variable @code{SET_MAKE} to be empty.
1963 Otherwise, define @code{SET_MAKE} to a macro definition that sets
1964 @code{$(MAKE)}, such as @samp{MAKE=make}.  Calls @code{AC_SUBST} for
1965 @code{SET_MAKE}.
1966 @end defmac
1968 If you use this macro, place a line like this in each @file{Makefile.in}
1969 that runs @code{MAKE} on other directories:
1971 @example
1972 @@SET_MAKE@@
1973 @end example
1977 @node Configuration Actions
1978 @section Performing Configuration Actions
1979 @cindex Configuration actions
1981 @file{configure} is designed so that it appears to do everything itself,
1982 but there is actually a hidden slave: @file{config.status}.
1983 @file{configure} is in charge of examining your system, but it is
1984 @file{config.status} that actually takes the proper actions based on the
1985 results of @file{configure}.  The most typical task of
1986 @file{config.status} is to @emph{instantiate} files.
1988 This section describes the common behavior of the four standard
1989 instantiating macros: @code{AC_CONFIG_FILES}, @code{AC_CONFIG_HEADERS},
1990 @code{AC_CONFIG_COMMANDS} and @code{AC_CONFIG_LINKS}.  They all
1991 have this prototype:
1993 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
1994 @c awful.
1995 @example
1996 AC_CONFIG_FOOS(@var{tag}@dots{}, [@var{commands}], [@var{init-cmds}])
1997 @end example
1999 @noindent
2000 where the arguments are:
2002 @table @var
2003 @item tag@dots{}
2004 A blank-or-newline-separated list of tags, which are typically the names of
2005 the files to instantiate.
2007 You are encouraged to use literals as @var{tags}.  In particular, you
2008 should avoid
2010 @example
2011 @dots{} && my_foos="$my_foos fooo"
2012 @dots{} && my_foos="$my_foos foooo"
2013 AC_CONFIG_FOOS([$my_foos])
2014 @end example
2016 @noindent
2017 and use this instead:
2019 @example
2020 @dots{} && AC_CONFIG_FOOS([fooo])
2021 @dots{} && AC_CONFIG_FOOS([foooo])
2022 @end example
2024 The macros @code{AC_CONFIG_FILES} and @code{AC_CONFIG_HEADERS} use
2025 special @var{tag} values: they may have the form @samp{@var{output}} or
2026 @samp{@var{output}:@var{inputs}}.  The file @var{output} is instantiated
2027 from its templates, @var{inputs} (defaulting to @samp{@var{output}.in}).
2029 @samp{AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk)]},
2030 for example, asks for
2031 the creation of the file @file{Makefile} that contains the expansion of the
2032 output variables in the concatenation of @file{boiler/top.mk} and
2033 @file{boiler/bot.mk}.
2035 The special value @samp{-} might be used to denote the standard output
2036 when used in @var{output}, or the standard input when used in the
2037 @var{inputs}.  You most probably don't need to use this in
2038 @file{configure.ac}, but it is convenient when using the command line
2039 interface of @file{./config.status}, see @ref{config.status Invocation},
2040 for more details.
2042 The @var{inputs} may be absolute or relative file names.  In the latter
2043 case they are first looked for in the build tree, and then in the source
2044 tree.
2046 @item commands
2047 Shell commands output literally into @file{config.status}, and
2048 associated with a tag that the user can use to tell @file{config.status}
2049 which the commands to run.  The commands are run each time a @var{tag}
2050 request is given to @file{config.status}, typically each time the file
2051 @file{@var{tag}} is created.
2053 The variables set during the execution of @command{configure} are
2054 @emph{not} available here: you first need to set them via the
2055 @var{init-cmds}.  Nonetheless the following variables are precomputed:
2057 @table @code
2058 @item srcdir
2059 The name of the top source directory, assuming that the working
2060 directory is the top build directory.  This
2061 is what the @command{configure} option @option{--srcdir} sets.
2063 @item ac_top_srcdir
2064 The name of the top source directory, assuming that the working
2065 directory is the current build directory.
2068 @item ac_top_build_prefix
2069 The name of the top build directory, assuming that the working
2070 directory is the current build directory.
2071 It can be empty, or else ends with a slash, so that you may concatenate
2074 @item ac_srcdir
2075 The name of the corresponding source directory, assuming that the
2076 working directory is the current build directory.
2077 @end table
2079 @noindent
2080 The @dfn{current} directory refers to the directory (or
2081 pseudo-directory) containing the input part of @var{tags}.  For
2082 instance, running
2084 @example
2085 AC_CONFIG_COMMANDS([deep/dir/out:in/in.in], [@dots{}], [@dots{}])
2086 @end example
2088 @noindent
2089  with @option{--srcdir=../package} produces the following values:
2091 @example
2092 # Argument of --srcdir
2093 srcdir='../package'
2094 # Reversing deep/dir
2095 ac_top_build_prefix='../../'
2096 # Concatenation of $ac_top_build_prefix and srcdir
2097 ac_top_srcdir='../../../package'
2098 # Concatenation of $ac_top_srcdir and deep/dir
2099 ac_srcdir='../../../package/deep/dir'
2100 @end example
2102 @noindent
2103 independently of @samp{in/in.in}.
2105 @item init-cmds
2106 Shell commands output @emph{unquoted} near the beginning of
2107 @file{config.status}, and executed each time @file{config.status} runs
2108 (regardless of the tag).  Because they are unquoted, for example,
2109 @samp{$var} is output as the value of @code{var}.  @var{init-cmds}
2110 is typically used by @file{configure} to give @file{config.status} some
2111 variables it needs to run the @var{commands}.
2113 You should be extremely cautious in your variable names: all the
2114 @var{init-cmds} share the same name space and may overwrite each other
2115 in unpredictable ways.  Sorry@enddots{}
2116 @end table
2118 All these macros can be called multiple times, with different
2119 @var{tag} values, of course!
2122 @node Configuration Files
2123 @section Creating Configuration Files
2124 @cindex Creating configuration files
2125 @cindex Configuration file creation
2127 Be sure to read the previous section, @ref{Configuration Actions}.
2129 @defmac AC_CONFIG_FILES (@var{file}@dots{}, @ovar{cmds}, @ovar{init-cmds})
2130 @acindex{CONFIG_FILES}
2131 Make @code{AC_OUTPUT} create each @file{@var{file}} by copying an input
2132 file (by default @file{@var{file}.in}), substituting the output variable
2133 values.
2134 @c Before we used to have this feature, which was later rejected
2135 @c because it complicates the writing of makefiles:
2136 @c If the file would be unchanged, it is left untouched, to preserve
2137 @c timestamp.
2138 This macro is one of the instantiating macros; see @ref{Configuration
2139 Actions}.  @xref{Makefile Substitutions}, for more information on using
2140 output variables.  @xref{Setting Output Variables}, for more information
2141 on creating them.  This macro creates the directory that the file is in
2142 if it doesn't exist.  Usually, makefiles are created this way,
2143 but other files, such as @file{.gdbinit}, can be specified as well.
2145 Typical calls to @code{AC_CONFIG_FILES} look like this:
2147 @example
2148 AC_CONFIG_FILES([Makefile src/Makefile man/Makefile X/Imakefile])
2149 AC_CONFIG_FILES([autoconf], [chmod +x autoconf])
2150 @end example
2152 You can override an input file name by appending to @var{file} a
2153 colon-separated list of input files.  Examples:
2155 @example
2156 AC_CONFIG_FILES([Makefile:boiler/top.mk:boiler/bot.mk]
2157                 [lib/Makefile:boiler/lib.mk])
2158 @end example
2160 @noindent
2161 Doing this allows you to keep your file names acceptable to
2162 @acronym{DOS} variants, or
2163 to prepend and/or append boilerplate to the file.
2164 @end defmac
2168 @node Makefile Substitutions
2169 @section Substitutions in Makefiles
2170 @cindex Substitutions in makefiles
2171 @cindex Makefile substitutions
2173 Each subdirectory in a distribution that contains something to be
2174 compiled or installed should come with a file @file{Makefile.in}, from
2175 which @command{configure} creates a file @file{Makefile} in that directory.
2176 To create @file{Makefile}, @command{configure} performs a simple variable
2177 substitution, replacing occurrences of @samp{@@@var{variable}@@} in
2178 @file{Makefile.in} with the value that @command{configure} has determined
2179 for that variable.  Variables that are substituted into output files in
2180 this way are called @dfn{output variables}.  They are ordinary shell
2181 variables that are set in @command{configure}.  To make @command{configure}
2182 substitute a particular variable into the output files, the macro
2183 @code{AC_SUBST} must be called with that variable name as an argument.
2184 Any occurrences of @samp{@@@var{variable}@@} for other variables are
2185 left unchanged.  @xref{Setting Output Variables}, for more information
2186 on creating output variables with @code{AC_SUBST}.
2188 A software package that uses a @command{configure} script should be
2189 distributed with a file @file{Makefile.in}, but no makefile; that
2190 way, the user has to properly configure the package for the local system
2191 before compiling it.
2193 @xref{Makefile Conventions, , Makefile Conventions, standards, The
2194 @acronym{GNU} Coding Standards}, for more information on what to put in
2195 makefiles.
2197 @menu
2198 * Preset Output Variables::     Output variables that are always set
2199 * Installation Directory Variables::  Other preset output variables
2200 * Build Directories::           Supporting multiple concurrent compiles
2201 * Automatic Remaking::          Makefile rules for configuring
2202 @end menu
2204 @node Preset Output Variables
2205 @subsection Preset Output Variables
2206 @cindex Output variables
2208 Some output variables are preset by the Autoconf macros.  Some of the
2209 Autoconf macros set additional output variables, which are mentioned in
2210 the descriptions for those macros.  @xref{Output Variable Index}, for a
2211 complete list of output variables.  @xref{Installation Directory
2212 Variables}, for the list of the preset ones related to installation
2213 directories.  Below are listed the other preset ones.  They all are
2214 precious variables (@pxref{Setting Output Variables},
2215 @code{AC_ARG_VAR}).
2217 @c Just say no to ASCII sorting!  We're humans, not computers.
2218 @c These variables are listed as they would be in a dictionary:
2219 @c actor
2220 @c Actress
2221 @c actress
2223 @defvar CFLAGS
2224 @ovindex CFLAGS
2225 Debugging and optimization options for the C compiler.  If it is not set
2226 in the environment when @command{configure} runs, the default value is set
2227 when you call @code{AC_PROG_CC} (or empty if you don't).  @command{configure}
2228 uses this variable when compiling programs to test for C features.
2229 @end defvar
2231 @defvar configure_input
2232 @ovindex configure_input
2233 A comment saying that the file was generated automatically by
2234 @command{configure} and giving the name of the input file.
2235 @code{AC_OUTPUT} adds a comment line containing this variable to the top
2236 of every makefile it creates.  For other files, you should
2237 reference this variable in a comment at the top of each input file.  For
2238 example, an input shell script should begin like this:
2240 @example
2241 #!/bin/sh
2242 # @@configure_input@@
2243 @end example
2245 @noindent
2246 The presence of that line also reminds people editing the file that it
2247 needs to be processed by @command{configure} in order to be used.
2248 @end defvar
2250 @defvar CPPFLAGS
2251 @ovindex CPPFLAGS
2252 Header file search directory (@option{-I@var{dir}}) and any other
2253 miscellaneous options for the C and C++ preprocessors and compilers.  If
2254 it is not set in the environment when @command{configure} runs, the default
2255 value is empty.  @command{configure} uses this variable when compiling or
2256 preprocessing programs to test for C and C++ features.
2257 @xref{Special Chars in Variables}, for limitations that @code{CPPFLAGS}
2258 might run into.
2259 @end defvar
2261 @defvar CXXFLAGS
2262 @ovindex CXXFLAGS
2263 Debugging and optimization options for the C++ compiler.  If it is not
2264 set in the environment when @command{configure} runs, the default value is
2265 set when you call @code{AC_PROG_CXX} (or empty if you don't).
2266 @command{configure} uses this variable when compiling programs to test for
2267 C++ features.
2268 @end defvar
2270 @defvar DEFS
2271 @ovindex DEFS
2272 @option{-D} options to pass to the C compiler.  If @code{AC_CONFIG_HEADERS}
2273 is called, @command{configure} replaces @samp{@@DEFS@@} with
2274 @option{-DHAVE_CONFIG_H} instead (@pxref{Configuration Headers}).  This
2275 variable is not defined while @command{configure} is performing its tests,
2276 only when creating the output files.  @xref{Setting Output Variables}, for
2277 how to check the results of previous tests.
2278 @end defvar
2280 @defvar ECHO_C
2281 @defvarx ECHO_N
2282 @defvarx ECHO_T
2283 @ovindex ECHO_C
2284 @ovindex ECHO_N
2285 @ovindex ECHO_T
2286 How does one suppress the trailing newline from @command{echo} for
2287 question-answer message pairs?  These variables provide a way:
2289 @example
2290 echo $ECHO_N "And the winner is... $ECHO_C"
2291 sleep 100000000000
2292 echo "$@{ECHO_T@}dead."
2293 @end example
2295 @noindent
2296 Some old and uncommon @command{echo} implementations offer no means to
2297 achieve this, in which case @code{ECHO_T} is set to tab.  You might not
2298 want to use it.
2299 @end defvar
2301 @defvar ERLCFLAGS
2302 @ovindex ERLCFLAGS
2303 Debugging and optimization options for the Erlang compiler.  If it is not set
2304 in the environment when @command{configure} runs, the default value is empty.
2305 @command{configure} uses this variable when compiling programs to test for
2306 Erlang features.
2307 @end defvar
2309 @defvar FCFLAGS
2310 @ovindex FCFLAGS
2311 Debugging and optimization options for the Fortran compiler.  If it
2312 is not set in the environment when @command{configure} runs, the default
2313 value is set when you call @code{AC_PROG_FC} (or empty if you don't).
2314 @command{configure} uses this variable when compiling programs to test for
2315 Fortran features.
2316 @end defvar
2318 @defvar FFLAGS
2319 @ovindex FFLAGS
2320 Debugging and optimization options for the Fortran 77 compiler.  If it
2321 is not set in the environment when @command{configure} runs, the default
2322 value is set when you call @code{AC_PROG_F77} (or empty if you don't).
2323 @command{configure} uses this variable when compiling programs to test for
2324 Fortran 77 features.
2325 @end defvar
2327 @defvar LDFLAGS
2328 @ovindex LDFLAGS
2329 Stripping (@option{-s}), path (@option{-L}), and any other miscellaneous
2330 options for the linker.  Don't use this variable to pass library names
2331 (@option{-l}) to the linker, use @code{LIBS} instead.  If it is not set
2332 in the environment when @command{configure} runs, the default value is empty.
2333 @command{configure} uses this variable when linking programs to test for
2334 C, C++, and Fortran features.
2335 @end defvar
2337 @defvar LIBS
2338 @ovindex LIBS
2339 @option{-l} options to pass to the linker.  The default value is empty,
2340 but some Autoconf macros may prepend extra libraries to this variable if
2341 those libraries are found and provide necessary functions, see
2342 @ref{Libraries}.  @command{configure} uses this variable when linking
2343 programs to test for C, C++, and Fortran features.
2344 @end defvar
2346 @defvar OBJCFLAGS
2347 @ovindex OBJCFLAGS
2348 Debugging and optimization options for the Objective C compiler.  If it is
2349 not set in the environment when @command{configure} runs, the default value
2350 is set when you call @code{AC_PROG_OBJC} (or empty if you don't).
2351 @command{configure} uses this variable when compiling programs to test for
2352 Objective C features.
2353 @end defvar
2355 @defvar builddir
2356 @ovindex builddir
2357 Rigorously equal to @samp{.}.  Added for symmetry only.
2358 @end defvar
2360 @defvar abs_builddir
2361 @ovindex abs_builddir
2362 Absolute name of @code{builddir}.
2363 @end defvar
2365 @defvar top_builddir
2366 @ovindex top_builddir
2367 The relative name of the top level of the current build tree.  In the
2368 top-level directory, this is the same as @code{builddir}.
2369 @end defvar
2371 @defvar abs_top_builddir
2372 @ovindex abs_top_builddir
2373 Absolute name of @code{top_builddir}.
2374 @end defvar
2376 @defvar srcdir
2377 @ovindex srcdir
2378 The relative name of the directory that contains the source code for
2379 that makefile.
2380 @end defvar
2382 @defvar abs_srcdir
2383 @ovindex abs_srcdir
2384 Absolute name of @code{srcdir}.
2385 @end defvar
2387 @defvar top_srcdir
2388 @ovindex top_srcdir
2389 The relative name of the top-level source code directory for the
2390 package.  In the top-level directory, this is the same as @code{srcdir}.
2391 @end defvar
2393 @defvar abs_top_srcdir
2394 @ovindex abs_top_srcdir
2395 Absolute name of @code{top_srcdir}.
2396 @end defvar
2398 @node Installation Directory Variables
2399 @subsection Installation Directory Variables
2400 @cindex Installation directories
2401 @cindex Directories, installation
2403 The following variables specify the directories for
2404 package installation, see @ref{Directory Variables, , Variables for
2405 Installation Directories, standards, The @acronym{GNU} Coding
2406 Standards}, for more information.  See the end of this section for
2407 details on when and how to use these variables.
2409 @defvar bindir
2410 @ovindex bindir
2411 The directory for installing executables that users run.
2412 @end defvar
2414 @defvar datadir
2415 @ovindex datadir
2416 The directory for installing idiosyncratic read-only
2417 architecture-independent data.
2418 @end defvar
2420 @defvar datarootdir
2421 @ovindex datarootdir
2422 The root of the directory tree for read-only architecture-independent
2423 data files.
2424 @end defvar
2426 @defvar docdir
2427 @ovindex docdir
2428 The directory for installing documentation files (other than Info and
2429 man).
2430 @end defvar
2432 @defvar dvidir
2433 @ovindex dvidir
2434 The directory for installing documentation files in DVI format.
2435 @end defvar
2437 @defvar exec_prefix
2438 @ovindex exec_prefix
2439 The installation prefix for architecture-dependent files.  By default
2440 it's the same as @var{prefix}.  You should avoid installing anything
2441 directly to @var{exec_prefix}.  However, the default value for
2442 directories containing architecture-dependent files should be relative
2443 to @var{exec_prefix}.
2444 @end defvar
2446 @defvar htmldir
2447 @ovindex htmldir
2448 The directory for installing HTML documentation.
2449 @end defvar
2451 @defvar includedir
2452 @ovindex includedir
2453 The directory for installing C header files.
2454 @end defvar
2456 @defvar infodir
2457 @ovindex infodir
2458 The directory for installing documentation in Info format.
2459 @end defvar
2461 @defvar libdir
2462 @ovindex libdir
2463 The directory for installing object code libraries.
2464 @end defvar
2466 @defvar libexecdir
2467 @ovindex libexecdir
2468 The directory for installing executables that other programs run.
2469 @end defvar
2471 @defvar localedir
2472 @ovindex localedir
2473 The directory for installing locale-dependent but
2474 architecture-independent data, such as message catalogs.  This directory
2475 usually has a subdirectory per locale.
2476 @end defvar
2478 @defvar localstatedir
2479 @ovindex localstatedir
2480 The directory for installing modifiable single-machine data.
2481 @end defvar
2483 @defvar mandir
2484 @ovindex mandir
2485 The top-level directory for installing documentation in man format.
2486 @end defvar
2488 @defvar oldincludedir
2489 @ovindex oldincludedir
2490 The directory for installing C header files for non-GCC compilers.
2491 @end defvar
2493 @defvar pdfdir
2494 @ovindex pdfdir
2495 The directory for installing PDF documentation.
2496 @end defvar
2498 @defvar prefix
2499 @ovindex prefix
2500 The common installation prefix for all files.  If @var{exec_prefix}
2501 is defined to a different value, @var{prefix} is used only for
2502 architecture-independent files.
2503 @end defvar
2505 @defvar psdir
2506 @ovindex psdir
2507 The directory for installing PostScript documentation.
2508 @end defvar
2510 @defvar sbindir
2511 @ovindex sbindir
2512 The directory for installing executables that system
2513 administrators run.
2514 @end defvar
2516 @defvar sharedstatedir
2517 @ovindex sharedstatedir
2518 The directory for installing modifiable architecture-independent data.
2519 @end defvar
2521 @defvar sysconfdir
2522 @ovindex sysconfdir
2523 The directory for installing read-only single-machine data.
2524 @end defvar
2527 Most of these variables have values that rely on @code{prefix} or
2528 @code{exec_prefix}.  It is deliberate that the directory output
2529 variables keep them unexpanded: typically @samp{@@datarootdir@@} is
2530 replaced by @samp{$@{prefix@}/share}, not @samp{/usr/local/share}, and
2531 @samp{@@datadir@@} is replaced by @samp{$@{datarootdir@}}.
2533 This behavior is mandated by the @acronym{GNU} coding standards, so that when
2534 the user runs:
2536 @table @samp
2537 @item make
2538 she can still specify a different prefix from the one specified to
2539 @command{configure}, in which case, if needed, the package should hard
2540 code dependencies corresponding to the make-specified prefix.
2542 @item make install
2543 she can specify a different installation location, in which case the
2544 package @emph{must} still depend on the location which was compiled in
2545 (i.e., never recompile when @samp{make install} is run).  This is an
2546 extremely important feature, as many people may decide to install all
2547 the files of a package grouped together, and then install links from
2548 the final locations to there.
2549 @end table
2551 In order to support these features, it is essential that
2552 @code{datarootdir} remains being defined as @samp{$@{prefix@}/share} to
2553 depend upon the current value of @code{prefix}.
2555 A corollary is that you should not use these variables except in
2556 makefiles.  For instance, instead of trying to evaluate @code{datadir}
2557 in @file{configure} and hard-coding it in makefiles using
2558 e.g., @samp{AC_DEFINE_UNQUOTED([DATADIR], ["$datadir"], [Data directory.])},
2559 you should add
2560 @option{-DDATADIR='$(datadir)'} to your makefile's definition of
2561 @code{CPPFLAGS} (@code{AM_CPPFLAGS} if you are also using Automake).
2563 Similarly, you should not rely on @code{AC_CONFIG_FILES} to replace
2564 @code{datadir} and friends in your shell scripts and other files; instead,
2565 let @command{make} manage their replacement.  For instance Autoconf
2566 ships templates of its shell scripts ending with @samp{.in}, and uses a
2567 makefile snippet similar to the following to build scripts like
2568 @command{autoheader} and @command{autom4te}:
2570 @example
2571 @group
2572 edit = sed \
2573         -e 's|@@datadir[@@]|$(pkgdatadir)|g' \
2574         -e 's|@@prefix[@@]|$(prefix)|g'
2575 @end group
2577 @group
2578 autoheader autom4te: Makefile
2579         rm -f $@@ $@@.tmp
2580         $(edit) $(srcdir)/$@@.in >$@@.tmp
2581         chmod +x $@@.tmp
2582         chmod a-w $@@.tmp
2583         mv $@@.tmp $@@
2584 @end group
2586 @group
2587 autoheader: $(srcdir)/autoheader.in
2588 autom4te: $(srcdir)/autom4te.in
2589 @end group
2590 @end example
2592 Some details are noteworthy:
2594 @table @samp
2595 @item @@datadir[@@]
2596 The brackets prevent @command{configure} from replacing
2597 @samp{@@datadir@@} in the Sed expression itself.
2598 Brackets are preferable to a backslash here, since
2599 Posix says @samp{\@@} is not portable.
2601 @item $(pkgdatadir)
2602 Don't use @samp{@@pkgdatadir@@}!  Use the matching makefile variable
2603 instead.
2605 @item ,
2606 Don't use @samp{/} in the Sed expression(s) since most likely the
2607 variables you use, such as @samp{$(pkgdatadir)}, contain @samp{/}.
2609 @item Dependency on @file{Makefile}
2610 Since @code{edit} uses values that depend on the configuration specific
2611 values (@code{prefix}, etc.)@: and not only on @code{VERSION} and so forth,
2612 the output depends on @file{Makefile}, not @file{configure.ac}.
2614 @item $@@
2615 The main rule is generic, and uses @samp{$@@} extensively to
2616 avoid the need for multiple copies of the rule.
2618 @item Separated dependencies and Single Suffix Rules
2619 You can't use them!  The above snippet cannot be (portably) rewritten
2622 @example
2623 autoconf autoheader: Makefile
2624 @group
2625 .in:
2626         rm -f $@@ $@@.tmp
2627         $(edit) $< >$@@.tmp
2628         chmod +x $@@.tmp
2629         mv $@@.tmp $@@
2630 @end group
2631 @end example
2633 @xref{Single Suffix Rules}, for details.
2635 @item $(srcdir)
2636 Be sure to specify the name of the source directory,
2637 otherwise the package won't support separated builds.
2639 @item VPATH
2640 The value of @code{VPATH} should not contain shell metacharacters or white
2641 space.  @xref{Special Chars in Variables}.
2642 @end table
2644 For the more specific installation of Erlang libraries, the following variables
2645 are defined:
2647 @defvar ERLANG_INSTALL_LIB_DIR
2648 @ovindex ERLANG_INSTALL_LIB_DIR
2649 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
2650 The common parent directory of Erlang library installation directories.
2651 This variable is set by calling the @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR}
2652 macro in @file{configure.ac}.
2653 @end defvar
2655 @defvar ERLANG_INSTALL_LIB_DIR_@var{library}
2656 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
2657 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
2658 The installation directory for Erlang library @var{library}.
2659 This variable is set by calling the
2660 @samp{AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR(@var{library}, @var{version}}
2661 macro in @file{configure.ac}.
2662 @end defvar
2664 @xref{Erlang Libraries}, for details.
2667 @node Build Directories
2668 @subsection Build Directories
2669 @cindex Build directories
2670 @cindex Directories, build
2672 You can support compiling a software package for several architectures
2673 simultaneously from the same copy of the source code.  The object files
2674 for each architecture are kept in their own directory.
2676 To support doing this, @command{make} uses the @code{VPATH} variable to
2677 find the files that are in the source directory.  @acronym{GNU} Make
2678 and most other recent @command{make} programs can do this.  Older
2679 @command{make} programs do not support @code{VPATH}; when using them, the
2680 source code must be in the same directory as the object files.
2682 To support @code{VPATH}, each @file{Makefile.in} should contain two
2683 lines that look like:
2685 @example
2686 srcdir = @@srcdir@@
2687 VPATH = @@srcdir@@
2688 @end example
2690 Do not set @code{VPATH} to the value of another variable, for example
2691 @samp{VPATH = $(srcdir)}, because some versions of @command{make} do not do
2692 variable substitutions on the value of @code{VPATH}.
2694 @command{configure} substitutes the correct value for @code{srcdir} when
2695 it produces @file{Makefile}.
2697 Do not use the @code{make} variable @code{$<}, which expands to the
2698 file name of the file in the source directory (found with @code{VPATH}),
2699 except in implicit rules.  (An implicit rule is one such as @samp{.c.o},
2700 which tells how to create a @file{.o} file from a @file{.c} file.)  Some
2701 versions of @command{make} do not set @code{$<} in explicit rules; they
2702 expand it to an empty value.
2704 Instead, Make command lines should always refer to source
2705 files by prefixing them with @samp{$(srcdir)/}.  For example:
2707 @example
2708 time.info: time.texinfo
2709         $(MAKEINFO) $(srcdir)/time.texinfo
2710 @end example
2712 @node Automatic Remaking
2713 @subsection Automatic Remaking
2714 @cindex Automatic remaking
2715 @cindex Remaking automatically
2717 You can put rules like the following in the top-level @file{Makefile.in}
2718 for a package to automatically update the configuration information when
2719 you change the configuration files.  This example includes all of the
2720 optional files, such as @file{aclocal.m4} and those related to
2721 configuration header files.  Omit from the @file{Makefile.in} rules for
2722 any of these files that your package does not use.
2724 The @samp{$(srcdir)/} prefix is included because of limitations in the
2725 @code{VPATH} mechanism.
2727 The @file{stamp-} files are necessary because the timestamps of
2728 @file{config.h.in} and @file{config.h} are not changed if remaking
2729 them does not change their contents.  This feature avoids unnecessary
2730 recompilation.  You should include the file @file{stamp-h.in} your
2731 package's distribution, so that @command{make} considers
2732 @file{config.h.in} up to date.  Don't use @command{touch}
2733 (@pxref{Limitations of Usual Tools}); instead, use @command{echo} (using
2734 @command{date} would cause needless differences, hence @acronym{CVS}
2735 conflicts, etc.).
2737 @example
2738 @group
2739 $(srcdir)/configure: configure.ac aclocal.m4
2740         cd $(srcdir) && autoconf
2742 # autoheader might not change config.h.in, so touch a stamp file.
2743 $(srcdir)/config.h.in: stamp-h.in
2744 $(srcdir)/stamp-h.in: configure.ac aclocal.m4
2745         cd $(srcdir) && autoheader
2746         echo timestamp > $(srcdir)/stamp-h.in
2748 config.h: stamp-h
2749 stamp-h: config.h.in config.status
2750         ./config.status
2752 Makefile: Makefile.in config.status
2753         ./config.status
2755 config.status: configure
2756         ./config.status --recheck
2757 @end group
2758 @end example
2760 @noindent
2761 (Be careful if you copy these lines directly into your makefile, as you
2762 need to convert the indented lines to start with the tab character.)
2764 In addition, you should use
2766 @example
2767 AC_CONFIG_FILES([stamp-h], [echo timestamp > stamp-h])
2768 @end example
2770 @noindent
2771 so @file{config.status} ensures that @file{config.h} is considered up to
2772 date.  @xref{Output}, for more information about @code{AC_OUTPUT}.
2774 @xref{config.status Invocation}, for more examples of handling
2775 configuration-related dependencies.
2777 @node Configuration Headers
2778 @section Configuration Header Files
2779 @cindex Configuration Header
2780 @cindex @file{config.h}
2782 When a package contains more than a few tests that define C preprocessor
2783 symbols, the command lines to pass @option{-D} options to the compiler
2784 can get quite long.  This causes two problems.  One is that the
2785 @command{make} output is hard to visually scan for errors.  More
2786 seriously, the command lines can exceed the length limits of some
2787 operating systems.  As an alternative to passing @option{-D} options to
2788 the compiler, @command{configure} scripts can create a C header file
2789 containing @samp{#define} directives.  The @code{AC_CONFIG_HEADERS}
2790 macro selects this kind of output.  Though it can be called anywhere
2791 between @code{AC_INIT} and @code{AC_OUTPUT}, it is customary to call
2792 it right after @code{AC_INIT}.
2794 The package should @samp{#include} the configuration header file before
2795 any other header files, to prevent inconsistencies in declarations (for
2796 example, if it redefines @code{const}).
2798 To provide for VPATH builds, remember to pass the C compiler a @option{-I.}
2799 option (or @option{-I..}; whichever directory contains @file{config.h}).
2800 Even if you use @samp{#include "config.h"}, the preprocessor searches only
2801 the directory of the currently read file, i.e., the source directory, not
2802 the build directory.
2804 With the appropriate @option{-I} option, you can use
2805 @samp{#include <config.h>}.  Actually, it's a good habit to use it,
2806 because in the rare case when the source directory contains another
2807 @file{config.h}, the build directory should be searched first.
2810 @defmac AC_CONFIG_HEADERS (@var{header} @dots{}, @ovar{cmds}, @ovar{init-cmds})
2811 @acindex{CONFIG_HEADERS}
2812 @cvindex HAVE_CONFIG_H
2813 This macro is one of the instantiating macros; see @ref{Configuration
2814 Actions}.  Make @code{AC_OUTPUT} create the file(s) in the
2815 blank-or-newline-separated list @var{header} containing C preprocessor
2816 @code{#define} statements, and replace @samp{@@DEFS@@} in generated
2817 files with @option{-DHAVE_CONFIG_H} instead of the value of @code{DEFS}.
2818 The usual name for @var{header} is @file{config.h}.
2820 If @var{header} already exists and its contents are identical to what
2821 @code{AC_OUTPUT} would put in it, it is left alone.  Doing this allows
2822 making some changes in the configuration without needlessly causing
2823 object files that depend on the header file to be recompiled.
2825 Usually the input file is named @file{@var{header}.in}; however, you can
2826 override the input file name by appending to @var{header} a
2827 colon-separated list of input files.  Examples:
2829 @example
2830 AC_CONFIG_HEADERS([config.h:config.hin])
2831 AC_CONFIG_HEADERS([defines.h:defs.pre:defines.h.in:defs.post])
2832 @end example
2834 @noindent
2835 Doing this allows you to keep your file names acceptable to
2836 @acronym{DOS} variants, or
2837 to prepend and/or append boilerplate to the file.
2838 @end defmac
2840 @defmac AH_HEADER
2841 @ahindex{HEADER}
2842 This macro is defined as the name of the first declared config header
2843 and undefined if no config headers have been declared up to this point.
2844 A third-party macro may, for example, require use of a config header
2845 without invoking AC_CONFIG_HEADERS twice, like this:
2847 @example
2848 AC_CONFIG_COMMANDS_PRE(
2849         [m4_ifndef([AH_HEADER], [AC_CONFIG_HEADERS([config.h])])])
2850 @end example
2852 @end defmac
2854 @xref{Configuration Actions}, for more details on @var{header}.
2856 @menu
2857 * Header Templates::            Input for the configuration headers
2858 * autoheader Invocation::       How to create configuration templates
2859 * Autoheader Macros::           How to specify CPP templates
2860 @end menu
2862 @node Header Templates
2863 @subsection Configuration Header Templates
2864 @cindex Configuration Header Template
2865 @cindex Header templates
2866 @cindex @file{config.h.in}
2868 Your distribution should contain a template file that looks as you want
2869 the final header file to look, including comments, with @code{#undef}
2870 statements which are used as hooks.  For example, suppose your
2871 @file{configure.ac} makes these calls:
2873 @example
2874 AC_CONFIG_HEADERS([conf.h])
2875 AC_CHECK_HEADERS([unistd.h])
2876 @end example
2878 @noindent
2879 Then you could have code like the following in @file{conf.h.in}.  On
2880 systems that have @file{unistd.h}, @command{configure} defines
2881 @samp{HAVE_UNISTD_H} to 1.  On other systems, the whole line is
2882 commented out (in case the system predefines that symbol).
2884 @example
2885 @group
2886 /* Define as 1 if you have unistd.h.  */
2887 #undef HAVE_UNISTD_H
2888 @end group
2889 @end example
2891 Pay attention that @samp{#undef} is in the first column, and there is
2892 nothing after @samp{HAVE_UNISTD_H}, not even white space.  You can
2893 then decode the configuration header using the preprocessor directives:
2895 @example
2896 @group
2897 #include <conf.h>
2899 #if HAVE_UNISTD_H
2900 # include <unistd.h>
2901 #else
2902 /* We are in trouble.  */
2903 #endif
2904 @end group
2905 @end example
2907 The use of old form templates, with @samp{#define} instead of
2908 @samp{#undef} is strongly discouraged.  Similarly with old templates
2909 with comments on the same line as the @samp{#undef}.  Anyway, putting
2910 comments in preprocessor macros has never been a good idea.
2912 Since it is a tedious task to keep a template header up to date, you may
2913 use @command{autoheader} to generate it, see @ref{autoheader Invocation}.
2916 @node autoheader Invocation
2917 @subsection Using @command{autoheader} to Create @file{config.h.in}
2918 @cindex @command{autoheader}
2920 The @command{autoheader} program can create a template file of C
2921 @samp{#define} statements for @command{configure} to use.  If
2922 @file{configure.ac} invokes @code{AC_CONFIG_HEADERS(@var{file})},
2923 @command{autoheader} creates @file{@var{file}.in}; if multiple file
2924 arguments are given, the first one is used.  Otherwise,
2925 @command{autoheader} creates @file{config.h.in}.
2927 In order to do its job, @command{autoheader} needs you to document all
2928 of the symbols that you might use.  Typically this is done via an
2929 @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED} call whose first argument
2930 is a literal symbol and whose third argument describes the symbol
2931 (@pxref{Defining Symbols}).  Alternatively, you can use
2932 @code{AH_TEMPLATE} (@pxref{Autoheader Macros}), or you can supply a
2933 suitable input file for a subsequent configuration header file.
2934 Symbols defined by Autoconf's builtin tests are already documented properly;
2935 you need to document only those that you
2936 define yourself.
2938 You might wonder why @command{autoheader} is needed: after all, why
2939 would @command{configure} need to ``patch'' a @file{config.h.in} to
2940 produce a @file{config.h} instead of just creating @file{config.h} from
2941 scratch?  Well, when everything rocks, the answer is just that we are
2942 wasting our time maintaining @command{autoheader}: generating
2943 @file{config.h} directly is all that is needed.  When things go wrong,
2944 however, you'll be thankful for the existence of @command{autoheader}.
2946 The fact that the symbols are documented is important in order to
2947 @emph{check} that @file{config.h} makes sense.  The fact that there is a
2948 well-defined list of symbols that should be defined (or not) is
2949 also important for people who are porting packages to environments where
2950 @command{configure} cannot be run: they just have to @emph{fill in the
2951 blanks}.
2953 But let's come back to the point: the invocation of @command{autoheader}@dots{}
2955 If you give @command{autoheader} an argument, it uses that file instead
2956 of @file{configure.ac} and writes the header file to the standard output
2957 instead of to @file{config.h.in}.  If you give @command{autoheader} an
2958 argument of @option{-}, it reads the standard input instead of
2959 @file{configure.ac} and writes the header file to the standard output.
2961 @command{autoheader} accepts the following options:
2963 @table @option
2964 @item --help
2965 @itemx -h
2966 Print a summary of the command line options and exit.
2968 @item --version
2969 @itemx -V
2970 Print the version number of Autoconf and exit.
2972 @item --verbose
2973 @itemx -v
2974 Report processing steps.
2976 @item --debug
2977 @itemx -d
2978 Don't remove the temporary files.
2980 @item --force
2981 @itemx -f
2982 Remake the template file even if newer than its input files.
2984 @item --include=@var{dir}
2985 @itemx -I @var{dir}
2986 Append @var{dir} to the include path.  Multiple invocations accumulate.
2988 @item --prepend-include=@var{dir}
2989 @item -B @var{dir}
2990 Prepend @var{dir} to the include path.  Multiple invocations accumulate.
2992 @item --warnings=@var{category}
2993 @itemx -W @var{category}
2994 @evindex WARNINGS
2995 Report the warnings related to @var{category} (which can actually be a
2996 comma separated list).  Current categories include:
2998 @table @samp
2999 @item obsolete
3000 report the uses of obsolete constructs
3002 @item all
3003 report all the warnings
3005 @item none
3006 report none
3008 @item error
3009 treats warnings as errors
3011 @item no-@var{category}
3012 disable warnings falling into @var{category}
3013 @end table
3015 @end table
3019 @node Autoheader Macros
3020 @subsection Autoheader Macros
3021 @cindex Autoheader macros
3023 @command{autoheader} scans @file{configure.ac} and figures out which C
3024 preprocessor symbols it might define.  It knows how to generate
3025 templates for symbols defined by @code{AC_CHECK_HEADERS},
3026 @code{AC_CHECK_FUNCS} etc., but if you @code{AC_DEFINE} any additional
3027 symbol, you must define a template for it.  If there are missing
3028 templates, @command{autoheader} fails with an error message.
3030 The simplest way to create a template for a @var{symbol} is to supply
3031 the @var{description} argument to an @samp{AC_DEFINE(@var{symbol})}; see
3032 @ref{Defining Symbols}.  You may also use one of the following macros.
3034 @defmac AH_VERBATIM (@var{key}, @var{template})
3035 @ahindex{VERBATIM}
3036 Tell @command{autoheader} to include the @var{template} as-is in the header
3037 template file.  This @var{template} is associated with the @var{key},
3038 which is used to sort all the different templates and guarantee their
3039 uniqueness.  It should be a symbol that can be defined via @code{AC_DEFINE}.
3041 For example:
3043 @example
3044 AH_VERBATIM([_GNU_SOURCE],
3045 [/* Enable GNU extensions on systems that have them.  */
3046 #ifndef _GNU_SOURCE
3047 # define _GNU_SOURCE
3048 #endif])
3049 @end example
3050 @end defmac
3053 @defmac AH_TEMPLATE (@var{key}, @var{description})
3054 @ahindex{TEMPLATE}
3055 Tell @command{autoheader} to generate a template for @var{key}.  This macro
3056 generates standard templates just like @code{AC_DEFINE} when a
3057 @var{description} is given.
3059 For example:
3061 @example
3062 AH_TEMPLATE([CRAY_STACKSEG_END],
3063             [Define to one of _getb67, GETB67, getb67
3064              for Cray-2 and Cray-YMP systems.  This
3065              function is required for alloca.c support
3066              on those systems.])
3067 @end example
3069 @noindent
3070 generates the following template, with the description properly
3071 justified.
3073 @example
3074 /* Define to one of _getb67, GETB67, getb67 for Cray-2 and
3075    Cray-YMP systems.  This function is required for alloca.c
3076    support on those systems.  */
3077 #undef CRAY_STACKSEG_END
3078 @end example
3079 @end defmac
3082 @defmac AH_TOP (@var{text})
3083 @ahindex{TOP}
3084 Include @var{text} at the top of the header template file.
3085 @end defmac
3088 @defmac AH_BOTTOM (@var{text})
3089 @ahindex{BOTTOM}
3090 Include @var{text} at the bottom of the header template file.
3091 @end defmac
3094 @node Configuration Commands
3095 @section Running Arbitrary Configuration Commands
3096 @cindex Configuration commands
3097 @cindex Commands for configuration
3099 You can execute arbitrary commands before, during, and after
3100 @file{config.status} is run.  The three following macros accumulate the
3101 commands to run when they are called multiple times.
3102 @code{AC_CONFIG_COMMANDS} replaces the obsolete macro
3103 @code{AC_OUTPUT_COMMANDS}; see @ref{Obsolete Macros}, for details.
3105 @defmac AC_CONFIG_COMMANDS (@var{tag}@dots{}, @ovar{cmds}, @ovar{init-cmds})
3106 @acindex{CONFIG_COMMANDS}
3107 Specify additional shell commands to run at the end of
3108 @file{config.status}, and shell commands to initialize any variables
3109 from @command{configure}.  Associate the commands with @var{tag}.
3110 Since typically the @var{cmds} create a file, @var{tag} should
3111 naturally be the name of that file.  If needed, the directory hosting
3112 @var{tag} is created.  This macro is one of the instantiating macros;
3113 see @ref{Configuration Actions}.
3115 Here is an unrealistic example:
3116 @example
3117 fubar=42
3118 AC_CONFIG_COMMANDS([fubar],
3119                    [echo this is extra $fubar, and so on.],
3120                    [fubar=$fubar])
3121 @end example
3123 Here is a better one:
3124 @example
3125 AC_CONFIG_COMMANDS([timestamp], [date >timestamp])
3126 @end example
3127 @end defmac
3129 The following two macros look similar, but in fact they are not of the same
3130 breed: they are executed directly by @file{configure}, so you cannot use
3131 @file{config.status} to rerun them.
3133 @c Yet it is good to leave them here.  The user sees them together and
3134 @c decides which best fits their needs.
3136 @defmac AC_CONFIG_COMMANDS_PRE (@var{cmds})
3137 @acindex{CONFIG_COMMANDS_PRE}
3138 Execute the @var{cmds} right before creating @file{config.status}.
3140 This macro presents the last opportunity to call @code{AC_SUBST},
3141 @code{AC_DEFINE}, or @code{AC_CONFIG_FOOS} macros.
3142 @end defmac
3144 @defmac AC_CONFIG_COMMANDS_POST (@var{cmds})
3145 @acindex{CONFIG_COMMANDS_POST}
3146 Execute the @var{cmds} right after creating @file{config.status}.
3147 @end defmac
3152 @node Configuration Links
3153 @section Creating Configuration Links
3154 @cindex Configuration links
3155 @cindex Links for configuration
3157 You may find it convenient to create links whose destinations depend upon
3158 results of tests.  One can use @code{AC_CONFIG_COMMANDS} but the
3159 creation of relative symbolic links can be delicate when the package is
3160 built in a directory different from the source directory.
3162 @defmac AC_CONFIG_LINKS (@var{dest}:@var{source}@dots{}, @ovar{cmds}, @ovar{init-cmds})
3163 @acindex{CONFIG_LINKS}
3164 @cindex Links
3165 Make @code{AC_OUTPUT} link each of the existing files @var{source} to
3166 the corresponding link name @var{dest}.  Makes a symbolic link if
3167 possible, otherwise a hard link if possible, otherwise a copy.  The
3168 @var{dest} and @var{source} names should be relative to the top level
3169 source or build directory.  This macro is one of the instantiating
3170 macros; see @ref{Configuration Actions}.
3172 For example, this call:
3174 @example
3175 AC_CONFIG_LINKS([host.h:config/$machine.h
3176                 object.h:config/$obj_format.h])
3177 @end example
3179 @noindent
3180 creates in the current directory @file{host.h} as a link to
3181 @file{@var{srcdir}/config/$machine.h}, and @file{object.h} as a
3182 link to @file{@var{srcdir}/config/$obj_format.h}.
3184 The tempting value @samp{.} for @var{dest} is invalid: it makes it
3185 impossible for @samp{config.status} to guess the links to establish.
3187 One can then run:
3188 @example
3189 ./config.status host.h object.h
3190 @end example
3191 @noindent
3192 to create the links.
3193 @end defmac
3197 @node Subdirectories
3198 @section Configuring Other Packages in Subdirectories
3199 @cindex Configure subdirectories
3200 @cindex Subdirectory configure
3202 In most situations, calling @code{AC_OUTPUT} is sufficient to produce
3203 makefiles in subdirectories.  However, @command{configure} scripts
3204 that control more than one independent package can use
3205 @code{AC_CONFIG_SUBDIRS} to run @command{configure} scripts for other
3206 packages in subdirectories.
3208 @defmac AC_CONFIG_SUBDIRS (@var{dir} @dots{})
3209 @acindex{CONFIG_SUBDIRS}
3210 @ovindex subdirs
3211 Make @code{AC_OUTPUT} run @command{configure} in each subdirectory
3212 @var{dir} in the given blank-or-newline-separated list.  Each @var{dir} should
3213 be a literal, i.e., please do not use:
3215 @example
3216 if test "$package_foo_enabled" = yes; then
3217   $my_subdirs="$my_subdirs foo"
3219 AC_CONFIG_SUBDIRS([$my_subdirs])
3220 @end example
3222 @noindent
3223 because this prevents @samp{./configure --help=recursive} from
3224 displaying the options of the package @code{foo}.  Instead, you should
3225 write:
3227 @example
3228 if test "$package_foo_enabled" = yes; then
3229   AC_CONFIG_SUBDIRS([foo])
3231 @end example
3233 If a given @var{dir} is not found, an error is reported: if the
3234 subdirectory is optional, write:
3236 @example
3237 if test -d $srcdir/foo; then
3238   AC_CONFIG_SUBDIRS([foo])
3240 @end example
3242 @c NB: Yes, below we mean configure.in, not configure.ac.
3243 If a given @var{dir} contains @command{configure.gnu}, it is run instead
3244 of @command{configure}.  This is for packages that might use a
3245 non-Autoconf script @command{Configure}, which can't be called through a
3246 wrapper @command{configure} since it would be the same file on
3247 case-insensitive file systems.  Likewise, if a @var{dir} contains
3248 @file{configure.in} but no @command{configure}, the Cygnus
3249 @command{configure} script found by @code{AC_CONFIG_AUX_DIR} is used.
3251 The subdirectory @command{configure} scripts are given the same command
3252 line options that were given to this @command{configure} script, with minor
3253 changes if needed, which include:
3255 @itemize @minus
3256 @item
3257 adjusting a relative name for the cache file;
3259 @item
3260 adjusting a relative name for the source directory;
3262 @item
3263 propagating the current value of @code{$prefix}, including if it was
3264 defaulted, and if the default values of the top level and of the subdirectory
3265 @file{configure} differ.
3266 @end itemize
3268 This macro also sets the output variable @code{subdirs} to the list of
3269 directories @samp{@var{dir} @dots{}}.  Make rules can use
3270 this variable to determine which subdirectories to recurse into.
3272 This macro may be called multiple times.
3273 @end defmac
3275 @node Default Prefix
3276 @section Default Prefix
3277 @cindex Install prefix
3278 @cindex Prefix for install
3280 By default, @command{configure} sets the prefix for files it installs to
3281 @file{/usr/local}.  The user of @command{configure} can select a different
3282 prefix using the @option{--prefix} and @option{--exec-prefix} options.
3283 There are two ways to change the default: when creating
3284 @command{configure}, and when running it.
3286 Some software packages might want to install in a directory other than
3287 @file{/usr/local} by default.  To accomplish that, use the
3288 @code{AC_PREFIX_DEFAULT} macro.
3290 @defmac AC_PREFIX_DEFAULT (@var{prefix})
3291 @acindex{PREFIX_DEFAULT}
3292 Set the default installation prefix to @var{prefix} instead of
3293 @file{/usr/local}.
3294 @end defmac
3296 It may be convenient for users to have @command{configure} guess the
3297 installation prefix from the location of a related program that they
3298 have already installed.  If you wish to do that, you can call
3299 @code{AC_PREFIX_PROGRAM}.
3301 @defmac AC_PREFIX_PROGRAM (@var{program})
3302 @acindex{PREFIX_PROGRAM}
3303 If the user did not specify an installation prefix (using the
3304 @option{--prefix} option), guess a value for it by looking for
3305 @var{program} in @env{PATH}, the way the shell does.  If @var{program}
3306 is found, set the prefix to the parent of the directory containing
3307 @var{program}, else default the prefix as described above
3308 (@file{/usr/local} or @code{AC_PREFIX_DEFAULT}).  For example, if
3309 @var{program} is @code{gcc} and the @env{PATH} contains
3310 @file{/usr/local/gnu/bin/gcc}, set the prefix to @file{/usr/local/gnu}.
3311 @end defmac
3315 @c ======================================================== Existing tests
3317 @node Existing Tests
3318 @chapter Existing Tests
3320 These macros test for particular system features that packages might
3321 need or want to use.  If you need to test for a kind of feature that
3322 none of these macros check for, you can probably do it by calling
3323 primitive test macros with appropriate arguments (@pxref{Writing
3324 Tests}).
3326 These tests print messages telling the user which feature they're
3327 checking for, and what they find.  They cache their results for future
3328 @command{configure} runs (@pxref{Caching Results}).
3330 Some of these macros set output variables.  @xref{Makefile
3331 Substitutions}, for how to get their values.  The phrase ``define
3332 @var{name}'' is used below as a shorthand to mean ``define the C
3333 preprocessor symbol @var{name} to the value 1''.  @xref{Defining
3334 Symbols}, for how to get those symbol definitions into your program.
3336 @menu
3337 * Common Behavior::             Macros' standard schemes
3338 * Alternative Programs::        Selecting between alternative programs
3339 * Files::                       Checking for the existence of files
3340 * Libraries::                   Library archives that might be missing
3341 * Library Functions::           C library functions that might be missing
3342 * Header Files::                Header files that might be missing
3343 * Declarations::                Declarations that may be missing
3344 * Structures::                  Structures or members that might be missing
3345 * Types::                       Types that might be missing
3346 * Compilers and Preprocessors::  Checking for compiling programs
3347 * System Services::             Operating system services
3348 * Posix Variants::              Special kludges for specific Posix variants
3349 * Erlang Libraries::            Checking for the existence of Erlang libraries
3350 @end menu
3352 @node Common Behavior
3353 @section Common Behavior
3354 @cindex Common autoconf behavior
3356 Much effort has been expended to make Autoconf easy to learn.  The most
3357 obvious way to reach this goal is simply to enforce standard interfaces
3358 and behaviors, avoiding exceptions as much as possible.  Because of
3359 history and inertia, unfortunately, there are still too many exceptions
3360 in Autoconf; nevertheless, this section describes some of the common
3361 rules.
3363 @menu
3364 * Standard Symbols::            Symbols defined by the macros
3365 * Default Includes::            Includes used by the generic macros
3366 @end menu
3368 @node Standard Symbols
3369 @subsection Standard Symbols
3370 @cindex Standard symbols
3372 All the generic macros that @code{AC_DEFINE} a symbol as a result of
3373 their test transform their @var{argument} values to a standard alphabet.
3374 First, @var{argument} is converted to upper case and any asterisks
3375 (@samp{*}) are each converted to @samp{P}.  Any remaining characters
3376 that are not alphanumeric are converted to underscores.
3378 For instance,
3380 @example
3381 AC_CHECK_TYPES([struct $Expensive*])
3382 @end example
3384 @noindent
3385 defines the symbol @samp{HAVE_STRUCT__EXPENSIVEP} if the check
3386 succeeds.
3389 @node Default Includes
3390 @subsection Default Includes
3391 @cindex Default includes
3392 @cindex Includes, default
3394 Several tests depend upon a set of header files.  Since these headers
3395 are not universally available, tests actually have to provide a set of
3396 protected includes, such as:
3398 @example
3399 @group
3400 #if TIME_WITH_SYS_TIME
3401 # include <sys/time.h>
3402 # include <time.h>
3403 #else
3404 # if HAVE_SYS_TIME_H
3405 #  include <sys/time.h>
3406 # else
3407 #  include <time.h>
3408 # endif
3409 #endif
3410 @end group
3411 @end example
3413 @noindent
3414 Unless you know exactly what you are doing, you should avoid using
3415 unconditional includes, and check the existence of the headers you
3416 include beforehand (@pxref{Header Files}).
3418 Most generic macros use the following macro to provide the default set
3419 of includes:
3421 @defmac AC_INCLUDES_DEFAULT (@ovar{include-directives})
3422 @acindex{INCLUDES_DEFAULT}
3423 Expand to @var{include-directives} if defined, otherwise to:
3425 @example
3426 @group
3427 #include <stdio.h>
3428 #if HAVE_SYS_TYPES_H
3429 # include <sys/types.h>
3430 #endif
3431 #if HAVE_SYS_STAT_H
3432 # include <sys/stat.h>
3433 #endif
3434 #if STDC_HEADERS
3435 # include <stdlib.h>
3436 # include <stddef.h>
3437 #else
3438 # if HAVE_STDLIB_H
3439 #  include <stdlib.h>
3440 # endif
3441 #endif
3442 #if HAVE_STRING_H
3443 # if !STDC_HEADERS && HAVE_MEMORY_H
3444 #  include <memory.h>
3445 # endif
3446 # include <string.h>
3447 #endif
3448 #if HAVE_STRINGS_H
3449 # include <strings.h>
3450 #endif
3451 #if HAVE_INTTYPES_H
3452 # include <inttypes.h>
3453 #endif
3454 #if HAVE_STDINT_H
3455 # include <stdint.h>
3456 #endif
3457 #if HAVE_UNISTD_H
3458 # include <unistd.h>
3459 #endif
3460 @end group
3461 @end example
3463 If the default includes are used, then check for the presence of these
3464 headers and their compatibility, i.e., you don't need to run
3465 @code{AC_HEADER_STDC}, nor check for @file{stdlib.h} etc.
3467 These headers are checked for in the same order as they are included.
3468 For instance, on some systems @file{string.h} and @file{strings.h} both
3469 exist, but conflict.  Then @code{HAVE_STRING_H} is defined, not
3470 @code{HAVE_STRINGS_H}.
3471 @end defmac
3473 @node Alternative Programs
3474 @section Alternative Programs
3475 @cindex Programs, checking
3477 These macros check for the presence or behavior of particular programs.
3478 They are used to choose between several alternative programs and to
3479 decide what to do once one has been chosen.  If there is no macro
3480 specifically defined to check for a program you need, and you don't need
3481 to check for any special properties of it, then you can use one of the
3482 general program-check macros.
3484 @menu
3485 * Particular Programs::         Special handling to find certain programs
3486 * Generic Programs::            How to find other programs
3487 @end menu
3489 @node Particular Programs
3490 @subsection Particular Program Checks
3492 These macros check for particular programs---whether they exist, and
3493 in some cases whether they support certain features.
3495 @defmac AC_PROG_AWK
3496 @acindex{PROG_AWK}
3497 @ovindex AWK
3498 Check for @code{gawk}, @code{mawk}, @code{nawk}, and @code{awk}, in that
3499 order, and set output variable @code{AWK} to the first one that is found.
3500 It tries @code{gawk} first because that is reported to be the
3501 best implementation.
3502 @end defmac
3504 @defmac AC_PROG_GREP
3505 @acindex{PROG_GREP}
3506 @ovindex GREP
3507 Look for the best available @code{grep} or @code{ggrep} that accepts the
3508 longest input lines possible, and that supports multiple @option{-e} options.
3509 Set the output variable @code{GREP} to whatever is chosen.
3510 @xref{Limitations of Usual Tools}, for more information about
3511 portability problems with the @command{grep} command family.
3512 @end defmac
3514 @defmac AC_PROG_EGREP
3515 @acindex{PROG_EGREP}
3516 @ovindex EGREP
3517 Check whether @code{$GREP -E} works, or else look for the best available
3518 @code{egrep} or @code{gegrep} that accepts the longest input lines possible.
3519 Set the output variable @code{EGREP} to whatever is chosen.
3520 @end defmac
3522 @defmac AC_PROG_FGREP
3523 @acindex{PROG_FGREP}
3524 @ovindex FGREP
3525 Check whether @code{$GREP -F} works, or else look for the best available
3526 @code{fgrep} or @code{gfgrep} that accepts the longest input lines possible.
3527 Set the output variable @code{FGREP} to whatever is chosen.
3528 @end defmac
3530 @defmac AC_PROG_INSTALL
3531 @acindex{PROG_INSTALL}
3532 @ovindex INSTALL
3533 @ovindex INSTALL_PROGRAM
3534 @ovindex INSTALL_DATA
3535 @ovindex INSTALL_SCRIPT
3536 Set output variable @code{INSTALL} to the name of a @acronym{BSD}-compatible
3537 @command{install} program, if one is found in the current @env{PATH}.
3538 Otherwise, set @code{INSTALL} to @samp{@var{dir}/install-sh -c},
3539 checking the directories specified to @code{AC_CONFIG_AUX_DIR} (or its
3540 default directories) to determine @var{dir} (@pxref{Output}).  Also set
3541 the variables @code{INSTALL_PROGRAM} and @code{INSTALL_SCRIPT} to
3542 @samp{$@{INSTALL@}} and @code{INSTALL_DATA} to @samp{$@{INSTALL@} -m 644}.
3544 This macro screens out various instances of @command{install} known not to
3545 work.  It prefers to find a C program rather than a shell script, for
3546 speed.  Instead of @file{install-sh}, it can also use @file{install.sh},
3547 but that name is obsolete because some @command{make} programs have a rule
3548 that creates @file{install} from it if there is no makefile.
3550 Autoconf comes with a copy of @file{install-sh} that you can use.  If
3551 you use @code{AC_PROG_INSTALL}, you must include either
3552 @file{install-sh} or @file{install.sh} in your distribution; otherwise
3553 @command{configure} produces an error message saying it can't find
3554 them---even if the system you're on has a good @command{install} program.
3555 This check is a safety measure to prevent you from accidentally leaving
3556 that file out, which would prevent your package from installing on
3557 systems that don't have a @acronym{BSD}-compatible @command{install} program.
3559 If you need to use your own installation program because it has features
3560 not found in standard @command{install} programs, there is no reason to use
3561 @code{AC_PROG_INSTALL}; just put the file name of your program into your
3562 @file{Makefile.in} files.
3563 @end defmac
3565 @defmac AC_PROG_MKDIR_P
3566 @acindex{AC_PROG_MKDIR_P}
3567 @ovindex MKDIR_P
3568 Set output variable @code{MKDIR_P} to a program that ensures that for
3569 each argument, a directory named by this argument exists, creating it
3570 and its parent directories if needed, and without race conditions when
3571 two instances of the program attempt to make the same directory at
3572 nearly the same time.
3574 This macro uses the @samp{mkdir -p} command if possible.  Otherwise, it
3575 falls back on invoking @command{install-sh} with the @option{-d} option,
3576 so your package should
3577 contain @file{install-sh} as described under @code{AC_PROG_INSTALL}.
3578 An @file{install-sh} file that predates Autoconf 2.60 or Automake 1.10
3579 is vulnerable to race conditions, so if you want to support parallel
3580 installs from
3581 different packages into the same directory you need to make sure you
3582 have an up-to-date @file{install-sh}.  In particular, be careful about
3583 using @samp{autoreconf -if} if your Automake predates Automake 1.10.
3585 This macro is related to the @code{AS_MKDIR_P} macro (@pxref{Programming
3586 in M4sh}), but it sets an output variable intended for use in other
3587 files, whereas @code{AS_MKDIR_P} is intended for use in scripts like
3588 @command{configure}.  Also, @code{AS_MKDIR_P} does not accept options,
3589 but @code{MKDIR_P} supports the @option{-m} option, e.g., a makefile
3590 might invoke @code{$(MKDIR_P) -m 0 dir} to create an inaccessible
3591 directory, and conversely a makefile should use @code{$(MKDIR_P) --
3592 $(FOO)} if @var{FOO} might yield a value that begins with @samp{-}.
3593 Finally, @code{AS_MKDIR_P} does not check for race condition
3594 vulnerability, whereas @code{AC_PROG_MKDIR_P} does.
3595 @end defmac
3597 @defmac AC_PROG_LEX
3598 @acindex{PROG_LEX}
3599 @ovindex LEX
3600 @ovindex LEXLIB
3601 @cvindex YYTEXT_POINTER
3602 @ovindex LEX_OUTPUT_ROOT
3603 If @code{flex} is found, set output variable @code{LEX} to @samp{flex}
3604 and @code{LEXLIB} to @option{-lfl}, if that library is in a standard
3605 place.  Otherwise set @code{LEX} to @samp{lex} and @code{LEXLIB} to
3606 @option{-ll}.
3608 Define @code{YYTEXT_POINTER} if @code{yytext} is a @samp{char *} instead
3609 of a @samp{char []}.  Also set output variable @code{LEX_OUTPUT_ROOT} to
3610 the base of the file name that the lexer generates; usually
3611 @file{lex.yy}, but sometimes something else.  These results vary
3612 according to whether @code{lex} or @code{flex} is being used.
3614 You are encouraged to use Flex in your sources, since it is both more
3615 pleasant to use than plain Lex and the C source it produces is portable.
3616 In order to ensure portability, however, you must either provide a
3617 function @code{yywrap} or, if you don't use it (e.g., your scanner has
3618 no @samp{#include}-like feature), simply include a @samp{%noyywrap}
3619 statement in the scanner's source.  Once this done, the scanner is
3620 portable (unless @emph{you} felt free to use nonportable constructs) and
3621 does not depend on any library.  In this case, and in this case only, it
3622 is suggested that you use this Autoconf snippet:
3624 @example
3625 AC_PROG_LEX
3626 if test "$LEX" != flex; then
3627   LEX="$SHELL $missing_dir/missing flex"
3628   AC_SUBST([LEX_OUTPUT_ROOT], [lex.yy])
3629   AC_SUBST([LEXLIB], [''])
3631 @end example
3633 The shell script @command{missing} can be found in the Automake
3634 distribution.
3636 To ensure backward compatibility, Automake's @code{AM_PROG_LEX} invokes
3637 (indirectly) this macro twice, which causes an annoying but benign
3638 ``@code{AC_PROG_LEX} invoked multiple times'' warning.  Future versions
3639 of Automake will fix this issue; meanwhile, just ignore this message.
3641 As part of running the test, this macro may delete any file in the
3642 configuration directory named @file{lex.yy.c} or @file{lexyy.c}.
3643 @end defmac
3645 @defmac AC_PROG_LN_S
3646 @acindex{PROG_LN_S}
3647 @ovindex LN_S
3648 If @samp{ln -s} works on the current file system (the operating system
3649 and file system support symbolic links), set the output variable
3650 @code{LN_S} to @samp{ln -s}; otherwise, if @samp{ln} works, set
3651 @code{LN_S} to @samp{ln}, and otherwise set it to @samp{cp -p}.
3653 If you make a link in a directory other than the current directory, its
3654 meaning depends on whether @samp{ln} or @samp{ln -s} is used.  To safely
3655 create links using @samp{$(LN_S)}, either find out which form is used
3656 and adjust the arguments, or always invoke @code{ln} in the directory
3657 where the link is to be created.
3659 In other words, it does not work to do:
3660 @example
3661 $(LN_S) foo /x/bar
3662 @end example
3664 Instead, do:
3666 @example
3667 (cd /x && $(LN_S) foo bar)
3668 @end example
3669 @end defmac
3671 @defmac AC_PROG_RANLIB
3672 @acindex{PROG_RANLIB}
3673 @ovindex RANLIB
3674 Set output variable @code{RANLIB} to @samp{ranlib} if @code{ranlib}
3675 is found, and otherwise to @samp{:} (do nothing).
3676 @end defmac
3678 @defmac AC_PROG_SED
3679 @acindex{PROG_SED}
3680 @ovindex SED
3681 Set output variable @code{SED} to a Sed implementation that conforms to
3682 Posix and does not have arbitrary length limits.  Report an error if no
3683 acceptable Sed is found.  @xref{Limitations of Usual Tools}, for more
3684 information about portability problems with Sed.
3685 @end defmac
3687 @defmac AC_PROG_YACC
3688 @acindex{PROG_YACC}
3689 @ovindex YACC
3690 If @code{bison} is found, set output variable @code{YACC} to @samp{bison
3691 -y}.  Otherwise, if @code{byacc} is found, set @code{YACC} to
3692 @samp{byacc}.  Otherwise set @code{YACC} to @samp{yacc}.
3693 @end defmac
3695 @node Generic Programs
3696 @subsection Generic Program and File Checks
3698 These macros are used to find programs not covered by the ``particular''
3699 test macros.  If you need to check the behavior of a program as well as
3700 find out whether it is present, you have to write your own test for it
3701 (@pxref{Writing Tests}).  By default, these macros use the environment
3702 variable @env{PATH}.  If you need to check for a program that might not
3703 be in the user's @env{PATH}, you can pass a modified path to use
3704 instead, like this:
3706 @example
3707 AC_PATH_PROG([INETD], [inetd], [/usr/libexec/inetd],
3708              [$PATH:/usr/libexec:/usr/sbin:/usr/etc:/etc])
3709 @end example
3711 You are strongly encouraged to declare the @var{variable} passed to
3712 @code{AC_CHECK_PROG} etc.@: as precious, @xref{Setting Output Variables},
3713 @code{AC_ARG_VAR}, for more details.
3715 @defmac AC_CHECK_PROG (@var{variable}, @var{prog-to-check-for}, @var{value-if-found}, @ovar{value-if-not-found}, @ovar{path},  @ovar{reject})
3716 @acindex{CHECK_PROG}
3717 Check whether program @var{prog-to-check-for} exists in @env{PATH}.  If
3718 it is found, set @var{variable} to @var{value-if-found}, otherwise to
3719 @var{value-if-not-found}, if given.  Always pass over @var{reject} (an
3720 absolute file name) even if it is the first found in the search path; in
3721 that case, set @var{variable} using the absolute file name of the
3722 @var{prog-to-check-for} found that is not @var{reject}.  If
3723 @var{variable} was already set, do nothing.  Calls @code{AC_SUBST} for
3724 @var{variable}.
3725 @end defmac
3727 @defmac AC_CHECK_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3728 @acindex{CHECK_PROGS}
3729 Check for each program in the blank-separated list
3730 @var{progs-to-check-for} existing in the @env{PATH}.  If one is found, set
3731 @var{variable} to the name of that program.  Otherwise, continue
3732 checking the next program in the list.  If none of the programs in the
3733 list are found, set @var{variable} to @var{value-if-not-found}; if
3734 @var{value-if-not-found} is not specified, the value of @var{variable}
3735 is not changed.  Calls @code{AC_SUBST} for @var{variable}.
3736 @end defmac
3738 @defmac AC_CHECK_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3739 @acindex{CHECK_TARGET_TOOL}
3740 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
3741 with a prefix of the target type as determined by
3742 @code{AC_CANONICAL_TARGET}, followed by a dash (@pxref{Canonicalizing}).
3743 If the tool cannot be found with a prefix, and if the build and target
3744 types are equal, then it is also searched for without a prefix.
3746 As noted in @ref{Specifying Names, , Specifying the system type}, the
3747 target is rarely specified, because most of the time it is the same
3748 as the host: it is the type of system for which any compiler tool in
3749 the package produces code.  What this macro looks for is,
3750 for example, @emph{a tool @r{(assembler, linker, etc.)}@: that the
3751 compiler driver @r{(@command{gcc} for the @acronym{GNU} C Compiler)}
3752 uses to produce objects, archives or executables}.
3753 @end defmac
3755 @defmac AC_CHECK_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3756 @acindex{CHECK_TOOL}
3757 Like @code{AC_CHECK_PROG}, but first looks for @var{prog-to-check-for}
3758 with a prefix of the host type as determined by
3759 @code{AC_CANONICAL_HOST}, followed by a dash (@pxref{Canonicalizing}).
3760 For example, if the user runs @samp{configure --host=i386-gnu}, then
3761 this call:
3762 @example
3763 AC_CHECK_TOOL([RANLIB], [ranlib], [:])
3764 @end example
3765 @noindent
3766 sets @code{RANLIB} to @file{i386-gnu-ranlib} if that program exists in
3767 @env{PATH}, or otherwise to @samp{ranlib} if that program exists in
3768 @env{PATH}, or to @samp{:} if neither program exists.
3770 In the future, when cross-compiling this macro will @emph{only}
3771 accept program names that are prefixed with the host type.
3772 For more information, see @ref{Specifying Names, , Specifying the
3773 system type}.
3774 @end defmac
3776 @defmac AC_CHECK_TARGET_TOOLS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3777 @acindex{CHECK_TARGET_TOOLS}
3778 Like @code{AC_CHECK_TARGET_TOOL}, each of the tools in the list
3779 @var{progs-to-check-for} are checked with a prefix of the target type as
3780 determined by @code{AC_CANONICAL_TARGET}, followed by a dash
3781 (@pxref{Canonicalizing}).  If none of the tools can be found with a
3782 prefix, and if the build and target types are equal, then the first one
3783 without a prefix is used.  If a tool is found, set @var{variable} to
3784 the name of that program.  If none of the tools in the list are found,
3785 set @var{variable} to @var{value-if-not-found}; if @var{value-if-not-found}
3786 is not specified, the value of @var{variable} is not changed.  Calls
3787 @code{AC_SUBST} for @var{variable}.
3788 @end defmac
3790 @defmac AC_CHECK_TOOLS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3791 @acindex{CHECK_TOOLS}
3792 Like @code{AC_CHECK_TOOL}, each of the tools in the list
3793 @var{progs-to-check-for} are checked with a prefix of the host type as
3794 determined by @code{AC_CANONICAL_HOST}, followed by a dash
3795 (@pxref{Canonicalizing}).  If none of the tools can be found with a
3796 prefix, then the first one without a prefix is used.  If a tool is found,
3797 set @var{variable} to the name of that program.  If none of the tools in
3798 the list are found, set @var{variable} to @var{value-if-not-found}; if
3799 @var{value-if-not-found} is not specified, the value of @var{variable}
3800 is not changed.  Calls @code{AC_SUBST} for @var{variable}.
3802 In the future, when cross-compiling this macro will @emph{not}
3803 accept program names that are not prefixed with the host type.
3804 @end defmac
3806 @defmac AC_PATH_PROG (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3807 @acindex{PATH_PROG}
3808 Like @code{AC_CHECK_PROG}, but set @var{variable} to the absolute
3809 name of @var{prog-to-check-for} if found.
3810 @end defmac
3812 @defmac AC_PATH_PROGS (@var{variable}, @var{progs-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3813 @acindex{PATH_PROGS}
3814 Like @code{AC_CHECK_PROGS}, but if any of @var{progs-to-check-for}
3815 are found, set @var{variable} to the absolute name of the program
3816 found.
3817 @end defmac
3819 @defmac AC_PATH_TARGET_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3820 @acindex{PATH_TARGET_TOOL}
3821 Like @code{AC_CHECK_TARGET_TOOL}, but set @var{variable} to the absolute
3822 name of the program if it is found.
3823 @end defmac
3825 @defmac AC_PATH_TOOL (@var{variable}, @var{prog-to-check-for}, @ovar{value-if-not-found}, @ovar{path})
3826 @acindex{PATH_TOOL}
3827 Like @code{AC_CHECK_TOOL}, but set @var{variable} to the absolute
3828 name of the program if it is found.
3830 In the future, when cross-compiling this macro will @emph{not}
3831 accept program names that are not prefixed with the host type.
3832 @end defmac
3835 @node Files
3836 @section Files
3837 @cindex File, checking
3839 You might also need to check for the existence of files.  Before using
3840 these macros, ask yourself whether a runtime test might not be a better
3841 solution.  Be aware that, like most Autoconf macros, they test a feature
3842 of the host machine, and therefore, they die when cross-compiling.
3844 @defmac AC_CHECK_FILE (@var{file}, @ovar{action-if-found}, @ovar{action-if-not-found})
3845 @acindex{CHECK_FILE}
3846 Check whether file @var{file} exists on the native system.  If it is
3847 found, execute @var{action-if-found}, otherwise do
3848 @var{action-if-not-found}, if given.
3849 @end defmac
3851 @defmac AC_CHECK_FILES (@var{files}, @ovar{action-if-found}, @ovar{action-if-not-found})
3852 @acindex{CHECK_FILES}
3853 Executes @code{AC_CHECK_FILE} once for each file listed in @var{files}.
3854 Additionally, defines @samp{HAVE_@var{file}} (@pxref{Standard Symbols})
3855 for each file found.
3856 @end defmac
3859 @node Libraries
3860 @section Library Files
3861 @cindex Library, checking
3863 The following macros check for the presence of certain C, C++, or Fortran
3864 library archive files.
3866 @defmac AC_CHECK_LIB (@var{library}, @var{function}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
3867 @acindex{CHECK_LIB}
3868 Test whether the library @var{library} is available by trying to link
3869 a test program that calls function @var{function} with the library.
3870 @var{function} should be a function provided by the library.
3871 Use the base
3872 name of the library; e.g., to check for @option{-lmp}, use @samp{mp} as
3873 the @var{library} argument.
3875 @var{action-if-found} is a list of shell commands to run if the link
3876 with the library succeeds; @var{action-if-not-found} is a list of shell
3877 commands to run if the link fails.  If @var{action-if-found} is not
3878 specified, the default action prepends @option{-l@var{library}} to
3879 @code{LIBS} and defines @samp{HAVE_LIB@var{library}} (in all
3880 capitals).  This macro is intended to support building @code{LIBS} in
3881 a right-to-left (least-dependent to most-dependent) fashion such that
3882 library dependencies are satisfied as a natural side effect of
3883 consecutive tests.  Linkers are sensitive to library ordering
3884 so the order in which @code{LIBS} is generated is important to reliable
3885 detection of libraries.
3887 If linking with @var{library} results in unresolved symbols that would
3888 be resolved by linking with additional libraries, give those libraries
3889 as the @var{other-libraries} argument, separated by spaces:
3890 e.g., @option{-lXt -lX11}.  Otherwise, this macro fails to detect
3891 that @var{library} is present, because linking the test program
3892 always fails with unresolved symbols.  The @var{other-libraries} argument
3893 should be limited to cases where it is desirable to test for one library
3894 in the presence of another that is not already in @code{LIBS}.
3896 @code{AC_CHECK_LIB} requires some care in usage, and should be avoided
3897 in some common cases.  Many standard functions like @code{gethostbyname}
3898 appear the standard C library on some hosts, and in special libraries
3899 like @code{nsl} on other hosts.  On some hosts the special libraries
3900 contain variant implementations that you may not want to use.  These
3901 days it is normally better to use @code{AC_SEARCH_LIBS([gethostbyname],
3902 [nsl])} instead of @code{AC_CHECK_LIB([nsl], [gethostbyname])}.
3903 @end defmac
3906 @defmac AC_SEARCH_LIBS (@var{function}, @var{search-libs}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
3907 @acindex{SEARCH_LIBS}
3908 Search for a library defining @var{function} if it's not already
3909 available.  This equates to calling
3910 @samp{AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])])} first with
3911 no libraries, then for each library listed in @var{search-libs}.
3913 Add @option{-l@var{library}} to @code{LIBS} for the first library found
3914 to contain @var{function}, and run @var{action-if-found}.  If the
3915 function is not found, run @var{action-if-not-found}.
3917 If linking with @var{library} results in unresolved symbols that would
3918 be resolved by linking with additional libraries, give those libraries
3919 as the @var{other-libraries} argument, separated by spaces:
3920 e.g., @option{-lXt -lX11}.  Otherwise, this macro fails to detect
3921 that @var{function} is present, because linking the test program
3922 always fails with unresolved symbols.
3923 @end defmac
3927 @node Library Functions
3928 @section Library Functions
3930 The following macros check for particular C library functions.
3931 If there is no macro specifically defined to check for a function you need,
3932 and you don't need to check for any special properties of
3933 it, then you can use one of the general function-check macros.
3935 @menu
3936 * Function Portability::        Pitfalls with usual functions
3937 * Particular Functions::        Special handling to find certain functions
3938 * Generic Functions::           How to find other functions
3939 @end menu
3941 @node Function Portability
3942 @subsection Portability of C Functions
3943 @cindex Portability of C functions
3944 @cindex C function portability
3946 Most usual functions can either be missing, or be buggy, or be limited
3947 on some architectures.  This section tries to make an inventory of these
3948 portability issues.  By definition, this list always requires
3949 additions.  Please help us keeping it as complete as possible.
3951 @table @asis
3952 @item @code{exit}
3953 @c @fuindex exit
3954 @prindex @code{exit}
3955 On ancient hosts, @code{exit} returned @code{int}.
3956 This is because @code{exit} predates @code{void}, and there was a long
3957 tradition of it returning @code{int}.
3959 On current hosts, the problem more likely is that @code{exit} is not
3960 declared, due to C++ problems of some sort or another.  For this reason
3961 we suggest that test programs not invoke @code{exit}, but return from
3962 @code{main} instead.
3964 @item @code{free}
3965 @c @fuindex free
3966 @prindex @code{free}
3967 The C standard says a call @code{free (NULL)} does nothing, but
3968 some old systems don't support this (e.g., NextStep).
3970 @item @code{isinf}
3971 @itemx @code{isnan}
3972 @c @fuindex isinf
3973 @c @fuindex isnan
3974 @prindex @code{isinf}
3975 @prindex @code{isnan}
3976 The C99 standard says that @code{isinf} and @code{isnan} are
3977 macros.  On some systems just macros are available
3978 (e.g., HP-UX and Solaris 10), on
3979 some systems both macros and functions (e.g., glibc 2.3.2), and on some
3980 systems only functions (e.g., IRIX 6 and Solaris 9).  In some cases
3981 these functions are declared in nonstandard headers like
3982 @code{<sunmath.h>} and defined in non-default libraries like
3983 @option{-lm} or @option{-lsunmath}.
3985 The C99 @code{isinf} and @code{isnan} macros work correctly with
3986 @code{long double} arguments, but pre-C99 systems that use functions
3987 typically assume @code{double} arguments.  On such a system,
3988 @code{isinf} incorrectly returns true for a finite @code{long double}
3989 argument that is outside the range of @code{double}.
3991 To work around this porting mess, you can use code like the following.
3993 @smallexample
3994 #include <math.h>
3996 #ifndef isnan
3997 # define isnan(x) \
3998     (sizeof (x) == sizeof (long double) ? isnan_ld (x) \
3999      : sizeof (x) == sizeof (double) ? isnan_d (x) \
4000      : isnan_f (x))
4001 static inline int isnan_f  (float       x) @{ return x != x; @}
4002 static inline int isnan_d  (double      x) @{ return x != x; @}
4003 static inline int isnan_ld (long double x) @{ return x != x; @}
4004 #endif
4006 #ifndef isinf
4007 # define isinf(x) \
4008     (sizeof (x) == sizeof (long double) ? isinf_ld (x) \
4009      : sizeof (x) == sizeof (double) ? isinf_d (x) \
4010      : isinf_f (x))
4011 static inline int isinf_f  (float       x) @{ return isnan (x - x); @}
4012 static inline int isinf_d  (double      x) @{ return isnan (x - x); @}
4013 static inline int isinf_ld (long double x) @{ return isnan (x - x); @}
4014 #endif
4015 @end smallexample
4017 Use @code{AC_C_INLINE} (@pxref{C Compiler}) so that this code works on
4018 compilers that lack the @code{inline} keyword.  Some optimizing
4019 compilers mishandle these definitions, but systems with that bug
4020 typically have missing or broken @code{isnan} functions anyway, so it's
4021 probably not worth worrying about.
4023 @item @code{malloc}
4024 @c @fuindex malloc
4025 @prindex @code{malloc}
4026 The C standard says a call @code{malloc (0)} is implementation
4027 dependent.  It may either return @code{NULL} (e.g., OSF 4) or
4028 non-@code{NULL} (e.g., @acronym{GNU} C Library).  @code{AC_FUNC_MALLOC}
4029 can be used to insist on non-@code{NULL} (@pxref{Particular Functions}).
4031 @item @code{putenv}
4032 @c @fuindex putenv
4033 @prindex @code{putenv}
4034 Posix prefers @code{setenv} to @code{putenv}; among other things,
4035 @code{putenv} is not required of all Posix implementations, but
4036 @code{setenv} is.
4038 Posix specifies that @code{putenv} puts the given string directly in
4039 @code{environ}, but some systems make a copy of it instead (e.g.,
4040 glibc 2.0, or @acronym{BSD}).  And when a copy is made, @code{unsetenv} might
4041 not free it, causing a memory leak (e.g., Free@acronym{BSD} 4).
4043 On some systems @code{putenv ("FOO")} removes @samp{FOO} from the
4044 environment, but this is not standard usage and it dumps core
4045 on some systems (e.g., AIX).
4047 On MinGW, a call @code{putenv ("FOO=")} removes @samp{FOO} from the
4048 environment, rather than inserting it with an empty value.
4050 @item @code{realloc}
4051 @c @fuindex realloc
4052 @prindex @code{realloc}
4053 The C standard says a call @code{realloc (NULL, size)} is equivalent
4054 to @code{malloc (size)}, but some old systems don't support this (e.g.,
4055 NextStep).
4057 @item @code{signal} handler
4058 @c @fuindex signal
4059 @prindex @code{signal}
4060 Normally @code{signal} takes a handler function with a return type of
4061 @code{void}, but some old systems required @code{int} instead.  Any
4062 actual @code{int} value returned is not used; this is only a
4063 difference in the function prototype demanded.
4065 All systems we know of in current use return @code{void}.  The
4066 @code{int} was to support K&R C, where of course @code{void} is not
4067 available.  @code{AC_TYPE_SIGNAL} (@pxref{Particular Types}) can be
4068 used to establish the correct type in all cases.
4070 @item @code{snprintf}
4071 @c @fuindex snprintf
4072 @prindex @code{snprintf}
4073 @c @fuindex vsnprintf
4074 @prindex @code{vsnprintf}
4075 The C99 standard says that if the output array isn't big enough
4076 and if no other errors occur, @code{snprintf} and @code{vsnprintf}
4077 truncate the output and return the number of bytes that ought to have
4078 been produced.  Some older systems return the truncated length (e.g.,
4079 @acronym{GNU} C Library 2.0.x or @sc{irix} 6.5), some a negative value
4080 (e.g., earlier @acronym{GNU} C Library versions), and some the buffer
4081 length without truncation (e.g., 32-bit Solaris 7).  Also, some buggy
4082 older systems ignore the length and overrun the buffer (e.g., 64-bit
4083 Solaris 7).
4085 @item @code{sprintf}
4086 @c @fuindex sprintf
4087 @prindex @code{sprintf}
4088 @c @fuindex vsprintf
4089 @prindex @code{vsprintf}
4090 The C standard says @code{sprintf} and @code{vsprintf} return the
4091 number of bytes written.  On some ancient systems (SunOS 4 for
4092 instance) they return the buffer pointer instead, but these no
4093 longer need to be worried about.
4095 @item @code{sscanf}
4096 @c @fuindex sscanf
4097 @prindex @code{sscanf}
4098 On various old systems, e.g., HP-UX 9, @code{sscanf} requires that its
4099 input string be writable (though it doesn't actually change it).  This
4100 can be a problem when using @command{gcc} since it normally puts
4101 constant strings in read-only memory
4102 (@pxref{Incompatibilities, Incompatibilities of GCC, , gcc, Using and
4103 Porting the @acronym{GNU} Compiler Collection}).  Apparently in some cases even
4104 having format strings read-only can be a problem.
4106 @item @code{strerror_r}
4107 @c @fuindex strerror_r
4108 @prindex @code{strerror_r}
4109 Posix specifies that @code{strerror_r} returns an @code{int}, but many
4110 systems (e.g., @acronym{GNU} C Library version 2.2.4) provide a
4111 different version returning a @code{char *}.  @code{AC_FUNC_STRERROR_R}
4112 can detect which is in use (@pxref{Particular Functions}).
4114 @item @code{strnlen}
4115 @c @fuindex strnlen
4116 @prindex @code{strnlen}
4117 @acronym{AIX} 4.3 provides a broken version which produces the
4118 following results:
4120 @example
4121 strnlen ("foobar", 0) = 0
4122 strnlen ("foobar", 1) = 3
4123 strnlen ("foobar", 2) = 2
4124 strnlen ("foobar", 3) = 1
4125 strnlen ("foobar", 4) = 0
4126 strnlen ("foobar", 5) = 6
4127 strnlen ("foobar", 6) = 6
4128 strnlen ("foobar", 7) = 6
4129 strnlen ("foobar", 8) = 6
4130 strnlen ("foobar", 9) = 6
4131 @end example
4133 @item @code{sysconf}
4134 @c @fuindex sysconf
4135 @prindex @code{sysconf}
4136 @code{_SC_PAGESIZE} is standard, but some older systems (e.g., HP-UX
4137 9) have @code{_SC_PAGE_SIZE} instead.  This can be tested with
4138 @code{#ifdef}.
4140 @item @code{unlink}
4141 @c @fuindex unlink
4142 @prindex @code{unlink}
4143 The Posix spec says that @code{unlink} causes the given file to be
4144 removed only after there are no more open file handles for it.  Some
4145 non-Posix hosts have trouble with this requirement, though,
4146 and some @acronym{DOS} variants even corrupt the file system.
4148 @item @code{unsetenv}
4149 @c @fuindex unsetenv
4150 @prindex @code{unsetenv}
4151 On MinGW, @code{unsetenv} is not available, but a variable @samp{FOO}
4152 can be removed with a call @code{putenv ("FOO=")}, as described under
4153 @code{putenv} above.
4155 @item @code{va_copy}
4156 @c @fuindex va_copy
4157 @prindex @code{va_copy}
4158 The C99 standard provides @code{va_copy} for copying
4159 @code{va_list} variables.  It may be available in older environments
4160 too, though possibly as @code{__va_copy} (e.g., @command{gcc} in strict
4161 pre-C99 mode).  These can be tested with @code{#ifdef}.  A fallback to
4162 @code{memcpy (&dst, &src, sizeof (va_list))} gives maximum
4163 portability.
4165 @item @code{va_list}
4166 @c @fuindex va_list
4167 @prindex @code{va_list}
4168 @code{va_list} is not necessarily just a pointer.  It can be a
4169 @code{struct} (e.g., @command{gcc} on Alpha), which means @code{NULL} is
4170 not portable.  Or it can be an array (e.g., @command{gcc} in some
4171 PowerPC configurations), which means as a function parameter it can be
4172 effectively call-by-reference and library routines might modify the
4173 value back in the caller (e.g., @code{vsnprintf} in the @acronym{GNU} C Library
4174 2.1).
4176 @item Signed @code{>>}
4177 Normally the C @code{>>} right shift of a signed type replicates the
4178 high bit, giving a so-called ``arithmetic'' shift.  But care should be
4179 taken since Standard C doesn't require that behavior.  On those
4180 few processors without a native arithmetic shift (for instance Cray
4181 vector systems) zero bits may be shifted in, the same as a shift of an
4182 unsigned type.
4184 @item Integer @code{/}
4185 C divides signed integers by truncating their quotient toward zero,
4186 yielding the same result as Fortran.  However, before C99 the standard
4187 allowed C implementations to take the floor or ceiling of the quotient
4188 in some cases.  Hardly any implementations took advantage of this
4189 freedom, though, and it's probably not worth worrying about this issue
4190 nowadays.
4191 @end table
4194 @node Particular Functions
4195 @subsection Particular Function Checks
4196 @cindex Function, checking
4198 These macros check for particular C functions---whether they exist, and
4199 in some cases how they respond when given certain arguments.
4201 @defmac AC_FUNC_ALLOCA
4202 @acindex{FUNC_ALLOCA}
4203 @cvindex C_ALLOCA
4204 @cvindex HAVE_ALLOCA_H
4205 @ovindex ALLOCA
4206 @c @fuindex alloca
4207 @prindex @code{alloca}
4208 @hdrindex{alloca.h}
4209 Check how to get @code{alloca}.  Tries to get a builtin version by
4210 checking for @file{alloca.h} or the predefined C preprocessor macros
4211 @code{__GNUC__} and @code{_AIX}.  If this macro finds @file{alloca.h},
4212 it defines @code{HAVE_ALLOCA_H}.
4214 If those attempts fail, it looks for the function in the standard C
4215 library.  If any of those methods succeed, it defines
4216 @code{HAVE_ALLOCA}.  Otherwise, it sets the output variable
4217 @code{ALLOCA} to @samp{$@{LIBOBJDIR@}alloca.o} and defines
4218 @code{C_ALLOCA} (so programs can periodically call @samp{alloca (0)} to
4219 garbage collect).  This variable is separate from @code{LIBOBJS} so
4220 multiple programs can share the value of @code{ALLOCA} without needing
4221 to create an actual library, in case only some of them use the code in
4222 @code{LIBOBJS}.  The @samp{$@{LIBOBJDIR@}} prefix serves the same
4223 purpose as in @code{LIBOBJS} (@pxref{AC_LIBOBJ vs LIBOBJS}).
4225 This macro does not try to get @code{alloca} from the System V R3
4226 @file{libPW} or the System V R4 @file{libucb} because those libraries
4227 contain some incompatible functions that cause trouble.  Some versions
4228 do not even contain @code{alloca} or contain a buggy version.  If you
4229 still want to use their @code{alloca}, use @code{ar} to extract
4230 @file{alloca.o} from them instead of compiling @file{alloca.c}.
4232 Source files that use @code{alloca} should start with a piece of code
4233 like the following, to declare it properly.
4235 @example
4236 @group
4237 #if HAVE_ALLOCA_H
4238 # include <alloca.h>
4239 #elif defined __GNUC__
4240 # define alloca __builtin_alloca
4241 #elif defined _AIX
4242 # define alloca __alloca
4243 #elif defined _MSC_VER
4244 # include <malloc.h>
4245 # define alloca _alloca
4246 #else
4247 # include <stddef.h>
4248 # ifdef  __cplusplus
4249 extern "C"
4250 # endif
4251 void *alloca (size_t);
4252 #endif
4253 @end group
4254 @end example
4255 @end defmac
4257 @defmac AC_FUNC_CHOWN
4258 @acindex{FUNC_CHOWN}
4259 @c @fuindex chown
4260 @prindex @code{chown}
4261 If the @code{chown} function is available and works (in particular, it
4262 should accept @option{-1} for @code{uid} and @code{gid}), define
4263 @code{HAVE_CHOWN}.
4264 @end defmac
4267 @defmac AC_FUNC_CLOSEDIR_VOID
4268 @acindex{FUNC_CLOSEDIR_VOID}
4269 @cvindex CLOSEDIR_VOID
4270 @c @fuindex closedir
4271 @prindex @code{closedir}
4272 If the @code{closedir} function does not return a meaningful value,
4273 define @code{CLOSEDIR_VOID}.  Otherwise, callers ought to check its
4274 return value for an error indicator.
4276 Currently this test is implemented by running a test program.  When
4277 cross compiling the pessimistic assumption that @code{closedir} does not
4278 return a meaningful value is made.
4280 This macro is obsolescent, as @code{closedir} returns a meaningful value
4281 on current systems.  New programs need not use this macro.
4282 @end defmac
4284 @defmac AC_FUNC_ERROR_AT_LINE
4285 @acindex{FUNC_ERROR_AT_LINE}
4286 @c @fuindex error_at_line
4287 @prindex @code{error_at_line}
4288 If the @code{error_at_line} function is not found, require an
4289 @code{AC_LIBOBJ} replacement of @samp{error}.
4290 @end defmac
4292 @defmac AC_FUNC_FNMATCH
4293 @acindex{FUNC_FNMATCH}
4294 @c @fuindex fnmatch
4295 @prindex @code{fnmatch}
4296 If the @code{fnmatch} function conforms to Posix, define
4297 @code{HAVE_FNMATCH}.  Detect common implementation bugs, for example,
4298 the bugs in Solaris 2.4.
4300 Note that for historical reasons, contrary to the other specific
4301 @code{AC_FUNC} macros, @code{AC_FUNC_FNMATCH} does not replace a
4302 broken/missing @code{fnmatch}.  See @code{AC_REPLACE_FNMATCH} below.
4303 @end defmac
4305 @defmac AC_FUNC_FNMATCH_GNU
4306 @acindex{FUNC_FNMATCH_GNU}
4307 @c @fuindex fnmatch
4308 @prindex @code{fnmatch}
4309 Behave like @code{AC_REPLACE_FNMATCH} (@emph{replace}) but also test
4310 whether @code{fnmatch} supports @acronym{GNU} extensions.  Detect common
4311 implementation bugs, for example, the bugs in the @acronym{GNU} C
4312 Library 2.1.
4313 @end defmac
4315 @defmac AC_FUNC_FORK
4316 @acindex{FUNC_FORK}
4317 @cvindex HAVE_VFORK_H
4318 @cvindex HAVE_WORKING_FORK
4319 @cvindex HAVE_WORKING_VFORK
4320 @cvindex vfork
4321 @c @fuindex fork
4322 @prindex @code{fork}
4323 @c @fuindex vfork
4324 @prindex @code{vfork}
4325 @hdrindex{vfork.h}
4326 This macro checks for the @code{fork} and @code{vfork} functions.  If a
4327 working @code{fork} is found, define @code{HAVE_WORKING_FORK}.  This macro
4328 checks whether @code{fork} is just a stub by trying to run it.
4330 If @file{vfork.h} is found, define @code{HAVE_VFORK_H}.  If a working
4331 @code{vfork} is found, define @code{HAVE_WORKING_VFORK}.  Otherwise,
4332 define @code{vfork} to be @code{fork} for backward compatibility with
4333 previous versions of @command{autoconf}.  This macro checks for several known
4334 errors in implementations of @code{vfork} and considers the system to not
4335 have a working @code{vfork} if it detects any of them.  It is not considered
4336 to be an implementation error if a child's invocation of @code{signal}
4337 modifies the parent's signal handler, since child processes rarely change
4338 their signal handlers.
4340 Since this macro defines @code{vfork} only for backward compatibility with
4341 previous versions of @command{autoconf} you're encouraged to define it
4342 yourself in new code:
4343 @example
4344 @group
4345 #if !HAVE_WORKING_VFORK
4346 # define vfork fork
4347 #endif
4348 @end group
4349 @end example
4350 @end defmac
4352 @defmac AC_FUNC_FSEEKO
4353 @acindex{FUNC_FSEEKO}
4354 @cvindex _LARGEFILE_SOURCE
4355 @c @fuindex fseeko
4356 @prindex @code{fseeko}
4357 If the @code{fseeko} function is available, define @code{HAVE_FSEEKO}.
4358 Define @code{_LARGEFILE_SOURCE} if necessary to make the prototype
4359 visible on some systems (e.g., glibc 2.2).  Otherwise linkage problems
4360 may occur when compiling with @code{AC_SYS_LARGEFILE} on
4361 largefile-sensitive systems where @code{off_t} does not default to a
4362 64bit entity.
4363 @end defmac
4365 @defmac AC_FUNC_GETGROUPS
4366 @acindex{FUNC_GETGROUPS}
4367 @ovindex GETGROUPS_LIBS
4368 @c @fuindex getgroups
4369 @prindex @code{getgroups}
4370 If the @code{getgroups} function is available and works (unlike on
4371 Ultrix 4.3, where @samp{getgroups (0, 0)} always fails), define
4372 @code{HAVE_GETGROUPS}.  Set @code{GETGROUPS_LIBS} to any libraries
4373 needed to get that function.  This macro runs @code{AC_TYPE_GETGROUPS}.
4374 @end defmac
4376 @defmac AC_FUNC_GETLOADAVG
4377 @acindex{FUNC_GETLOADAVG}
4378 @cvindex SVR4
4379 @cvindex DGUX
4380 @cvindex UMAX
4381 @cvindex UMAX4_3
4382 @cvindex HAVE_NLIST_H
4383 @cvindex NLIST_NAME_UNION
4384 @cvindex GETLODAVG_PRIVILEGED
4385 @cvindex NEED_SETGID
4386 @cvindex C_GETLOADAVG
4387 @ovindex LIBOBJS
4388 @ovindex NEED_SETGID
4389 @ovindex KMEM_GROUP
4390 @ovindex GETLOADAVG_LIBS
4391 @c @fuindex getloadavg
4392 @prindex @code{getloadavg}
4393 Check how to get the system load averages.  To perform its tests
4394 properly, this macro needs the file @file{getloadavg.c}; therefore, be
4395 sure to set the @code{AC_LIBOBJ} replacement directory properly (see
4396 @ref{Generic Functions}, @code{AC_CONFIG_LIBOBJ_DIR}).
4398 If the system has the @code{getloadavg} function, define
4399 @code{HAVE_GETLOADAVG}, and set @code{GETLOADAVG_LIBS} to any libraries
4400 necessary to get that function.  Also add @code{GETLOADAVG_LIBS} to
4401 @code{LIBS}.  Otherwise, require an @code{AC_LIBOBJ} replacement for
4402 @samp{getloadavg} with source code in @file{@var{dir}/getloadavg.c}, and
4403 possibly define several other C preprocessor macros and output
4404 variables:
4406 @enumerate
4407 @item
4408 Define @code{C_GETLOADAVG}.
4410 @item
4411 Define @code{SVR4}, @code{DGUX}, @code{UMAX}, or @code{UMAX4_3} if on
4412 those systems.
4414 @item
4415 @hdrindex{nlist.h}
4416 If @file{nlist.h} is found, define @code{HAVE_NLIST_H}.
4418 @item
4419 If @samp{struct nlist} has an @samp{n_un.n_name} member, define
4420 @code{HAVE_STRUCT_NLIST_N_UN_N_NAME}.  The obsolete symbol
4421 @code{NLIST_NAME_UNION} is still defined, but do not depend upon it.
4423 @item
4424 Programs may need to be installed set-group-ID (or set-user-ID) for
4425 @code{getloadavg} to work.  In this case, define
4426 @code{GETLOADAVG_PRIVILEGED}, set the output variable @code{NEED_SETGID}
4427 to @samp{true} (and otherwise to @samp{false}), and set
4428 @code{KMEM_GROUP} to the name of the group that should own the installed
4429 program.
4430 @end enumerate
4431 @end defmac
4433 @defmac AC_FUNC_GETMNTENT
4434 @acindex{FUNC_GETMNTENT}
4435 @cvindex HAVE_GETMNTENT
4436 @c @fuindex getmntent
4437 @prindex @code{getmntent}
4438 Check for @code{getmntent} in the standard C library, and then in the
4439 @file{sun}, @file{seq}, and @file{gen} libraries, for @sc{unicos},
4440 @sc{irix} 4, @sc{ptx}, and UnixWare, respectively.  Then, if
4441 @code{getmntent} is available, define @code{HAVE_GETMNTENT}.
4442 @end defmac
4444 @defmac AC_FUNC_GETPGRP
4445 @acindex{FUNC_GETPGRP}
4446 @cvindex GETPGRP_VOID
4447 @c @fuindex getpgid
4448 @c @fuindex getpgrp
4449 @prindex @code{getpgid}
4450 @prindex @code{getpgrp}
4451 Define @code{GETPGRP_VOID} if it is an error to pass 0 to
4452 @code{getpgrp}; this is the Posix behavior.  On older @acronym{BSD}
4453 systems, you must pass 0 to @code{getpgrp}, as it takes an argument and
4454 behaves like Posix's @code{getpgid}.
4456 @example
4457 #if GETPGRP_VOID
4458   pid = getpgrp ();
4459 #else
4460   pid = getpgrp (0);
4461 #endif
4462 @end example
4464 This macro does not check whether
4465 @code{getpgrp} exists at all; if you need to work in that situation,
4466 first call @code{AC_CHECK_FUNC} for @code{getpgrp}.
4468 This macro is obsolescent, as current systems have a @code{getpgrp}
4469 whose signature conforms to Posix.  New programs need not use this macro.
4470 @end defmac
4472 @defmac AC_FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK
4473 @acindex{FUNC_LSTAT_FOLLOWS_SLASHED_SYMLINK}
4474 @cvindex LSTAT_FOLLOWS_SLASHED_SYMLINK
4475 @c @fuindex lstat
4476 @prindex @code{lstat}
4477 If @file{link} is a symbolic link, then @code{lstat} should treat
4478 @file{link/} the same as @file{link/.}.  However, many older
4479 @code{lstat} implementations incorrectly ignore trailing slashes.
4481 It is safe to assume that if @code{lstat} incorrectly ignores
4482 trailing slashes, then other symbolic-link-aware functions like
4483 @code{unlink} also incorrectly ignore trailing slashes.
4485 If @code{lstat} behaves properly, define
4486 @code{LSTAT_FOLLOWS_SLASHED_SYMLINK}, otherwise require an
4487 @code{AC_LIBOBJ} replacement of @code{lstat}.
4488 @end defmac
4490 @defmac AC_FUNC_MALLOC
4491 @acindex{FUNC_MALLOC}
4492 @cvindex HAVE_MALLOC
4493 @cvindex malloc
4494 @c @fuindex malloc
4495 @prindex @code{malloc}
4496 If the @code{malloc} function is compatible with the @acronym{GNU} C
4497 library @code{malloc} (i.e., @samp{malloc (0)} returns a valid
4498 pointer), define @code{HAVE_MALLOC} to 1.  Otherwise define
4499 @code{HAVE_MALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
4500 @samp{malloc}, and define @code{malloc} to @code{rpl_malloc} so that the
4501 native @code{malloc} is not used in the main project.
4503 Typically, the replacement file @file{malloc.c} should look like (note
4504 the @samp{#undef malloc}):
4506 @verbatim
4507 #if HAVE_CONFIG_H
4508 # include <config.h>
4509 #endif
4510 #undef malloc
4512 #include <sys/types.h>
4514 void *malloc ();
4516 /* Allocate an N-byte block of memory from the heap.
4517    If N is zero, allocate a 1-byte block.  */
4519 void *
4520 rpl_malloc (size_t n)
4522   if (n == 0)
4523     n = 1;
4524   return malloc (n);
4526 @end verbatim
4527 @end defmac
4529 @defmac AC_FUNC_MEMCMP
4530 @acindex{FUNC_MEMCMP}
4531 @ovindex LIBOBJS
4532 @c @fuindex memcmp
4533 @prindex @code{memcmp}
4534 If the @code{memcmp} function is not available, or does not work on
4535 8-bit data (like the one on SunOS 4.1.3), or fails when comparing 16
4536 bytes or more and with at least one buffer not starting on a 4-byte
4537 boundary (such as the one on NeXT x86 OpenStep), require an
4538 @code{AC_LIBOBJ} replacement for @samp{memcmp}.
4540 This macro is obsolescent, as current systems have a working
4541 @code{memcmp}.  New programs need not use this macro.
4542 @end defmac
4544 @defmac AC_FUNC_MBRTOWC
4545 @acindex{FUNC_MBRTOWC}
4546 @cvindex HAVE_MBRTOWC
4547 @c @fuindex mbrtowc
4548 @prindex @code{mbrtowc}
4549 Define @code{HAVE_MBRTOWC} to 1 if the function @code{mbrtowc} and the
4550 type @code{mbstate_t} are properly declared.
4551 @end defmac
4553 @defmac AC_FUNC_MKTIME
4554 @acindex{FUNC_MKTIME}
4555 @ovindex LIBOBJS
4556 @c @fuindex mktime
4557 @prindex @code{mktime}
4558 If the @code{mktime} function is not available, or does not work
4559 correctly, require an @code{AC_LIBOBJ} replacement for @samp{mktime}.
4560 For the purposes of this test, @code{mktime} should conform to the
4561 Posix standard and should be the inverse of
4562 @code{localtime}.
4563 @end defmac
4565 @defmac AC_FUNC_MMAP
4566 @acindex{FUNC_MMAP}
4567 @cvindex HAVE_MMAP
4568 @c @fuindex mmap
4569 @prindex @code{mmap}
4570 If the @code{mmap} function exists and works correctly, define
4571 @code{HAVE_MMAP}.  This checks only private fixed mapping of already-mapped
4572 memory.
4573 @end defmac
4575 @defmac AC_FUNC_OBSTACK
4576 @acindex{FUNC_OBSTACK}
4577 @cvindex HAVE_OBSTACK
4578 @cindex obstack
4579 If the obstacks are found, define @code{HAVE_OBSTACK}, else require an
4580 @code{AC_LIBOBJ} replacement for @samp{obstack}.
4581 @end defmac
4583 @defmac AC_FUNC_REALLOC
4584 @acindex{FUNC_REALLOC}
4585 @cvindex HAVE_REALLOC
4586 @cvindex realloc
4587 @c @fuindex realloc
4588 @prindex @code{realloc}
4589 If the @code{realloc} function is compatible with the @acronym{GNU} C
4590 library @code{realloc} (i.e., @samp{realloc (NULL, 0)} returns a
4591 valid pointer), define @code{HAVE_REALLOC} to 1.  Otherwise define
4592 @code{HAVE_REALLOC} to 0, ask for an @code{AC_LIBOBJ} replacement for
4593 @samp{realloc}, and define @code{realloc} to @code{rpl_realloc} so that
4594 the native @code{realloc} is not used in the main project.  See
4595 @code{AC_FUNC_MALLOC} for details.
4596 @end defmac
4598 @defmac AC_FUNC_SELECT_ARGTYPES
4599 @acindex{FUNC_SELECT_ARGTYPES}
4600 @cvindex SELECT_TYPE_ARG1
4601 @cvindex SELECT_TYPE_ARG234
4602 @cvindex SELECT_TYPE_ARG5
4603 @c @fuindex select
4604 @prindex @code{select}
4605 Determines the correct type to be passed for each of the
4606 @code{select} function's arguments, and defines those types
4607 in @code{SELECT_TYPE_ARG1}, @code{SELECT_TYPE_ARG234}, and
4608 @code{SELECT_TYPE_ARG5} respectively.  @code{SELECT_TYPE_ARG1} defaults
4609 to @samp{int}, @code{SELECT_TYPE_ARG234} defaults to @samp{int *},
4610 and @code{SELECT_TYPE_ARG5} defaults to @samp{struct timeval *}.
4612 This macro is obsolescent, as current systems have a @code{select} whose
4613 signature conforms to Posix.  New programs need not use this macro.
4614 @end defmac
4616 @defmac AC_FUNC_SETPGRP
4617 @acindex{FUNC_SETPGRP}
4618 @cvindex SETPGRP_VOID
4619 @c @fuindex setpgrp
4620 @prindex @code{setpgrp}
4621 If @code{setpgrp} takes no argument (the Posix version), define
4622 @code{SETPGRP_VOID}.  Otherwise, it is the @acronym{BSD} version, which takes
4623 two process IDs as arguments.  This macro does not check whether
4624 @code{setpgrp} exists at all; if you need to work in that situation,
4625 first call @code{AC_CHECK_FUNC} for @code{setpgrp}.
4627 This macro is obsolescent, as current systems have a @code{setpgrp}
4628 whose signature conforms to Posix.  New programs need not use this macro.
4629 @end defmac
4631 @defmac AC_FUNC_STAT
4632 @defmacx AC_FUNC_LSTAT
4633 @acindex{FUNC_STAT}
4634 @acindex{FUNC_LSTAT}
4635 @cvindex HAVE_STAT_EMPTY_STRING_BUG
4636 @cvindex HAVE_LSTAT_EMPTY_STRING_BUG
4637 @c @fuindex stat
4638 @prindex @code{stat}
4639 @c @fuindex lstat
4640 @prindex @code{lstat}
4641 Determine whether @code{stat} or @code{lstat} have the bug that it
4642 succeeds when given the zero-length file name as argument.  The @code{stat}
4643 and @code{lstat} from SunOS 4.1.4 and the Hurd (as of 1998-11-01) do
4644 this.
4646 If it does, then define @code{HAVE_STAT_EMPTY_STRING_BUG} (or
4647 @code{HAVE_LSTAT_EMPTY_STRING_BUG}) and ask for an @code{AC_LIBOBJ}
4648 replacement of it.
4650 These macros are obsolescent, as no current systems have the bug.
4651 New programs need not use these macros.
4652 @end defmac
4654 @defmac AC_FUNC_SETVBUF_REVERSED
4655 @acindex{FUNC_SETVBUF_REVERSED}
4656 @cvindex SETVBUF_REVERSED
4657 @c @fuindex setvbuf
4658 @prindex @code{setvbuf}
4659 If @code{setvbuf} takes the buffering type as its second argument and
4660 the buffer pointer as the third, instead of the other way around, define
4661 @code{SETVBUF_REVERSED}.
4663 This macro is obsolescent, as no current systems have the bug.
4664 New programs need not use this macro.
4665 @end defmac
4667 @defmac AC_FUNC_STRCOLL
4668 @acindex{FUNC_STRCOLL}
4669 @cvindex HAVE_STRCOLL
4670 @c @fuindex strcoll
4671 @prindex @code{strcoll}
4672 If the @code{strcoll} function exists and works correctly, define
4673 @code{HAVE_STRCOLL}.  This does a bit more than
4674 @samp{AC_CHECK_FUNCS(strcoll)}, because some systems have incorrect
4675 definitions of @code{strcoll} that should not be used.
4676 @end defmac
4678 @defmac AC_FUNC_STRERROR_R
4679 @acindex{FUNC_STRERROR_R}
4680 @cvindex HAVE_STRERROR_R
4681 @cvindex HAVE_DECL_STRERROR_R
4682 @cvindex STRERROR_R_CHAR_P
4683 @c @fuindex strerror_r
4684 @prindex @code{strerror_r}
4685 If @code{strerror_r} is available, define @code{HAVE_STRERROR_R}, and if
4686 it is declared, define @code{HAVE_DECL_STRERROR_R}.  If it returns a
4687 @code{char *} message, define @code{STRERROR_R_CHAR_P}; otherwise it
4688 returns an @code{int} error number.  The Thread-Safe Functions option of
4689 Posix requires @code{strerror_r} to return @code{int}, but
4690 many systems (including, for example, version 2.2.4 of the @acronym{GNU} C
4691 Library) return a @code{char *} value that is not necessarily equal to
4692 the buffer argument.
4693 @end defmac
4695 @defmac AC_FUNC_STRFTIME
4696 @acindex{FUNC_STRFTIME}
4697 @cvindex HAVE_STRFTIME
4698 @c @fuindex strftime
4699 @prindex @code{strftime}
4700 Check for @code{strftime} in the @file{intl} library, for SCO Unix.
4701 Then, if @code{strftime} is available, define @code{HAVE_STRFTIME}.
4703 This macro is obsolescent, as no current systems require the @file{intl}
4704 library for @code{strftime}.  New programs need not use this macro.
4705 @end defmac
4707 @defmac AC_FUNC_STRTOD
4708 @acindex{FUNC_STRTOD}
4709 @ovindex POW_LIB
4710 @c @fuindex strtod
4711 @prindex @code{strtod}
4712 If the @code{strtod} function does not exist or doesn't work correctly,
4713 ask for an @code{AC_LIBOBJ} replacement of @samp{strtod}.  In this case,
4714 because @file{strtod.c} is likely to need @samp{pow}, set the output
4715 variable @code{POW_LIB} to the extra library needed.
4716 @end defmac
4718 @defmac AC_FUNC_STRTOLD
4719 @acindex{FUNC_STRTOLD}
4720 @prindex @code{strtold}
4721 If the @code{strtold} function exists and conforms to C99, define
4722 @code{HAVE_STRTOLD}.
4723 @end defmac
4725 @defmac AC_FUNC_STRNLEN
4726 @acindex{FUNC_STRNLEN}
4727 @cvindex HAVE_STRNLEN
4728 @c @fuindex strnlen
4729 @prindex @code{strnlen}
4730 If the @code{strnlen} function is not available, or is buggy (like the one
4731 from @acronym{AIX} 4.3), require an @code{AC_LIBOBJ} replacement for it.
4732 @end defmac
4734 @defmac AC_FUNC_UTIME_NULL
4735 @acindex{FUNC_UTIME_NULL}
4736 @cvindex HAVE_UTIME_NULL
4737 @c @fuindex utime
4738 @prindex @code{utime}
4739 If @samp{utime (@var{file}, NULL)} sets @var{file}'s timestamp to
4740 the present, define @code{HAVE_UTIME_NULL}.
4742 This macro is obsolescent, as all current systems have a @code{utime}
4743 that behaves this way.  New programs need not use this macro.
4744 @end defmac
4746 @defmac AC_FUNC_VPRINTF
4747 @acindex{FUNC_VPRINTF}
4748 @cvindex HAVE_VPRINTF
4749 @cvindex HAVE_DOPRNT
4750 @c @fuindex vprintf
4751 @prindex @code{vprintf}
4752 If @code{vprintf} is found, define @code{HAVE_VPRINTF}.  Otherwise, if
4753 @code{_doprnt} is found, define @code{HAVE_DOPRNT}.  (If @code{vprintf}
4754 is available, you may assume that @code{vfprintf} and @code{vsprintf}
4755 are also available.)
4757 This macro is obsolescent, as all current systems have @code{vprintf}.
4758 New programs need not use this macro.
4759 @end defmac
4761 @defmac AC_REPLACE_FNMATCH
4762 @acindex{REPLACE_FNMATCH}
4763 @c @fuindex fnmatch
4764 @prindex @code{fnmatch}
4765 @hdrindex{fnmatch.h}
4766 If the @code{fnmatch} function does not conform to Posix (see
4767 @code{AC_FUNC_FNMATCH}), ask for its @code{AC_LIBOBJ} replacement.
4769 The files @file{fnmatch.c}, @file{fnmatch_loop.c}, and @file{fnmatch_.h}
4770 in the @code{AC_LIBOBJ} replacement directory are assumed to contain a
4771 copy of the source code of @acronym{GNU} @code{fnmatch}.  If necessary,
4772 this source code is compiled as an @code{AC_LIBOBJ} replacement, and the
4773 @file{fnmatch_.h} file is linked to @file{fnmatch.h} so that it can be
4774 included in place of the system @code{<fnmatch.h>}.
4775 @end defmac
4779 @node Generic Functions
4780 @subsection Generic Function Checks
4782 These macros are used to find functions not covered by the ``particular''
4783 test macros.  If the functions might be in libraries other than the
4784 default C library, first call @code{AC_CHECK_LIB} for those libraries.
4785 If you need to check the behavior of a function as well as find out
4786 whether it is present, you have to write your own test for
4787 it (@pxref{Writing Tests}).
4789 @defmac AC_CHECK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
4790 @acindex{CHECK_FUNC}
4791 If C function @var{function} is available, run shell commands
4792 @var{action-if-found}, otherwise @var{action-if-not-found}.  If you just
4793 want to define a symbol if the function is available, consider using
4794 @code{AC_CHECK_FUNCS} instead.  This macro checks for functions with C
4795 linkage even when @code{AC_LANG(C++)} has been called, since C is more
4796 standardized than C++.  (@pxref{Language Choice}, for more information
4797 about selecting the language for checks.)
4798 @end defmac
4800 @defmac AC_CHECK_FUNCS (@var{function}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found})
4801 @acindex{CHECK_FUNCS}
4802 @cvindex HAVE_@var{function}
4803 For each @var{function} enumerated in the blank-or-newline-separated argument
4804 list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
4805 If @var{action-if-found} is given, it is additional shell code to
4806 execute when one of the functions is found.  You can give it a value of
4807 @samp{break} to break out of the loop on the first match.  If
4808 @var{action-if-not-found} is given, it is executed when one of the
4809 functions is not found.
4810 @end defmac
4812 @defmac AC_CHECK_FUNCS_ONCE (@var{function}@dots{})
4813 @acindex{CHECK_FUNCS_ONCE}
4814 @cvindex HAVE_@var{function}
4815 For each @var{function} enumerated in the blank-or-newline-separated argument
4816 list, define @code{HAVE_@var{function}} (in all capitals) if it is available.
4817 This is a once-only variant of @code{AC_CHECK_FUNCS}.  It generates the
4818 checking code at most once, so that @command{configure} is smaller and
4819 faster; but the checks cannot be conditionalized and are always done once,
4820 early during the @command{configure} run.
4821 @end defmac
4823 @sp 1
4825 Autoconf follows a philosophy that was formed over the years by those
4826 who have struggled for portability: isolate the portability issues in
4827 specific files, and then program as if you were in a Posix
4828 environment.  Some functions may be missing or unfixable, and your
4829 package must be ready to replace them.
4831 Suitable replacements for many such problem functions are available from
4832 Gnulib (@pxref{Gnulib}).
4834 @defmac AC_LIBOBJ (@var{function})
4835 @acindex{LIBOBJ}
4836 @ovindex LIBOBJS
4837 Specify that @samp{@var{function}.c} must be included in the executables
4838 to replace a missing or broken implementation of @var{function}.
4840 Technically, it adds @samp{@var{function}.$ac_objext} to the output
4841 variable @code{LIBOBJS} if it is not already in, and calls
4842 @code{AC_LIBSOURCE} for @samp{@var{function}.c}.  You should not
4843 directly change @code{LIBOBJS}, since this is not traceable.
4844 @end defmac
4846 @defmac AC_LIBSOURCE (@var{file})
4847 @acindex{LIBSOURCE}
4848 Specify that @var{file} might be needed to compile the project.  If you
4849 need to know what files might be needed by a @file{configure.ac}, you
4850 should trace @code{AC_LIBSOURCE}.  @var{file} must be a literal.
4852 This macro is called automatically from @code{AC_LIBOBJ}, but you must
4853 call it explicitly if you pass a shell variable to @code{AC_LIBOBJ}.  In
4854 that case, since shell variables cannot be traced statically, you must
4855 pass to @code{AC_LIBSOURCE} any possible files that the shell variable
4856 might cause @code{AC_LIBOBJ} to need.  For example, if you want to pass
4857 a variable @code{$foo_or_bar} to @code{AC_LIBOBJ} that holds either
4858 @code{"foo"} or @code{"bar"}, you should do:
4860 @example
4861 AC_LIBSOURCE([foo.c])
4862 AC_LIBSOURCE([bar.c])
4863 AC_LIBOBJ([$foo_or_bar])
4864 @end example
4866 @noindent
4867 There is usually a way to avoid this, however, and you are encouraged to
4868 simply call @code{AC_LIBOBJ} with literal arguments.
4870 Note that this macro replaces the obsolete @code{AC_LIBOBJ_DECL}, with
4871 slightly different semantics: the old macro took the function name,
4872 e.g., @code{foo}, as its argument rather than the file name.
4873 @end defmac
4875 @defmac AC_LIBSOURCES (@var{files})
4876 @acindex{LIBSOURCES}
4877 Like @code{AC_LIBSOURCE}, but accepts one or more @var{files} in a
4878 comma-separated M4 list.  Thus, the above example might be rewritten:
4880 @example
4881 AC_LIBSOURCES([foo.c, bar.c])
4882 AC_LIBOBJ([$foo_or_bar])
4883 @end example
4884 @end defmac
4886 @defmac AC_CONFIG_LIBOBJ_DIR (@var{directory})
4887 @acindex{CONFIG_LIBOBJ_DIR}
4888 Specify that @code{AC_LIBOBJ} replacement files are to be found in
4889 @var{directory}, a name relative to the top level of the
4890 source tree.  The replacement directory defaults to @file{.}, the top
4891 level directory, and the most typical value is @file{lib}, corresponding
4892 to @samp{AC_CONFIG_LIBOBJ_DIR([lib])}.
4894 @command{configure} might need to know the replacement directory for the
4895 following reasons: (i) some checks use the replacement files, (ii) some
4896 macros bypass broken system headers by installing links to the
4897 replacement headers (iii) when used in conjunction with Automake,
4898 within each makefile, @var{directory} is used as a relative path
4899 from @code{$(top_srcdir)} to each object named in @code{LIBOBJS} and
4900 @code{LTLIBOBJS}, etc.
4901 @end defmac
4903 @sp 1
4905 It is common to merely check for the existence of a function, and ask
4906 for its @code{AC_LIBOBJ} replacement if missing.  The following macro is
4907 a convenient shorthand.
4909 @defmac AC_REPLACE_FUNCS (@var{function}@dots{})
4910 @acindex{REPLACE_FUNCS}
4911 @ovindex LIBOBJS
4912 Like @code{AC_CHECK_FUNCS}, but uses @samp{AC_LIBOBJ(@var{function})} as
4913 @var{action-if-not-found}.  You can declare your replacement function by
4914 enclosing the prototype in @samp{#if !HAVE_@var{function}}.  If the
4915 system has the function, it probably declares it in a header file you
4916 should be including, so you shouldn't redeclare it lest your declaration
4917 conflict.
4918 @end defmac
4920 @node Header Files
4921 @section Header Files
4922 @cindex Header, checking
4924 The following macros check for the presence of certain C header files.
4925 If there is no macro specifically defined to check for a header file you need,
4926 and you don't need to check for any special properties of
4927 it, then you can use one of the general header-file check macros.
4929 @menu
4930 * Header Portability::          Collected knowledge on common headers
4931 * Particular Headers::          Special handling to find certain headers
4932 * Generic Headers::             How to find other headers
4933 @end menu
4935 @node Header Portability
4936 @subsection Portability of Headers
4937 @cindex Portability of headers
4938 @cindex Header portability
4940 This section tries to collect knowledge about common headers, and the
4941 problems they cause.  By definition, this list always requires
4942 additions.  Please help us keeping it as complete as possible.
4944 @table @asis
4946 @item @file{limits.h}
4947 C99 says that @file{limits.h} defines @code{LLONG_MIN},
4948 @code{LLONG_MAX}, and @code{ULLONG_MAX}, but many almost-C99
4949 environments (e.g., default GCC 4.0.2 + glibc 2.4) do not define them.
4951 @item @file{inttypes.h} vs.@: @file{stdint.h}
4952 @hdrindex{inttypes.h}
4953 @hdrindex{stdint.h}
4954 The C99 standard says that @file{inttypes.h} includes
4955 @file{stdint.h}, so there's no need to include @file{stdint.h}
4956 separately in a standard environment.  Some implementations have
4957 @file{inttypes.h} but not @file{stdint.h} (e.g., Solaris 7), but we don't
4958 know of any implementation that has @file{stdint.h} but not
4959 @file{inttypes.h}.
4961 @item @file{linux/irda.h}
4962 @hdrindex{linux/irda.h}
4963 It requires @file{linux/types.h} and @file{sys/socket.h}.
4965 @item @file{linux/random.h}
4966 @hdrindex{linux/random.h}
4967 It requires @file{linux/types.h}.
4969 @item @file{net/if.h}
4970 @hdrindex{net/if.h}
4971 On Darwin, this file requires that @file{sys/socket.h} be included
4972 beforehand.  One should run:
4974 @example
4975 AC_CHECK_HEADERS([sys/socket.h])
4976 AC_CHECK_HEADERS([net/if.h], [], [],
4977 [#include <stdio.h>
4978 #if STDC_HEADERS
4979 # include <stdlib.h>
4980 # include <stddef.h>
4981 #else
4982 # if HAVE_STDLIB_H
4983 #  include <stdlib.h>
4984 # endif
4985 #endif
4986 #if HAVE_SYS_SOCKET_H
4987 # include <sys/socket.h>
4988 #endif
4990 @end example
4992 @item @file{netinet/if_ether.h}
4993 @hdrindex{netinet/if_ether.h}
4994 On Darwin, this file requires that @file{stdio.h} and
4995 @file{sys/socket.h} be included beforehand.  One should run:
4997 @example
4998 AC_CHECK_HEADERS([sys/socket.h])
4999 AC_CHECK_HEADERS([netinet/if_ether.h], [], [],
5000 [#include <stdio.h>
5001 #if STDC_HEADERS
5002 # include <stdlib.h>
5003 # include <stddef.h>
5004 #else
5005 # if HAVE_STDLIB_H
5006 #  include <stdlib.h>
5007 # endif
5008 #endif
5009 #if HAVE_SYS_SOCKET_H
5010 # include <sys/socket.h>
5011 #endif
5013 @end example
5015 @item @file{stdint.h}
5016 See above, item @file{inttypes.h} vs.@: @file{stdint.h}.
5018 @item @file{stdlib.h}
5019 @hdrindex{stdlib.h}
5020 On many systems (e.g., Darwin), @file{stdio.h} is a prerequisite.
5022 @item @file{sys/mount.h}
5023 @hdrindex{sys/mount.h}
5024 On Free@acronym{BSD} 4.8 on ia32 and using gcc version 2.95.4,
5025 @file{sys/params.h} is a prerequisite.
5027 @item @file{sys/ptem.h}
5028 @hdrindex{sys/ptem.h}
5029 On Solaris 8, @file{sys/stream.h} is a prerequisite.
5031 @item @file{sys/socket.h}
5032 @hdrindex{sys/socket.h}
5033 On Darwin, @file{stdlib.h} is a prerequisite.
5035 @item @file{sys/ucred.h}
5036 @hdrindex{sys/ucred.h}
5037 On HP Tru64 5.1, @file{sys/types.h} is a prerequisite.
5039 @item @file{X11/extensions/scrnsaver.h}
5040 @hdrindex{X11/extensions/scrnsaver.h}
5041 Using XFree86, this header requires @file{X11/Xlib.h}, which is probably
5042 so required that you might not even consider looking for it.
5044 @example
5045 AC_CHECK_HEADERS([X11/extensions/scrnsaver.h], [], [],
5046 [[#include <X11/Xlib.h>
5048 @end example
5049 @end table
5052 @node Particular Headers
5053 @subsection Particular Header Checks
5055 These macros check for particular system header files---whether they
5056 exist, and in some cases whether they declare certain symbols.
5058 @defmac AC_HEADER_ASSERT
5059 @acindex{HEADER_ASSERT}
5060 @cvindex NDEBUG
5061 @hdrindex{assert.h}
5062 Check whether to enable assertions in the style of @file{assert.h}.
5063 Assertions are enabled by default, but the user can override this by
5064 invoking @command{configure} with the @option{--disable-assert} option.
5065 @end defmac
5067 @defmac AC_HEADER_DIRENT
5068 @acindex{HEADER_DIRENT}
5069 @cvindex HAVE_DIRENT_H
5070 @cvindex HAVE_NDIR_H
5071 @cvindex HAVE_SYS_DIR_H
5072 @cvindex HAVE_SYS_NDIR_H
5073 @hdrindex{dirent.h}
5074 @hdrindex{sys/ndir.h}
5075 @hdrindex{sys/dir.h}
5076 @hdrindex{ndir.h}
5077 Check for the following header files.  For the first one that is
5078 found and defines @samp{DIR}, define the listed C preprocessor macro:
5080 @multitable {@file{sys/ndir.h}} {@code{HAVE_SYS_NDIR_H}}
5081 @item @file{dirent.h}   @tab @code{HAVE_DIRENT_H}
5082 @item @file{sys/ndir.h} @tab @code{HAVE_SYS_NDIR_H}
5083 @item @file{sys/dir.h}  @tab @code{HAVE_SYS_DIR_H}
5084 @item @file{ndir.h}     @tab @code{HAVE_NDIR_H}
5085 @end multitable
5087 The directory-library declarations in your source code should look
5088 something like the following:
5090 @example
5091 @group
5092 #include <sys/types.h>
5093 #ifdef HAVE_DIRENT_H
5094 # include <dirent.h>
5095 # define NAMLEN(dirent) strlen ((dirent)->d_name)
5096 #else
5097 # define dirent direct
5098 # define NAMLEN(dirent) ((dirent)->d_namlen)
5099 # if HAVE_SYS_NDIR_H
5100 #  include <sys/ndir.h>
5101 # endif
5102 # if HAVE_SYS_DIR_H
5103 #  include <sys/dir.h>
5104 # endif
5105 # if HAVE_NDIR_H
5106 #  include <ndir.h>
5107 # endif
5108 #endif
5109 @end group
5110 @end example
5112 Using the above declarations, the program would declare variables to be
5113 of type @code{struct dirent}, not @code{struct direct}, and would access
5114 the length of a directory entry name by passing a pointer to a
5115 @code{struct dirent} to the @code{NAMLEN} macro.
5117 This macro also checks for the SCO Xenix @file{dir} and @file{x} libraries.
5119 This macro is obsolescent, as all current systems with directory
5120 libraries have @code{<dirent.h>}.  New programs need not use this macro.
5122 Also see @code{AC_STRUCT_DIRENT_D_INO} and
5123 @code{AC_STRUCT_DIRENT_D_TYPE} (@pxref{Particular Structures}).
5124 @end defmac
5126 @defmac AC_HEADER_MAJOR
5127 @acindex{HEADER_MAJOR}
5128 @cvindex MAJOR_IN_MKDEV
5129 @cvindex MAJOR_IN_SYSMACROS
5130 @hdrindex{sys/mkdev.h}
5131 @hdrindex{sys/sysmacros.h}
5132 If @file{sys/types.h} does not define @code{major}, @code{minor}, and
5133 @code{makedev}, but @file{sys/mkdev.h} does, define
5134 @code{MAJOR_IN_MKDEV}; otherwise, if @file{sys/sysmacros.h} does, define
5135 @code{MAJOR_IN_SYSMACROS}.
5136 @end defmac
5138 @defmac AC_HEADER_RESOLV
5139 @acindex{HEADER_RESOLV}
5140 @cvindex HAVE_RESOLV_H
5141 @hdrindex{resolv.h}
5142 Checks for header @file{resolv.h}, checking for prerequisites first.
5143 To properly use @file{resolv.h}, your code should contain something like
5144 the following:
5146 @verbatim
5147 #if HAVE_SYS_TYPES_H
5148 #  include <sys/types.h>
5149 #endif
5150 #ifdef HAVE_NETINET_IN_H
5151 #  include <netinet/in.h>   /* inet_ functions / structs */
5152 #endif
5153 #ifdef HAVE_ARPA_NAMESER_H
5154 #  include <arpa/nameser.h> /* DNS HEADER struct */
5155 #endif
5156 #ifdef HAVE_NETDB_H
5157 #  include <netdb.h>
5158 #endif
5159 #include <resolv.h>
5160 @end verbatim
5161 @end defmac
5163 @defmac AC_HEADER_STAT
5164 @acindex{HEADER_STAT}
5165 @cvindex STAT_MACROS_BROKEN
5166 @hdrindex{sys/stat.h}
5167 If the macros @code{S_ISDIR}, @code{S_ISREG}, etc.@: defined in
5168 @file{sys/stat.h} do not work properly (returning false positives),
5169 define @code{STAT_MACROS_BROKEN}.  This is the case on Tektronix UTekV,
5170 Amdahl UTS and Motorola System V/88.
5172 This macro is obsolescent, as no current systems have the bug.
5173 New programs need not use this macro.
5174 @end defmac
5176 @defmac AC_HEADER_STDBOOL
5177 @acindex{HEADER_STDBOOL}
5178 @cvindex HAVE_STDBOOL_H
5179 @cvindex HAVE__BOOL
5180 @hdrindex{stdbool.h}
5181 @hdrindex{system.h}
5182 If @file{stdbool.h} exists and conforms to C99, define
5183 @code{HAVE_STDBOOL_H} to 1; if the type @code{_Bool} is defined, define
5184 @code{HAVE__BOOL} to 1.  To fulfill the C99 requirements, your
5185 @file{system.h} could contain the following code:
5187 @verbatim
5188 #if HAVE_STDBOOL_H
5189 # include <stdbool.h>
5190 #else
5191 # if ! HAVE__BOOL
5192 #  ifdef __cplusplus
5193 typedef bool _Bool;
5194 #  else
5195 #   define _Bool signed char
5196 #  endif
5197 # endif
5198 # define bool _Bool
5199 # define false 0
5200 # define true 1
5201 # define __bool_true_false_are_defined 1
5202 #endif
5203 @end verbatim
5205 Alternatively you can use the @samp{stdbool} package of Gnulib
5206 (@pxref{Gnulib}); it packages the above code into a replacement header
5207 and contains a few other bells and whistles.
5209 @end defmac
5212 @defmac AC_HEADER_STDC
5213 @acindex{HEADER_STDC}
5214 @cvindex STDC_HEADERS
5215 @hdrindex{stdlib.h}
5216 @hdrindex{stdarg.h}
5217 @hdrindex{string.h}
5218 @hdrindex{float.h}
5219 @hdrindex{ctype.h}
5220 Define @code{STDC_HEADERS} if the system has C header files
5221 conforming to @acronym{ANSI} C89 (@acronym{ISO} C90).
5222 Specifically, this macro checks for @file{stdlib.h}, @file{stdarg.h},
5223 @file{string.h}, and @file{float.h}; if the system has those, it
5224 probably has the rest of the C89 header files.  This macro also
5225 checks whether @file{string.h} declares @code{memchr} (and thus
5226 presumably the other @code{mem} functions), whether @file{stdlib.h}
5227 declare @code{free} (and thus presumably @code{malloc} and other related
5228 functions), and whether the @file{ctype.h} macros work on characters
5229 with the high bit set, as the C standard requires.
5231 If you use this macro, your code can refer to @code{STDC_HEADERS} to
5232 determine whether the system has conforming header files (and probably C
5233 library functions).
5235 This macro is obsolescent, as current systems have conforming header
5236 files.  New programs need not use this macro.
5238 @hdrindex{string.h}
5239 @hdrindex{strings.h}
5240 Nowadays @file{string.h} is part of the C standard and declares functions like
5241 @code{strcpy}, and @file{strings.h} is standardized by Posix and declares
5242 @acronym{BSD} functions like @code{bcopy}; but
5243 historically, string functions were a major sticking point in this area.
5244 If you still want to worry about portability to ancient systems without
5245 standard headers, there is so much variation
5246 that it is probably easier to declare the functions you use than to
5247 figure out exactly what the system header files declare.  Some ancient systems
5248 contained a mix of functions from the C standard and from @acronym{BSD};
5249 some were mostly standard but lacked @samp{memmove}; some defined the
5250 @acronym{BSD} functions as macros in @file{string.h} or
5251 @file{strings.h}; some had only the @acronym{BSD} functions but
5252 @file{string.h}; some declared the memory functions in @file{memory.h},
5253 some in @file{string.h}; etc.  It is probably sufficient to check for
5254 one string function and one memory function; if the library had the
5255 standard versions of those then it probably had most of the others.
5256 If you put the following in @file{configure.ac}:
5258 @example
5259 # This example is obsolescent.
5260 # Nowadays you can omit these macro calls.
5261 AC_HEADER_STDC
5262 AC_CHECK_FUNCS([strchr memcpy])
5263 @end example
5265 @noindent
5266 then, in your code, you can use declarations like this:
5268 @example
5269 @group
5270 /* This example is obsolescent.
5271    Nowadays you can just #include <string.h>.  */
5272 #if STDC_HEADERS
5273 # include <string.h>
5274 #else
5275 # if !HAVE_STRCHR
5276 #  define strchr index
5277 #  define strrchr rindex
5278 # endif
5279 char *strchr (), *strrchr ();
5280 # if !HAVE_MEMCPY
5281 #  define memcpy(d, s, n) bcopy ((s), (d), (n))
5282 #  define memmove(d, s, n) bcopy ((s), (d), (n))
5283 # endif
5284 #endif
5285 @end group
5286 @end example
5288 @noindent
5289 If you use a function like @code{memchr}, @code{memset}, @code{strtok},
5290 or @code{strspn}, which have no @acronym{BSD} equivalent, then macros don't
5291 suffice to port to ancient hosts; you must provide an implementation of
5292 each function.  An easy
5293 way to incorporate your implementations only when needed (since the ones
5294 in system C libraries may be hand optimized) is to, taking @code{memchr}
5295 for example, put it in @file{memchr.c} and use
5296 @samp{AC_REPLACE_FUNCS([memchr])}.
5297 @end defmac
5299 @defmac AC_HEADER_SYS_WAIT
5300 @acindex{HEADER_SYS_WAIT}
5301 @cvindex HAVE_SYS_WAIT_H
5302 @hdrindex{sys/wait.h}
5303 If @file{sys/wait.h} exists and is compatible with Posix, define
5304 @code{HAVE_SYS_WAIT_H}.  Incompatibility can occur if @file{sys/wait.h}
5305 does not exist, or if it uses the old @acronym{BSD} @code{union wait} instead
5306 of @code{int} to store a status value.  If @file{sys/wait.h} is not
5307 Posix compatible, then instead of including it, define the
5308 Posix macros with their usual interpretations.  Here is an
5309 example:
5311 @example
5312 @group
5313 #include <sys/types.h>
5314 #if HAVE_SYS_WAIT_H
5315 # include <sys/wait.h>
5316 #endif
5317 #ifndef WEXITSTATUS
5318 # define WEXITSTATUS(stat_val) ((unsigned int) (stat_val) >> 8)
5319 #endif
5320 #ifndef WIFEXITED
5321 # define WIFEXITED(stat_val) (((stat_val) & 255) == 0)
5322 #endif
5323 @end group
5324 @end example
5326 @noindent
5327 This macro is obsolescent, as current systems are compatible with Posix.
5328 New programs need not use this macro.
5329 @end defmac
5331 @cvindex _POSIX_VERSION
5332 @hdrindex{unistd.h}
5333 @code{_POSIX_VERSION} is defined when @file{unistd.h} is included on
5334 Posix systems.  If there is no @file{unistd.h}, it is definitely
5335 not a Posix system.  However, some non-Posix systems do
5336 have @file{unistd.h}.
5338 The way to check whether the system supports Posix is:
5340 @example
5341 @group
5342 #if HAVE_UNISTD_H
5343 # include <sys/types.h>
5344 # include <unistd.h>
5345 #endif
5347 #ifdef _POSIX_VERSION
5348 /* Code for Posix systems.  */
5349 #endif
5350 @end group
5351 @end example
5353 @defmac AC_HEADER_TIME
5354 @acindex{HEADER_TIME}
5355 @cvindex TIME_WITH_SYS_TIME
5356 @hdrindex{time.h}
5357 @hdrindex{sys/time.h}
5358 If a program may include both @file{time.h} and @file{sys/time.h},
5359 define @code{TIME_WITH_SYS_TIME}.  On some ancient systems,
5360 @file{sys/time.h} included @file{time.h}, but @file{time.h} was not
5361 protected against multiple inclusion, so programs could not explicitly
5362 include both files.  This macro is useful in programs that use, for
5363 example, @code{struct timeval} as well as
5364 @code{struct tm}.  It is best used in conjunction with
5365 @code{HAVE_SYS_TIME_H}, which can be checked for using
5366 @code{AC_CHECK_HEADERS([sys/time.h])}.
5368 @example
5369 @group
5370 #if TIME_WITH_SYS_TIME
5371 # include <sys/time.h>
5372 # include <time.h>
5373 #else
5374 # if HAVE_SYS_TIME_H
5375 #  include <sys/time.h>
5376 # else
5377 #  include <time.h>
5378 # endif
5379 #endif
5380 @end group
5381 @end example
5383 @noindent
5384 This macro is obsolescent, as current systems can include both files
5385 when they exist.  New programs need not use this macro.
5386 @end defmac
5389 @defmac AC_HEADER_TIOCGWINSZ
5390 @acindex{HEADER_TIOCGWINSZ}
5391 @cvindex GWINSZ_IN_SYS_IOCTL
5392 @hdrindex{sys/ioctl.h}
5393 @hdrindex{termios.h}
5394 @c FIXME: I need clarifications from Jim.
5395 If the use of @code{TIOCGWINSZ} requires @file{<sys/ioctl.h>}, then
5396 define @code{GWINSZ_IN_SYS_IOCTL}.  Otherwise @code{TIOCGWINSZ} can be
5397 found in @file{<termios.h>}.
5399 Use:
5401 @example
5402 @group
5403 #if HAVE_TERMIOS_H
5404 # include <termios.h>
5405 #endif
5407 #if GWINSZ_IN_SYS_IOCTL
5408 # include <sys/ioctl.h>
5409 #endif
5410 @end group
5411 @end example
5412 @end defmac
5414 @node Generic Headers
5415 @subsection Generic Header Checks
5417 These macros are used to find system header files not covered by the
5418 ``particular'' test macros.  If you need to check the contents of a header
5419 as well as find out whether it is present, you have to write your own
5420 test for it (@pxref{Writing Tests}).
5422 @defmac AC_CHECK_HEADER (@var{header-file}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5423 @acindex{CHECK_HEADER}
5424 If the system header file @var{header-file} is compilable, execute shell
5425 commands @var{action-if-found}, otherwise execute
5426 @var{action-if-not-found}.  If you just want to define a symbol if the
5427 header file is available, consider using @code{AC_CHECK_HEADERS}
5428 instead.
5430 For compatibility issues with older versions of Autoconf, please read
5431 below.
5432 @end defmac
5434 @defmac AC_CHECK_HEADERS (@var{header-file}@dots{}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5435 @acindex{CHECK_HEADERS}
5436 @cvindex HAVE_@var{header}
5437 For each given system header file @var{header-file} in the
5438 blank-separated argument list that exists, define
5439 @code{HAVE_@var{header-file}} (in all capitals).  If @var{action-if-found}
5440 is given, it is additional shell code to execute when one of the header
5441 files is found.  You can give it a value of @samp{break} to break out of
5442 the loop on the first match.  If @var{action-if-not-found} is given, it
5443 is executed when one of the header files is not found.
5445 For compatibility issues with older versions of Autoconf, please read
5446 below.
5447 @end defmac
5449 Previous versions of Autoconf merely checked whether the header was
5450 accepted by the preprocessor.  This was changed because the old test was
5451 inappropriate for typical uses.  Headers are typically used to compile,
5452 not merely to preprocess, and the old behavior sometimes accepted
5453 headers that clashed at compile-time.  If you need to check whether a
5454 header is preprocessable, you can use @code{AC_PREPROC_IFELSE}
5455 (@pxref{Running the Preprocessor}).
5457 This scheme, which improves the robustness of the test, also requires
5458 that you make sure that headers that must be included before the
5459 @var{header-file} be part of the @var{includes}, (@pxref{Default
5460 Includes}).  If looking for @file{bar.h}, which requires that
5461 @file{foo.h} be included before if it exists, we suggest the following
5462 scheme:
5464 @verbatim
5465 AC_CHECK_HEADERS([foo.h])
5466 AC_CHECK_HEADERS([bar.h], [], [],
5467 [#if HAVE_FOO_H
5468 # include <foo.h>
5469 # endif
5471 @end verbatim
5473 The following variant generates smaller, faster @command{configure}
5474 files if you do not need the full power of @code{AC_CHECK_HEADERS}.
5476 @defmac AC_CHECK_HEADERS_ONCE (@var{header-file}@dots{})
5477 @acindex{CHECK_HEADERS_ONCE}
5478 @cvindex HAVE_@var{header}
5479 For each given system header file @var{header-file} in the
5480 blank-separated argument list that exists, define
5481 @code{HAVE_@var{header-file}} (in all capitals).
5482 This is a once-only variant of @code{AC_CHECK_HEADERS}.  It generates the
5483 checking code at most once, so that @command{configure} is smaller and
5484 faster; but the checks cannot be conditionalized and are always done once,
5485 early during the @command{configure} run.
5486 @end defmac
5488 @node Declarations
5489 @section Declarations
5490 @cindex Declaration, checking
5492 The following macros check for the declaration of variables and
5493 functions.  If there is no macro specifically defined to check for a
5494 symbol you need, then you can use the general macros (@pxref{Generic
5495 Declarations}) or, for more complex tests, you may use
5496 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
5498 @menu
5499 * Particular Declarations::     Macros to check for certain declarations
5500 * Generic Declarations::        How to find other declarations
5501 @end menu
5503 @node Particular Declarations
5504 @subsection Particular Declaration Checks
5506 There are no specific macros for declarations.
5508 @node Generic Declarations
5509 @subsection Generic Declaration Checks
5511 These macros are used to find declarations not covered by the ``particular''
5512 test macros.
5514 @defmac AC_CHECK_DECL (@var{symbol}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5515 @acindex{CHECK_DECL}
5516 If @var{symbol} (a function or a variable) is not declared in
5517 @var{includes} and a declaration is needed, run the shell commands
5518 @var{action-if-not-found}, otherwise @var{action-if-found}.  If no
5519 @var{includes} are specified, the default includes are used
5520 (@pxref{Default Includes}).
5522 This macro actually tests whether it is valid to use @var{symbol} as an
5523 r-value, not if it is really declared, because it is much safer to avoid
5524 introducing extra declarations when they are not needed.
5525 @end defmac
5527 @defmac AC_CHECK_DECLS (@var{symbols}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5528 @acindex{CHECK_DECLS}
5529 @cvindex HAVE_DECL_@var{symbol}
5530 For each of the @var{symbols} (@emph{comma}-separated list), define
5531 @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
5532 @var{symbol} is declared, otherwise to @samp{0}.  If
5533 @var{action-if-not-found} is given, it is additional shell code to
5534 execute when one of the function declarations is needed, otherwise
5535 @var{action-if-found} is executed.
5537 This macro uses an m4 list as first argument:
5538 @example
5539 AC_CHECK_DECLS([strdup])
5540 AC_CHECK_DECLS([strlen])
5541 AC_CHECK_DECLS([malloc, realloc, calloc, free])
5542 @end example
5544 Unlike the other @samp{AC_CHECK_*S} macros, when a @var{symbol} is not
5545 declared, @code{HAVE_DECL_@var{symbol}} is defined to @samp{0} instead
5546 of leaving @code{HAVE_DECL_@var{symbol}} undeclared.  When you are
5547 @emph{sure} that the check was performed, use
5548 @code{HAVE_DECL_@var{symbol}} just like any other result of Autoconf:
5550 @example
5551 #if !HAVE_DECL_SYMBOL
5552 extern char *symbol;
5553 #endif
5554 @end example
5556 @noindent
5557 If the test may have not been performed, however, because it is safer
5558 @emph{not} to declare a symbol than to use a declaration that conflicts
5559 with the system's one, you should use:
5561 @example
5562 #if defined HAVE_DECL_MALLOC && !HAVE_DECL_MALLOC
5563 void *malloc (size_t *s);
5564 #endif
5565 @end example
5567 @noindent
5568 You fall into the second category only in extreme situations: either
5569 your files may be used without being configured, or they are used during
5570 the configuration.  In most cases the traditional approach is enough.
5571 @end defmac
5573 @defmac AC_CHECK_DECLS_ONCE (@var{symbols})
5574 @acindex{CHECK_DECLS_ONCE}
5575 @cvindex HAVE_DECL_@var{symbol}
5576 For each of the @var{symbols} (@emph{comma}-separated list), define
5577 @code{HAVE_DECL_@var{symbol}} (in all capitals) to @samp{1} if
5578 @var{symbol} is declared in the default include files, otherwise to
5579 @samp{0}.  This is a once-only variant of @code{AC_CHECK_DECLS}.  It
5580 generates the checking code at most once, so that @command{configure} is
5581 smaller and faster; but the checks cannot be conditionalized and are
5582 always done once, early during the @command{configure} run.
5583 @end defmac
5586 @node Structures
5587 @section Structures
5588 @cindex Structure, checking
5590 The following macros check for the presence of certain members in C
5591 structures.  If there is no macro specifically defined to check for a
5592 member you need, then you can use the general structure-member macros
5593 (@pxref{Generic Structures}) or, for more complex tests, you may use
5594 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}).
5596 @menu
5597 * Particular Structures::       Macros to check for certain structure members
5598 * Generic Structures::          How to find other structure members
5599 @end menu
5601 @node Particular Structures
5602 @subsection Particular Structure Checks
5604 The following macros check for certain structures or structure members.
5606 @defmac AC_STRUCT_DIRENT_D_INO
5607 @acindex{STRUCT_DIRENT_D_INO}
5608 @cvindex HAVE_STRUCT_DIRENT_D_INO
5609 Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
5610 Headers}).  Then, if @code{struct dirent} contains a @code{d_ino}
5611 member, define @code{HAVE_STRUCT_DIRENT_D_INO}.
5613 @code{HAVE_STRUCT_DIRENT_D_INO} indicates only the presence of
5614 @code{d_ino}, not whether its contents are always reliable.
5615 Traditionally, a zero @code{d_ino} indicated a deleted directory entry,
5616 though current systems hide this detail from the user and never return
5617 zero @code{d_ino} values.
5618 Many current systems report an incorrect @code{d_ino} for a directory
5619 entry that is a mount point.
5620 @end defmac
5622 @defmac AC_STRUCT_DIRENT_D_TYPE
5623 @acindex{STRUCT_DIRENT_D_TYPE}
5624 @cvindex HAVE_STRUCT_DIRENT_D_TYPE
5625 Perform all the actions of @code{AC_HEADER_DIRENT} (@pxref{Particular
5626 Headers}).  Then, if @code{struct dirent} contains a @code{d_type}
5627 member, define @code{HAVE_STRUCT_DIRENT_D_TYPE}.
5628 @end defmac
5630 @defmac AC_STRUCT_ST_BLKSIZE
5631 @acindex{STRUCT_ST_BLKSIZE}
5632 @cvindex HAVE_STRUCT_STAT_ST_BLKSIZE
5633 @cvindex HAVE_ST_BLKSIZE
5634 If @code{struct stat} contains an @code{st_blksize} member, define
5635 @code{HAVE_STRUCT_STAT_ST_BLKSIZE}.  The former name,
5636 @code{HAVE_ST_BLKSIZE} is to be avoided, as its support will cease in
5637 the future.  This macro is obsoleted, and should be replaced by
5639 @example
5640 AC_CHECK_MEMBERS([struct stat.st_blksize])
5641 @end example
5642 @end defmac
5644 @defmac AC_STRUCT_ST_BLOCKS
5645 @acindex{STRUCT_ST_BLOCKS}
5646 @cvindex HAVE_STRUCT_STAT_ST_BLOCKS
5647 @cvindex HAVE_ST_BLOCKS
5648 @ovindex LIBOBJS
5649 If @code{struct stat} contains an @code{st_blocks} member, define
5650 @code{HAVE_STRUCT_STAT_ST_BLOCKS}.  Otherwise, require an
5651 @code{AC_LIBOBJ} replacement of @samp{fileblocks}.  The former name,
5652 @code{HAVE_ST_BLOCKS} is to be avoided, as its support will cease in the
5653 future.
5654 @end defmac
5656 @defmac AC_STRUCT_ST_RDEV
5657 @acindex{STRUCT_ST_RDEV}
5658 @cvindex HAVE_ST_RDEV
5659 @cvindex HAVE_STRUCT_STAT_ST_RDEV
5660 If @code{struct stat} contains an @code{st_rdev} member, define
5661 @code{HAVE_STRUCT_STAT_ST_RDEV}.  The former name for this macro,
5662 @code{HAVE_ST_RDEV}, is to be avoided as it will cease to be supported
5663 in the future.  Actually, even the new macro is obsolete and should be
5664 replaced by:
5665 @example
5666 AC_CHECK_MEMBERS([struct stat.st_rdev])
5667 @end example
5668 @end defmac
5670 @defmac AC_STRUCT_TM
5671 @acindex{STRUCT_TM}
5672 @cvindex TM_IN_SYS_TIME
5673 @hdrindex{time.h}
5674 @hdrindex{sys/time.h}
5675 If @file{time.h} does not define @code{struct tm}, define
5676 @code{TM_IN_SYS_TIME}, which means that including @file{sys/time.h}
5677 had better define @code{struct tm}.
5679 This macro is obsolescent, as @file{time.h} defines @code{struct tm} in
5680 current systems.  New programs need not use this macro.
5681 @end defmac
5683 @defmac AC_STRUCT_TIMEZONE
5684 @acindex{STRUCT_TIMEZONE}
5685 @cvindex HAVE_TM_ZONE
5686 @cvindex HAVE_TZNAME
5687 Figure out how to get the current timezone.  If @code{struct tm} has a
5688 @code{tm_zone} member, define @code{HAVE_STRUCT_TM_TM_ZONE} (and the
5689 obsoleted @code{HAVE_TM_ZONE}).  Otherwise, if the external array
5690 @code{tzname} is found, define @code{HAVE_TZNAME}; if it is declared,
5691 define @code{HAVE_DECL_TZNAME}.
5692 @end defmac
5694 @node Generic Structures
5695 @subsection Generic Structure Checks
5697 These macros are used to find structure members not covered by the
5698 ``particular'' test macros.
5700 @defmac AC_CHECK_MEMBER (@var{aggregate}.@var{member}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5701 @acindex{CHECK_MEMBER}
5702 Check whether @var{member} is a member of the aggregate @var{aggregate}.
5703 If no @var{includes} are specified, the default includes are used
5704 (@pxref{Default Includes}).
5706 @example
5707 AC_CHECK_MEMBER([struct passwd.pw_gecos], [],
5708                 [AC_MSG_ERROR([We need `passwd.pw_gecos'!])],
5709                 [#include <pwd.h>])
5710 @end example
5712 You can use this macro for submembers:
5714 @example
5715 AC_CHECK_MEMBER(struct top.middle.bot)
5716 @end example
5717 @end defmac
5719 @defmac AC_CHECK_MEMBERS (@var{members}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5720 @acindex{CHECK_MEMBERS}
5721 Check for the existence of each @samp{@var{aggregate}.@var{member}} of
5722 @var{members} using the previous macro.  When @var{member} belongs to
5723 @var{aggregate}, define @code{HAVE_@var{aggregate}_@var{member}} (in all
5724 capitals, with spaces and dots replaced by underscores).  If
5725 @var{action-if-found} is given, it is executed for each of the found
5726 members.  If @var{action-if-not-found} is given, it is executed for each
5727 of the members that could not be found.
5729 This macro uses m4 lists:
5730 @example
5731 AC_CHECK_MEMBERS([struct stat.st_rdev, struct stat.st_blksize])
5732 @end example
5733 @end defmac
5736 @node Types
5737 @section Types
5738 @cindex Types
5739 @cindex C types
5741 The following macros check for C types, either builtin or typedefs.  If
5742 there is no macro specifically defined to check for a type you need, and
5743 you don't need to check for any special properties of it, then you can
5744 use a general type-check macro.
5746 @menu
5747 * Particular Types::            Special handling to find certain types
5748 * Generic Types::               How to find other types
5749 @end menu
5751 @node Particular Types
5752 @subsection Particular Type Checks
5754 @hdrindex{sys/types.h}
5755 @hdrindex{stdlib.h}
5756 @hdrindex{stdint.h}
5757 @hdrindex{inttypes.h}
5758 These macros check for particular C types in @file{sys/types.h},
5759 @file{stdlib.h}, @file{stdint.h}, @file{inttypes.h} and others, if they
5760 exist.
5762 The Gnulib @code{stdint} module is an alternate way to define many of
5763 these symbols; it is useful if you prefer your code to assume a
5764 C99-or-better environment.  @xref{Gnulib}.
5766 @defmac AC_TYPE_GETGROUPS
5767 @acindex{TYPE_GETGROUPS}
5768 @cvindex GETGROUPS_T
5769 Define @code{GETGROUPS_T} to be whichever of @code{gid_t} or @code{int}
5770 is the base type of the array argument to @code{getgroups}.
5771 @end defmac
5773 @defmac AC_TYPE_INT8_T
5774 @acindex{TYPE_INT8_T}
5775 @cvindex HAVE_INT8_T
5776 @cvindex int8_t
5777 If @file{stdint.h} or @file{inttypes.h} defines the type @code{int8_t},
5778 define @code{HAVE_INT8_T}.  Otherwise, define @code{int8_t} to a signed
5779 integer type that is exactly 8 bits wide and that uses two's complement
5780 representation, if such a type exists.
5781 @end defmac
5783 @defmac AC_TYPE_INT16_T
5784 @acindex{TYPE_INT16_T}
5785 @cvindex HAVE_INT16_T
5786 @cvindex int16_t
5787 This is like @code{AC_TYPE_INT8_T}, except for 16-bit integers.
5788 @end defmac
5790 @defmac AC_TYPE_INT32_T
5791 @acindex{TYPE_INT32_T}
5792 @cvindex HAVE_INT32_T
5793 @cvindex int32_t
5794 This is like @code{AC_TYPE_INT8_T}, except for 32-bit integers.
5795 @end defmac
5797 @defmac AC_TYPE_INT64_T
5798 @acindex{TYPE_INT64_T}
5799 @cvindex HAVE_INT64_T
5800 @cvindex int64_t
5801 This is like @code{AC_TYPE_INT8_T}, except for 64-bit integers.
5802 @end defmac
5804 @defmac AC_TYPE_INTMAX_T
5805 @acindex{TYPE_INTMAX_T}
5806 @cvindex HAVE_INTMAX_T
5807 @cvindex intmax_t
5808 If @file{stdint.h} or @file{inttypes.h} defines the type @code{intmax_t},
5809 define @code{HAVE_INTMAX_T}.  Otherwise, define @code{intmax_t} to the
5810 widest signed integer type.
5811 @end defmac
5813 @defmac AC_TYPE_INTPTR_T
5814 @acindex{TYPE_INTPTR_T}
5815 @cvindex HAVE_INTPTR_T
5816 @cvindex intptr_t
5817 If @file{stdint.h} or @file{inttypes.h} defines the type @code{intptr_t},
5818 define @code{HAVE_INTPTR_T}.  Otherwise, define @code{intptr_t} to a
5819 signed integer type wide enough to hold a pointer, if such a type
5820 exists.
5821 @end defmac
5823 @defmac AC_TYPE_LONG_DOUBLE
5824 @acindex{TYPE_LONG_DOUBLE}
5825 @cvindex HAVE_LONG_DOUBLE
5826 If the C compiler supports a working @code{long double} type, define
5827 @code{HAVE_LONG_DOUBLE}.  The @code{long double} type might have the
5828 same range and precision as @code{double}.
5829 @end defmac
5831 @defmac AC_TYPE_LONG_DOUBLE_WIDER
5832 @acindex{TYPE_LONG_DOUBLE_WIDER}
5833 @cvindex HAVE_LONG_DOUBLE_WIDER
5834 If the C compiler supports a working @code{long double} type with more
5835 range or precision than the @code{double} type, define
5836 @code{HAVE_LONG_DOUBLE_WIDER}.
5837 @end defmac
5839 @defmac AC_TYPE_LONG_LONG_INT
5840 @acindex{TYPE_LONG_LONG_INT}
5841 @cvindex HAVE_LONG_LONG_INT
5842 If the C compiler supports a working @code{long long int} type, define
5843 @code{HAVE_LONG_LONG_INT}.
5844 @end defmac
5846 @defmac AC_TYPE_MBSTATE_T
5847 @acindex{TYPE_MBSTATE_T}
5848 @cvindex mbstate_t
5849 @hdrindex{wchar.h}
5850 Define @code{HAVE_MBSTATE_T} if @code{<wchar.h>} declares the
5851 @code{mbstate_t} type.  Also, define @code{mbstate_t} to be a type if
5852 @code{<wchar.h>} does not declare it.
5853 @end defmac
5855 @defmac AC_TYPE_MODE_T
5856 @acindex{TYPE_MODE_T}
5857 @cvindex mode_t
5858 Define @code{mode_t} to a suitable type, if standard headers do not
5859 define it.
5860 @end defmac
5862 @defmac AC_TYPE_OFF_T
5863 @acindex{TYPE_OFF_T}
5864 @cvindex off_t
5865 Define @code{off_t} to a suitable type, if standard headers do not
5866 define it.
5867 @end defmac
5869 @defmac AC_TYPE_PID_T
5870 @acindex{TYPE_PID_T}
5871 @cvindex pid_t
5872 Define @code{pid_t} to a suitable type, if standard headers do not
5873 define it.
5874 @end defmac
5876 @defmac AC_TYPE_SIGNAL
5877 @acindex{TYPE_SIGNAL}
5878 @cvindex RETSIGTYPE
5879 @hdrindex{signal.h}
5880 If @file{signal.h} declares @code{signal} as returning a pointer to a
5881 function returning @code{void}, define @code{RETSIGTYPE} to be
5882 @code{void}; otherwise, define it to be @code{int}.
5884 Define signal handlers as returning type @code{RETSIGTYPE}:
5886 @example
5887 @group
5888 RETSIGTYPE
5889 hup_handler ()
5891 @dots{}
5893 @end group
5894 @end example
5895 @end defmac
5897 @defmac AC_TYPE_SIZE_T
5898 @acindex{TYPE_SIZE_T}
5899 @cvindex size_t
5900 Define @code{size_t} to a suitable type, if standard headers do not
5901 define it.
5902 @end defmac
5904 @defmac AC_TYPE_SSIZE_T
5905 @acindex{TYPE_SSIZE_T}
5906 @cvindex ssize_t
5907 Define @code{ssize_t} to a suitable type, if standard headers do not
5908 define it.
5909 @end defmac
5911 @defmac AC_TYPE_UID_T
5912 @acindex{TYPE_UID_T}
5913 @cvindex uid_t
5914 @cvindex gid_t
5915 Define @code{uid_t} and @code{gid_t} to suitable types, if standard
5916 headers do not define them.
5917 @end defmac
5919 @defmac AC_TYPE_UINT8_T
5920 @acindex{TYPE_UINT8_T}
5921 @cvindex HAVE_UINT8_T
5922 @cvindex uint8_t
5923 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uint8_t},
5924 define @code{HAVE_UINT8_T}.  Otherwise, define @code{uint8_t} to an
5925 unsigned integer type that is exactly 8 bits wide, if such a type
5926 exists.
5927 @end defmac
5929 @defmac AC_TYPE_UINT16_T
5930 @acindex{TYPE_UINT16_T}
5931 @cvindex HAVE_UINT16_T
5932 @cvindex uint16_t
5933 This is like @code{AC_TYPE_UINT8_T}, except for 16-bit unsigned integers.
5934 @end defmac
5936 @defmac AC_TYPE_UINT32_T
5937 @acindex{TYPE_UINT32_T}
5938 @cvindex HAVE_UINT32_T
5939 @cvindex uint32_t
5940 This is like @code{AC_TYPE_UINT8_T}, except for 32-bit unsigned integers.
5941 @end defmac
5943 @defmac AC_TYPE_UINT64_T
5944 @acindex{TYPE_UINT64_T}
5945 @cvindex HAVE_UINT64_T
5946 @cvindex uint64_t
5947 This is like @code{AC_TYPE_UINT8_T}, except for 64-bit unsigned integers.
5948 @end defmac
5950 @defmac AC_TYPE_UINTMAX_T
5951 @acindex{TYPE_UINTMAX_T}
5952 @cvindex HAVE_UINTMAX_T
5953 @cvindex uintmax_t
5954 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintmax_t},
5955 define @code{HAVE_UINTMAX_T}.  Otherwise, define @code{uintmax_t} to the
5956 widest unsigned integer type.
5957 @end defmac
5959 @defmac AC_TYPE_UINTPTR_T
5960 @acindex{TYPE_UINTPTR_T}
5961 @cvindex HAVE_UINTPTR_T
5962 @cvindex uintptr_t
5963 If @file{stdint.h} or @file{inttypes.h} defines the type @code{uintptr_t},
5964 define @code{HAVE_UINTPTR_T}.  Otherwise, define @code{uintptr_t} to an
5965 unsigned integer type wide enough to hold a pointer, if such a type
5966 exists.
5967 @end defmac
5969 @defmac AC_TYPE_UNSIGNED_LONG_LONG_INT
5970 @acindex{TYPE_UNSIGNED_LONG_LONG_INT}
5971 @cvindex HAVE_UNSIGNED_LONG_LONG_INT
5972 If the C compiler supports a working @code{unsigned long long int} type,
5973 define @code{HAVE_UNSIGNED_LONG_LONG_INT}.
5974 @end defmac
5976 @node Generic Types
5977 @subsection Generic Type Checks
5979 These macros are used to check for types not covered by the ``particular''
5980 test macros.
5982 @defmac AC_CHECK_TYPE (@var{type}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5983 @acindex{CHECK_TYPE}
5984 Check whether @var{type} is defined.  It may be a compiler builtin type
5985 or defined by the @var{includes} (@pxref{Default Includes}).
5986 @end defmac
5989 @defmac AC_CHECK_TYPES (@var{types}, @ovar{action-if-found}, @ovar{action-if-not-found}, @dvar{includes, default-includes})
5990 @acindex{CHECK_TYPES}
5991 For each @var{type} of the @var{types} that is defined, define
5992 @code{HAVE_@var{type}} (in all capitals).  If no @var{includes} are
5993 specified, the default includes are used (@pxref{Default Includes}).  If
5994 @var{action-if-found} is given, it is additional shell code to execute
5995 when one of the types is found.  If @var{action-if-not-found} is given,
5996 it is executed when one of the types is not found.
5998 This macro uses m4 lists:
5999 @example
6000 AC_CHECK_TYPES([ptrdiff_t])
6001 AC_CHECK_TYPES([unsigned long long int, uintmax_t])
6002 @end example
6004 @end defmac
6006 Autoconf, up to 2.13, used to provide to another version of
6007 @code{AC_CHECK_TYPE}, broken by design.  In order to keep backward
6008 compatibility, a simple heuristics, quite safe but not totally, is
6009 implemented.  In case of doubt, read the documentation of the former
6010 @code{AC_CHECK_TYPE}, see @ref{Obsolete Macros}.
6013 @node Compilers and Preprocessors
6014 @section Compilers and Preprocessors
6015 @cindex Compilers
6016 @cindex Preprocessors
6018 @ovindex EXEEXT
6019 All the tests for compilers (@code{AC_PROG_CC}, @code{AC_PROG_CXX},
6020 @code{AC_PROG_F77}) define the output variable @code{EXEEXT} based on
6021 the output of the compiler, typically to the empty string if
6022 Posix and @samp{.exe} if a @acronym{DOS} variant.
6024 @ovindex OBJEXT
6025 They also define the output variable @code{OBJEXT} based on the
6026 output of the compiler, after @file{.c} files have been excluded, typically
6027 to @samp{o} if Posix, @samp{obj} if a @acronym{DOS} variant.
6029 If the compiler being used does not produce executables, the tests fail.  If
6030 the executables can't be run, and cross-compilation is not enabled, they
6031 fail too.  @xref{Manual Configuration}, for more on support for cross
6032 compiling.
6034 @menu
6035 * Specific Compiler Characteristics::  Some portability issues
6036 * Generic Compiler Characteristics::  Language independent tests and features
6037 * C Compiler::                  Checking its characteristics
6038 * C++ Compiler::                Likewise
6039 * Objective C Compiler::        Likewise
6040 * Erlang Compiler and Interpreter::  Likewise
6041 * Fortran Compiler::            Likewise
6042 @end menu
6044 @node Specific Compiler Characteristics
6045 @subsection Specific Compiler Characteristics
6047 Some compilers exhibit different behaviors.
6049 @table @asis
6050 @item Static/Dynamic Expressions
6051 Autoconf relies on a trick to extract one bit of information from the C
6052 compiler: using negative array sizes.  For instance the following
6053 excerpt of a C source demonstrates how to test whether @samp{int} objects are 4
6054 bytes wide:
6056 @example
6058 main (void)
6060   static int test_array [sizeof (int) == 4 ? 1 : -1];
6061   test_array [0] = 0;
6062   return 0;
6064 @end example
6066 @noindent
6067 To our knowledge, there is a single compiler that does not support this
6068 trick: the HP C compilers (the real one, not only the ``bundled'') on
6069 HP-UX 11.00.  They incorrectly reject the above program with the diagnostic
6070 ``Variable-length arrays cannot have static storage.''
6071 This bug comes from HP compilers' mishandling of @code{sizeof (int)},
6072 not from the @code{? 1 : -1}, and
6073 Autoconf works around this problem by casting @code{sizeof (int)} to
6074 @code{long int} before comparing it.
6075 @end table
6077 @node Generic Compiler Characteristics
6078 @subsection Generic Compiler Characteristics
6080 @defmac AC_CHECK_SIZEOF (@var{type}, @ovar{unused}, @dvar{includes, default-includes})
6081 @acindex{CHECK_SIZEOF}
6082 Define @code{SIZEOF_@var{type}} (@pxref{Standard Symbols}) to be the
6083 size in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
6084 of 0.  If no @var{includes} are specified, the default includes are used
6085 (@pxref{Default Includes}).  If you provide @var{include}, be sure to
6086 include @file{stdio.h} which is required for this macro to run.
6088 This macro now works even when cross-compiling.  The @var{unused}
6089 argument was used when cross-compiling.
6091 For example, the call
6093 @example
6094 AC_CHECK_SIZEOF([int *])
6095 @end example
6097 @noindent
6098 defines @code{SIZEOF_INT_P} to be 8 on DEC Alpha AXP systems.
6099 @end defmac
6101 @defmac AC_CHECK_ALIGNOF (@var{type}, @dvar{includes, default-includes})
6102 @acindex{CHECK_ALIGNOF}
6103 Define @code{ALIGNOF_@var{type}} (@pxref{Standard Symbols}) to be the
6104 alignment in bytes of @var{type}.  If @samp{type} is unknown, it gets a size
6105 of 0.  If no @var{includes} are specified, the default includes are used
6106 (@pxref{Default Includes}).  If you provide @var{include}, be sure to
6107 include @file{stddef.h} and @file{stdio.h} which are required for this
6108 macro to work correctly.
6109 @end defmac
6111 @defmac AC_LANG_WERROR
6112 @acindex{LANG_WERROR}
6113 Normally Autoconf ignores warnings generated by the compiler, linker, and
6114 preprocessor.  If this macro is used, warnings count as fatal
6115 errors for the current language.  This macro is useful when the
6116 results of configuration are used where warnings are unacceptable; for
6117 instance, if parts of a program are built with the GCC @option{-Werror}
6118 option.  If the whole program is built using @option{-Werror} it is
6119 often simpler to put @option{-Werror} in the compiler flags (@code{CFLAGS},
6120 etc.).
6121 @end defmac
6123 @node C Compiler
6124 @subsection C Compiler Characteristics
6126 The following macros provide ways to find and exercise a C Compiler.
6127 There are a few constructs that ought to be avoided, but do not deserve
6128 being checked for, since they can easily be worked around.
6130 @table @asis
6131 @item Don't use lines containing solitary backslashes
6132 They tickle a bug in the HP-UX C compiler (checked on HP-UX 10.20,
6133 11.00, and 11i).  When given the following source:
6135 @example
6136 #ifdef __STDC__
6138 * A comment with backslash-newlines in it.  %@{ %@} *\
6141 char str[] = "\\
6142 " A string with backslash-newlines in it %@{ %@} \\
6144 char apostrophe = '\\
6148 #endif
6149 @end example
6151 @noindent
6152 the compiler incorrectly fails with the diagnostics ``Non-terminating
6153 comment at end of file'' and ``Missing @samp{#endif} at end of file.''
6154 Removing the lines with solitary backslashes solves the problem.
6156 @item Don't compile several files at once if output matters to you
6157 Some compilers, such as the HP's, reports the name of the file it is
6158 compiling @emph{when} they are several.  For instance:
6160 @example
6161 $ @kbd{cc a.c b.c}
6162 a.c:
6163 b.c:
6164 @end example
6166 @noindent
6167 This can cause problems if you observe the output of the compiler to
6168 detect failures.  Invoking @samp{cc -c a.c && cc -c b.c && cc -o c a.o
6169 b.o} solves the issue.
6171 @item Don't rely on @code{#error} failing
6172 The @sc{irix} C compiler does not fail when #error is preprocessed; it
6173 simply emits a diagnostic and continues, exiting successfully.  So,
6174 instead of an error directive like @code{#error "Unsupported word size"}
6175 it is more portable to use an invalid directive like @code{#Unsupported
6176 word size} in Autoconf tests.  In ordinary source code, @code{#error} is
6177 OK, since installers with inadequate compilers like @sc{irix} can simply
6178 examine these compilers' diagnostic output.
6180 @item Don't rely on correct @code{#line} support
6181 On Solaris, @command{c89} (at least Sun C 5.3 through 5.8)
6182 diagnoses @code{#line} directives whose line
6183 numbers are greater than 32767.  Nothing in Posix
6184 makes this invalid.  That is why Autoconf stopped issuing
6185 @code{#line} directives.
6186 @end table
6188 @defmac AC_PROG_CC (@ovar{compiler-search-list})
6189 @acindex{PROG_CC}
6190 @ovindex CC
6191 @ovindex CFLAGS
6192 Determine a C compiler to use.  If @code{CC} is not already set in the
6193 environment, check for @code{gcc} and @code{cc}, then for other C
6194 compilers.  Set output variable @code{CC} to the name of the compiler
6195 found.
6197 This macro may, however, be invoked with an optional first argument
6198 which, if specified, must be a blank-separated list of C compilers to
6199 search for.  This just gives the user an opportunity to specify an
6200 alternative search list for the C compiler.  For example, if you didn't
6201 like the default order, then you could invoke @code{AC_PROG_CC} like
6202 this:
6204 @example
6205 AC_PROG_CC([gcc cl cc])
6206 @end example
6208 If the C compiler does not handle function prototypes correctly by
6209 default, try to add an option to output variable @code{CC} to make it
6210 so.  This macro tries various options that select standard-conformance
6211 modes on various systems.
6213 After calling this macro you can check whether the C compiler has been
6214 set to accept @acronym{ANSI} C89 (@acronym{ISO} C90); if not, the shell
6215 variable
6216 @code{ac_cv_prog_cc_c89} is set to @samp{no}.  See also
6217 @code{AC_C_PROTOTYPES} below.
6219 If using the @acronym{GNU} C compiler, set shell variable @code{GCC} to
6220 @samp{yes}.  If output variable @code{CFLAGS} was not already set, set
6221 it to @option{-g -O2} for the @acronym{GNU} C compiler (@option{-O2} on systems
6222 where GCC does not accept @option{-g}), or @option{-g} for other compilers.
6223 @end defmac
6225 @defmac AC_PROG_CC_C_O
6226 @acindex{PROG_CC_C_O}
6227 @cvindex NO_MINUS_C_MINUS_O
6228 If the C compiler does not accept the @option{-c} and @option{-o} options
6229 simultaneously, define @code{NO_MINUS_C_MINUS_O}.  This macro actually
6230 tests both the compiler found by @code{AC_PROG_CC}, and, if different,
6231 the first @code{cc} in the path.  The test fails if one fails.  This
6232 macro was created for @acronym{GNU} Make to choose the default C compilation
6233 rule.
6234 @end defmac
6237 @defmac AC_PROG_CPP
6238 @acindex{PROG_CPP}
6239 @ovindex CPP
6240 Set output variable @code{CPP} to a command that runs the
6241 C preprocessor.  If @samp{$CC -E} doesn't work, @file{/lib/cpp} is used.
6242 It is only portable to run @code{CPP} on files with a @file{.c}
6243 extension.
6245 Some preprocessors don't indicate missing include files by the error
6246 status.  For such preprocessors an internal variable is set that causes
6247 other macros to check the standard error from the preprocessor and
6248 consider the test failed if any warnings have been reported.
6249 For most preprocessors, though, warnings do not cause include-file
6250 tests to fail unless @code{AC_PROG_CPP_WERROR} is also specified.
6251 @end defmac
6253 @defmac AC_PROG_CPP_WERROR
6254 @acindex{PROG_CPP_WERROR}
6255 @ovindex CPP
6256 This acts like @code{AC_PROG_CPP}, except it treats warnings from the
6257 preprocessor as errors even if the preprocessor exit status indicates
6258 success.  This is useful for avoiding headers that generate mandatory
6259 warnings, such as deprecation notices.
6260 @end defmac
6263 The following macros check for C compiler or machine architecture
6264 features.  To check for characteristics not listed here, use
6265 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
6266 @code{AC_RUN_IFELSE} (@pxref{Runtime}).
6268 @defmac AC_PROG_CC_STDC
6269 @acindex{PROG_CC_STDC}
6270 If the C compiler cannot compile @acronym{ISO} Standard C (currently
6271 C99), try to add an option to output variable @code{CC} to make it work.
6272 If the compiler does not support C99, fall back to supporting
6273 @acronym{ANSI} C89 (@acronym{ISO} C90).
6275 After calling this macro you can check whether the C compiler has been
6276 set to accept Standard C; if not, the shell variable
6277 @code{ac_cv_prog_cc_stdc} is set to @samp{no}.
6278 @end defmac
6280 @defmac AC_PROG_CC_C89
6281 @acindex{PROG_CC_C89}
6282 If the C compiler is not in @acronym{ANSI} C89 (@acronym{ISO} C90) mode by
6283 default, try to add an option to output variable @code{CC} to make it
6284 so.  This macro tries various options that select @acronym{ANSI} C89 on
6285 some system or another.  It considers the compiler to be in
6286 @acronym{ANSI} C89 mode if it handles function prototypes correctly.
6288 After calling this macro you can check whether the C compiler has been
6289 set to accept @acronym{ANSI} C89; if not, the shell variable
6290 @code{ac_cv_prog_cc_c89} is set to @samp{no}.
6292 This macro is called automatically by @code{AC_PROG_CC}.
6293 @end defmac
6295 @defmac AC_PROG_CC_C99
6296 @acindex{PROG_CC_C99}
6297 If the C compiler is not in C99 mode by default, try to add an
6298 option to output variable @code{CC} to make it so.  This macro tries
6299 various options that select C99 on some system or another.  It
6300 considers the compiler to be in C99 mode if it handles @code{_Bool},
6301 flexible arrays, @code{inline}, @code{long long int}, mixed code and
6302 declarations, named initialization of structs, @code{restrict}, varargs
6303 macros, variable declarations in @code{for} loops and variable length
6304 arrays.
6306 After calling this macro you can check whether the C compiler has been
6307 set to accept C99; if not, the shell variable
6308 @code{ac_cv_prog_cc_c99} is set to @samp{no}.
6309 @end defmac
6311 @defmac AC_C_BACKSLASH_A
6312 @acindex{HAVE_C_BACKSLASH_A}
6313 Define @samp{HAVE_C_BACKSLASH_A} to 1 if the C compiler understands
6314 @samp{\a}.
6316 This macro is obsolescent, as current C compilers understand @samp{\a}.
6317 New programs need not use this macro.
6318 @end defmac
6320 @defmac AC_C_BIGENDIAN (@ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-unknown})
6321 @acindex{C_BIGENDIAN}
6322 @cvindex WORDS_BIGENDIAN
6323 @cindex Endianness
6324 If words are stored with the most significant byte first (like Motorola
6325 and SPARC CPUs), execute @var{action-if-true}.  If words are stored with
6326 the least significant byte first (like Intel and VAX CPUs), execute
6327 @var{action-if-false}.
6329 This macro runs a test-case if endianness cannot be determined from the
6330 system header files.  When cross-compiling, the test-case is not run but
6331 grep'ed for some magic values.  @var{action-if-unknown} is executed if
6332 the latter case fails to determine the byte sex of the host system.
6334 The default for @var{action-if-true} is to define
6335 @samp{WORDS_BIGENDIAN}.  The default for @var{action-if-false} is to do
6336 nothing.  And finally, the default for @var{action-if-unknown} is to
6337 abort configure and tell the installer which variable he should preset
6338 to bypass this test.
6339 @end defmac
6341 @defmac AC_C_CONST
6342 @acindex{C_CONST}
6343 @cvindex const
6344 If the C compiler does not fully support the @code{const} keyword,
6345 define @code{const} to be empty.  Some C compilers that do
6346 not define @code{__STDC__} do support @code{const}; some compilers that
6347 define @code{__STDC__} do not completely support @code{const}.  Programs
6348 can simply use @code{const} as if every C compiler supported it; for
6349 those that don't, the makefile or configuration header file
6350 defines it as empty.
6352 Occasionally installers use a C++ compiler to compile C code, typically
6353 because they lack a C compiler.  This causes problems with @code{const},
6354 because C and C++ treat @code{const} differently.  For example:
6356 @example
6357 const int foo;
6358 @end example
6360 @noindent
6361 is valid in C but not in C++.  These differences unfortunately cannot be
6362 papered over by defining @code{const} to be empty.
6364 If @command{autoconf} detects this situation, it leaves @code{const} alone,
6365 as this generally yields better results in practice.  However, using a
6366 C++ compiler to compile C code is not recommended or supported, and
6367 installers who run into trouble in this area should get a C compiler
6368 like GCC to compile their C code.
6370 This macro is obsolescent, as current C compilers support @code{const}.
6371 New programs need not use this macro.
6372 @end defmac
6374 @defmac AC_C_RESTRICT
6375 @acindex{C_RESTRICT}
6376 @cvindex restrict
6377 If the C compiler recognizes the @code{restrict} keyword, don't do anything.
6378 If it recognizes only a variant spelling (@code{__restrict},
6379 @code{__restrict__}, or @code{_Restrict}), then define
6380 @code{restrict} to that.
6381 Otherwise, define @code{restrict} to be empty.
6382 Thus, programs may simply use @code{restrict} as if every C compiler
6383 supported it; for those that do not, the makefile
6384 or configuration header defines it away.
6386 Although support in C++ for the @code{restrict} keyword is not
6387 required, several C++ compilers do accept the keyword.
6388 This macro works for them, too.
6389 @end defmac
6391 @defmac AC_C_VOLATILE
6392 @acindex{C_VOLATILE}
6393 @cvindex volatile
6394 If the C compiler does not understand the keyword @code{volatile},
6395 define @code{volatile} to be empty.  Programs can simply use
6396 @code{volatile} as if every C compiler supported it; for those that do
6397 not, the makefile or configuration header defines it as
6398 empty.
6400 If the correctness of your program depends on the semantics of
6401 @code{volatile}, simply defining it to be empty does, in a sense, break
6402 your code.  However, given that the compiler does not support
6403 @code{volatile}, you are at its mercy anyway.  At least your
6404 program compiles, when it wouldn't before.
6406 In general, the @code{volatile} keyword is a standard C feature, so
6407 you might expect that @code{volatile} is available only when
6408 @code{__STDC__} is defined.  However, Ultrix 4.3's native compiler does
6409 support volatile, but does not define @code{__STDC__}.
6411 This macro is obsolescent, as current C compilers support @code{volatile}.
6412 New programs need not use this macro.
6413 @end defmac
6415 @defmac AC_C_INLINE
6416 @acindex{C_INLINE}
6417 @cvindex inline
6418 If the C compiler supports the keyword @code{inline}, do nothing.
6419 Otherwise define @code{inline} to @code{__inline__} or @code{__inline}
6420 if it accepts one of those, otherwise define @code{inline} to be empty.
6421 @end defmac
6423 @defmac AC_C_CHAR_UNSIGNED
6424 @acindex{C_CHAR_UNSIGNED}
6425 @cvindex __CHAR_UNSIGNED__
6426 If the C type @code{char} is unsigned, define @code{__CHAR_UNSIGNED__},
6427 unless the C compiler predefines it.
6428 @end defmac
6430 @defmac AC_C_STRINGIZE
6431 @acindex{C_STRINGIZE}
6432 @cvindex HAVE_STRINGIZE
6433 If the C preprocessor supports the stringizing operator, define
6434 @code{HAVE_STRINGIZE}.  The stringizing operator is @samp{#} and is
6435 found in macros such as this:
6437 @example
6438 #define x(y) #y
6439 @end example
6441 This macro is obsolescent, as current C compilers support the
6442 stringizing operator.  New programs need not use this macro.
6443 @end defmac
6445 @defmac AC_C_TYPEOF
6446 @acindex{C_TYPEOF}
6447 @cvindex HAVE_TYPEOF
6448 @cvindex typeof
6449 If the C compiler supports GCC's @code{typeof} syntax either directly or
6450 through a different spelling of the keyword (e.g., @code{__typeof__}),
6451 define @code{HAVE_TYPEOF}.  If the support is available only through a
6452 different spelling, define @code{typeof} to that spelling.
6453 @end defmac
6455 @defmac AC_C_PROTOTYPES
6456 @acindex{C_PROTOTYPES}
6457 @cvindex PROTOTYPES
6458 @cvindex __PROTOTYPES
6459 @cvindex PARAMS
6460 If function prototypes are understood by the compiler (as determined by
6461 @code{AC_PROG_CC}), define @code{PROTOTYPES} and @code{__PROTOTYPES}.
6462 Defining @code{__PROTOTYPES} is for the benefit of
6463 header files that cannot use macros that infringe on user name space.
6465 This macro is obsolescent, as current C compilers support prototypes.
6466 New programs need not use this macro.
6467 @end defmac
6469 @defmac AC_PROG_GCC_TRADITIONAL
6470 @acindex{PROG_GCC_TRADITIONAL}
6471 @ovindex CC
6472 Add @option{-traditional} to output variable @code{CC} if using the
6473 @acronym{GNU} C compiler and @code{ioctl} does not work properly without
6474 @option{-traditional}.  That usually happens when the fixed header files
6475 have not been installed on an old system.
6477 This macro is obsolescent, since current versions of the @acronym{GNU} C
6478 compiler fix the header files automatically when installed.
6479 @end defmac
6482 @node C++ Compiler
6483 @subsection C++ Compiler Characteristics
6486 @defmac AC_PROG_CXX (@ovar{compiler-search-list})
6487 @acindex{PROG_CXX}
6488 @ovindex CXX
6489 @ovindex CXXFLAGS
6490 Determine a C++ compiler to use.  Check whether the environment variable
6491 @code{CXX} or @code{CCC} (in that order) is set; if so, then set output
6492 variable @code{CXX} to its value.
6494 Otherwise, if the macro is invoked without an argument, then search for
6495 a C++ compiler under the likely names (first @code{g++} and @code{c++}
6496 then other names).  If none of those checks succeed, then as a last
6497 resort set @code{CXX} to @code{g++}.
6499 This macro may, however, be invoked with an optional first argument
6500 which, if specified, must be a blank-separated list of C++ compilers to
6501 search for.  This just gives the user an opportunity to specify an
6502 alternative search list for the C++ compiler.  For example, if you
6503 didn't like the default order, then you could invoke @code{AC_PROG_CXX}
6504 like this:
6506 @example
6507 AC_PROG_CXX([gcc cl KCC CC cxx cc++ xlC aCC c++ g++])
6508 @end example
6510 If using the @acronym{GNU} C++ compiler, set shell variable @code{GXX} to
6511 @samp{yes}.  If output variable @code{CXXFLAGS} was not already set, set
6512 it to @option{-g -O2} for the @acronym{GNU} C++ compiler (@option{-O2} on
6513 systems where G++ does not accept @option{-g}), or @option{-g} for other
6514 compilers.
6515 @end defmac
6517 @defmac AC_PROG_CXXCPP
6518 @acindex{PROG_CXXCPP}
6519 @ovindex CXXCPP
6520 Set output variable @code{CXXCPP} to a command that runs the C++
6521 preprocessor.  If @samp{$CXX -E} doesn't work, @file{/lib/cpp} is used.
6522 It is portable to run @code{CXXCPP} only on files with a @file{.c},
6523 @file{.C}, @file{.cc}, or @file{.cpp} extension.
6525 Some preprocessors don't indicate missing include files by the error
6526 status.  For such preprocessors an internal variable is set that causes
6527 other macros to check the standard error from the preprocessor and
6528 consider the test failed if any warnings have been reported.  However,
6529 it is not known whether such broken preprocessors exist for C++.
6530 @end defmac
6532 @defmac AC_PROG_CXX_C_O
6533 @acindex{PROG_CXX_C_O}
6534 @cvindex CXX_NO_MINUS_C_MINUS_O
6535 Test whether the C++ compiler accepts the options @option{-c} and
6536 @option{-o} simultaneously, and define @code{CXX_NO_MINUS_C_MINUS_O},
6537 if it does not.
6538 @end defmac
6541 @node Objective C Compiler
6542 @subsection Objective C Compiler Characteristics
6545 @defmac AC_PROG_OBJC (@ovar{compiler-search-list})
6546 @acindex{PROG_OBJC}
6547 @ovindex OBJC
6548 @ovindex OBJCFLAGS
6549 Determine an Objective C compiler to use.  If @code{OBJC} is not already
6550 set in the environment, check for Objective C compilers.  Set output
6551 variable @code{OBJC} to the name of the compiler found.
6553 This macro may, however, be invoked with an optional first argument
6554 which, if specified, must be a blank-separated list of Objective C compilers to
6555 search for.  This just gives the user an opportunity to specify an
6556 alternative search list for the Objective C compiler.  For example, if you
6557 didn't like the default order, then you could invoke @code{AC_PROG_OBJC}
6558 like this:
6560 @example
6561 AC_PROG_OBJC([gcc objcc objc])
6562 @end example
6564 If using the @acronym{GNU} Objective C compiler, set shell variable
6565 @code{GOBJC} to @samp{yes}.  If output variable @code{OBJCFLAGS} was not
6566 already set, set it to @option{-g -O2} for the @acronym{GNU} Objective C
6567 compiler (@option{-O2} on systems where @command{gcc} does not accept
6568 @option{-g}), or @option{-g} for other compilers.
6569 @end defmac
6571 @defmac AC_PROG_OBJCCPP
6572 @acindex{PROG_OBJCCPP}
6573 @ovindex OBJCCPP
6574 Set output variable @code{OBJCCPP} to a command that runs the Objective C
6575 preprocessor.  If @samp{$OBJC -E} doesn't work, @file{/lib/cpp} is used.
6576 @end defmac
6579 @node Erlang Compiler and Interpreter
6580 @subsection Erlang Compiler and Interpreter Characteristics
6581 @cindex Erlang
6583 Autoconf defines the following macros for determining paths to the essential
6584 Erlang/OTP programs:
6586 @defmac AC_ERLANG_PATH_ERLC (@ovar{value-if-not-found}, @ovar{path})
6587 @acindex{ERLANG_PATH_ERLC}
6588 @ovindex ERLC
6589 @ovindex ERLCFLAGS
6590 Determine an Erlang compiler to use.  If @code{ERLC} is not already set in the
6591 environment, check for @command{erlc}.  Set output variable @code{ERLC} to the
6592 complete path of the compiler command found.  In addition, if @code{ERLCFLAGS}
6593 is not set in the environment, set it to an empty value.
6595 The two optional arguments have the same meaning as the two last arguments of
6596 macro @code{AC_PROG_PATH} for looking for the @command{erlc} program.  For
6597 example, to look for @command{erlc} only in the @file{/usr/lib/erlang/bin}
6598 directory:
6600 @example
6601 AC_ERLANG_PATH_ERLC([not found], [/usr/lib/erlang/bin])
6602 @end example
6603 @end defmac
6605 @defmac AC_ERLANG_NEED_ERLC (@ovar{path})
6606 @acindex{ERLANG_NEED_ERLC}
6607 A simplified variant of the @code{AC_ERLANG_PATH_ERLC} macro, that prints an
6608 error message and exits the @command{configure} script if the @command{erlc}
6609 program is not found.
6610 @end defmac
6612 @defmac AC_ERLANG_PATH_ERL (@ovar{value-if-not-found}, @ovar{path})
6613 @acindex{ERLANG_PATH_ERL}
6614 @ovindex ERL
6615 Determine an Erlang interpreter to use.  If @code{ERL} is not already set in the
6616 environment, check for @command{erl}.  Set output variable @code{ERL} to the
6617 complete path of the interpreter command found.
6619 The two optional arguments have the same meaning as the two last arguments of
6620 macro @code{AC_PROG_PATH} for looking for the @command{erl} program.  For
6621 example, to look for @command{erl} only in the @file{/usr/lib/erlang/bin}
6622 directory:
6624 @example
6625 AC_ERLANG_PATH_ERL([not found], [/usr/lib/erlang/bin])
6626 @end example
6627 @end defmac
6629 @defmac AC_ERLANG_NEED_ERL (@ovar{path})
6630 @acindex{ERLANG_NEED_ERL}
6631 A simplified variant of the @code{AC_ERLANG_PATH_ERL} macro, that prints an
6632 error message and exits the @command{configure} script if the @command{erl}
6633 program is not found.
6634 @end defmac
6637 @node Fortran Compiler
6638 @subsection Fortran Compiler Characteristics
6639 @cindex Fortran
6640 @cindex F77
6642 The Autoconf Fortran support is divided into two categories: legacy
6643 Fortran 77 macros (@code{F77}), and modern Fortran macros (@code{FC}).
6644 The former are intended for traditional Fortran 77 code, and have output
6645 variables like @code{F77}, @code{FFLAGS}, and @code{FLIBS}.  The latter
6646 are for newer programs that can (or must) compile under the newer
6647 Fortran standards, and have output variables like @code{FC},
6648 @code{FCFLAGS}, and @code{FCLIBS}.
6650 Except for two new macros @code{AC_FC_SRCEXT} and
6651 @code{AC_FC_FREEFORM} (see below), the @code{FC} and @code{F77} macros
6652 behave almost identically, and so they are documented together in this
6653 section.
6656 @defmac AC_PROG_F77 (@ovar{compiler-search-list})
6657 @acindex{PROG_F77}
6658 @ovindex F77
6659 @ovindex FFLAGS
6660 Determine a Fortran 77 compiler to use.  If @code{F77} is not already
6661 set in the environment, then check for @code{g77} and @code{f77}, and
6662 then some other names.  Set the output variable @code{F77} to the name
6663 of the compiler found.
6665 This macro may, however, be invoked with an optional first argument
6666 which, if specified, must be a blank-separated list of Fortran 77
6667 compilers to search for.  This just gives the user an opportunity to
6668 specify an alternative search list for the Fortran 77 compiler.  For
6669 example, if you didn't like the default order, then you could invoke
6670 @code{AC_PROG_F77} like this:
6672 @example
6673 AC_PROG_F77([fl32 f77 fort77 xlf g77 f90 xlf90])
6674 @end example
6676 If using @code{g77} (the @acronym{GNU} Fortran 77 compiler), then
6677 set the shell variable @code{G77} to @samp{yes}.
6678 If the output variable @code{FFLAGS} was not already set in the
6679 environment, then set it to @option{-g -02} for @code{g77} (or @option{-O2}
6680 where @code{g77} does not accept @option{-g}).  Otherwise, set
6681 @code{FFLAGS} to @option{-g} for all other Fortran 77 compilers.
6682 @end defmac
6684 @defmac AC_PROG_FC (@ovar{compiler-search-list}, @ovar{dialect})
6685 @acindex{PROG_FC}
6686 @ovindex FC
6687 @ovindex FCFLAGS
6688 Determine a Fortran compiler to use.  If @code{FC} is not already set in
6689 the environment, then @code{dialect} is a hint to indicate what Fortran
6690 dialect to search for; the default is to search for the newest available
6691 dialect.  Set the output variable @code{FC} to the name of the compiler
6692 found.
6694 By default, newer dialects are preferred over older dialects, but if
6695 @code{dialect} is specified then older dialects are preferred starting
6696 with the specified dialect.  @code{dialect} can currently be one of
6697 Fortran 77, Fortran 90, or Fortran 95.  However, this is only a hint of
6698 which compiler @emph{name} to prefer (e.g., @code{f90} or @code{f95}),
6699 and no attempt is made to guarantee that a particular language standard
6700 is actually supported.  Thus, it is preferable that you avoid the
6701 @code{dialect} option, and use AC_PROG_FC only for code compatible with
6702 the latest Fortran standard.
6704 This macro may, alternatively, be invoked with an optional first argument
6705 which, if specified, must be a blank-separated list of Fortran
6706 compilers to search for, just as in @code{AC_PROG_F77}.
6708 If the output variable @code{FCFLAGS} was not already set in the
6709 environment, then set it to @option{-g -02} for @acronym{GNU} @code{g77} (or
6710 @option{-O2} where @code{g77} does not accept @option{-g}).  Otherwise,
6711 set @code{FCFLAGS} to @option{-g} for all other Fortran compilers.
6712 @end defmac
6714 @defmac AC_PROG_F77_C_O
6715 @defmacx AC_PROG_FC_C_O
6716 @acindex{PROG_F77_C_O}
6717 @acindex{PROG_FC_C_O}
6718 @cvindex F77_NO_MINUS_C_MINUS_O
6719 @cvindex FC_NO_MINUS_C_MINUS_O
6720 Test whether the Fortran compiler accepts the options @option{-c} and
6721 @option{-o} simultaneously, and define @code{F77_NO_MINUS_C_MINUS_O} or
6722 @code{FC_NO_MINUS_C_MINUS_O}, respectively, if it does not.
6723 @end defmac
6725 The following macros check for Fortran compiler characteristics.
6726 To check for characteristics not listed here, use
6727 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}) or
6728 @code{AC_RUN_IFELSE} (@pxref{Runtime}), making sure to first set the
6729 current language to Fortran 77 or Fortran via @code{AC_LANG([Fortran 77])}
6730 or @code{AC_LANG(Fortran)} (@pxref{Language Choice}).
6733 @defmac AC_F77_LIBRARY_LDFLAGS
6734 @defmacx AC_FC_LIBRARY_LDFLAGS
6735 @acindex{F77_LIBRARY_LDFLAGS}
6736 @ovindex FLIBS
6737 @acindex{FC_LIBRARY_LDFLAGS}
6738 @ovindex FCLIBS
6739 Determine the linker flags (e.g., @option{-L} and @option{-l}) for the
6740 @dfn{Fortran intrinsic and runtime libraries} that are required to
6741 successfully link a Fortran program or shared library.  The output
6742 variable @code{FLIBS} or @code{FCLIBS} is set to these flags (which
6743 should be included after @code{LIBS} when linking).
6745 This macro is intended to be used in those situations when it is
6746 necessary to mix, e.g., C++ and Fortran source code in a single
6747 program or shared library (@pxref{Mixing Fortran 77 With C and C++, , ,
6748 automake, @acronym{GNU} Automake}).
6750 For example, if object files from a C++ and Fortran compiler must be
6751 linked together, then the C++ compiler/linker must be used for linking
6752 (since special C++-ish things need to happen at link time like calling
6753 global constructors, instantiating templates, enabling exception
6754 support, etc.).
6756 However, the Fortran intrinsic and runtime libraries must be linked in
6757 as well, but the C++ compiler/linker doesn't know by default how to add
6758 these Fortran 77 libraries.  Hence, this macro was created to determine
6759 these Fortran libraries.
6761 The macros @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
6762 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} are probably also necessary to
6763 link C/C++ with Fortran; see below.
6764 @end defmac
6766 @defmac AC_F77_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
6767 @defmacx AC_FC_DUMMY_MAIN (@ovar{action-if-found}, @ovar{action-if-not-found})
6768 @acindex{F77_DUMMY_MAIN}
6769 @cvindex F77_DUMMY_MAIN
6770 With many compilers, the Fortran libraries detected by
6771 @code{AC_F77_LIBRARY_LDFLAGS} or @code{AC_FC_LIBRARY_LDFLAGS} provide
6772 their own @code{main} entry function that initializes things like
6773 Fortran I/O, and which then calls a user-provided entry function named
6774 (say) @code{MAIN__} to run the user's program.  The
6775 @code{AC_F77_DUMMY_MAIN} and @code{AC_FC_DUMMY_MAIN} or
6776 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros figure out how to deal with
6777 this interaction.
6779 When using Fortran for purely numerical functions (no I/O, etc.)@: often
6780 one prefers to provide one's own @code{main} and skip the Fortran
6781 library initializations.  In this case, however, one may still need to
6782 provide a dummy @code{MAIN__} routine in order to prevent linking errors
6783 on some systems.  @code{AC_F77_DUMMY_MAIN} or @code{AC_FC_DUMMY_MAIN}
6784 detects whether any such routine is @emph{required} for linking, and
6785 what its name is; the shell variable @code{F77_DUMMY_MAIN} or
6786 @code{FC_DUMMY_MAIN} holds this name, @code{unknown} when no solution
6787 was found, and @code{none} when no such dummy main is needed.
6789 By default, @var{action-if-found} defines @code{F77_DUMMY_MAIN} or
6790 @code{FC_DUMMY_MAIN} to the name of this routine (e.g., @code{MAIN__})
6791 @emph{if} it is required.  @var{action-if-not-found} defaults to
6792 exiting with an error.
6794 In order to link with Fortran routines, the user's C/C++ program should
6795 then include the following code to define the dummy main if it is
6796 needed:
6798 @example
6799 #ifdef F77_DUMMY_MAIN
6800 #  ifdef __cplusplus
6801      extern "C"
6802 #  endif
6803    int F77_DUMMY_MAIN() @{ return 1; @}
6804 #endif
6805 @end example
6807 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
6809 Note that this macro is called automatically from @code{AC_F77_WRAPPERS}
6810 or @code{AC_FC_WRAPPERS}; there is generally no need to call it
6811 explicitly unless one wants to change the default actions.
6812 @end defmac
6814 @defmac AC_F77_MAIN
6815 @defmacx AC_FC_MAIN
6816 @acindex{F77_MAIN}
6817 @cvindex F77_MAIN
6818 @acindex{FC_MAIN}
6819 @cvindex FC_MAIN
6820 As discussed above, many Fortran libraries allow you to provide an entry
6821 point called (say) @code{MAIN__} instead of the usual @code{main}, which
6822 is then called by a @code{main} function in the Fortran libraries that
6823 initializes things like Fortran I/O@.  The
6824 @code{AC_F77_MAIN} and @code{AC_FC_MAIN} macros detect whether it is
6825 @emph{possible} to utilize such an alternate main function, and defines
6826 @code{F77_MAIN} and @code{FC_MAIN} to the name of the function.  (If no
6827 alternate main function name is found, @code{F77_MAIN} and @code{FC_MAIN} are
6828 simply defined to @code{main}.)
6830 Thus, when calling Fortran routines from C that perform things like I/O,
6831 one should use this macro and name the "main" function
6832 @code{F77_MAIN} or @code{FC_MAIN} instead of @code{main}.
6833 @end defmac
6835 @defmac AC_F77_WRAPPERS
6836 @defmacx AC_FC_WRAPPERS
6837 @acindex{F77_WRAPPERS}
6838 @cvindex F77_FUNC
6839 @cvindex F77_FUNC_
6840 @acindex{FC_WRAPPERS}
6841 @cvindex FC_FUNC
6842 @cvindex FC_FUNC_
6843 Defines C macros @code{F77_FUNC (name, NAME)}, @code{FC_FUNC (name, NAME)},
6844 @code{F77_FUNC_(name, NAME)}, and @code{FC_FUNC_(name, NAME)} to properly
6845 mangle the names of C/C++ identifiers, and identifiers with underscores,
6846 respectively, so that they match the name-mangling scheme used by the
6847 Fortran compiler.
6849 Fortran is case-insensitive, and in order to achieve this the Fortran
6850 compiler converts all identifiers into a canonical case and format.  To
6851 call a Fortran subroutine from C or to write a C function that is
6852 callable from Fortran, the C program must explicitly use identifiers in
6853 the format expected by the Fortran compiler.  In order to do this, one
6854 simply wraps all C identifiers in one of the macros provided by
6855 @code{AC_F77_WRAPPERS} or @code{AC_FC_WRAPPERS}.  For example, suppose
6856 you have the following Fortran 77 subroutine:
6858 @example
6859       subroutine foobar (x, y)
6860       double precision x, y
6861       y = 3.14159 * x
6862       return
6863       end
6864 @end example
6866 You would then declare its prototype in C or C++ as:
6868 @example
6869 #define FOOBAR_F77 F77_FUNC (foobar, FOOBAR)
6870 #ifdef __cplusplus
6871 extern "C"  /* prevent C++ name mangling */
6872 #endif
6873 void FOOBAR_F77(double *x, double *y);
6874 @end example
6876 Note that we pass both the lowercase and uppercase versions of the
6877 function name to @code{F77_FUNC} so that it can select the right one.
6878 Note also that all parameters to Fortran 77 routines are passed as
6879 pointers (@pxref{Mixing Fortran 77 With C and C++, , , automake, @acronym{GNU}
6880 Automake}).
6882 (Replace @code{F77} with @code{FC} for Fortran instead of Fortran 77.)
6884 Although Autoconf tries to be intelligent about detecting the
6885 name-mangling scheme of the Fortran compiler, there may be Fortran
6886 compilers that it doesn't support yet.  In this case, the above code
6887 generates a compile-time error, but some other behavior
6888 (e.g., disabling Fortran-related features) can be induced by checking
6889 whether @code{F77_FUNC} or @code{FC_FUNC} is defined.
6891 Now, to call that routine from a C program, we would do something like:
6893 @example
6895     double x = 2.7183, y;
6896     FOOBAR_F77 (&x, &y);
6898 @end example
6900 If the Fortran identifier contains an underscore (e.g., @code{foo_bar}),
6901 you should use @code{F77_FUNC_} or @code{FC_FUNC_} instead of
6902 @code{F77_FUNC} or @code{FC_FUNC} (with the same arguments).  This is
6903 because some Fortran compilers mangle names differently if they contain
6904 an underscore.
6905 @end defmac
6907 @defmac AC_F77_FUNC (@var{name}, @ovar{shellvar})
6908 @defmacx AC_FC_FUNC (@var{name}, @ovar{shellvar})
6909 @acindex{F77_FUNC}
6910 @acindex{FC_FUNC}
6911 Given an identifier @var{name}, set the shell variable @var{shellvar} to
6912 hold the mangled version @var{name} according to the rules of the
6913 Fortran linker (see also @code{AC_F77_WRAPPERS} or
6914 @code{AC_FC_WRAPPERS}).  @var{shellvar} is optional; if it is not
6915 supplied, the shell variable is simply @var{name}.  The purpose of
6916 this macro is to give the caller a way to access the name-mangling
6917 information other than through the C preprocessor as above, for example,
6918 to call Fortran routines from some language other than C/C++.
6919 @end defmac
6921 @defmac AC_FC_SRCEXT (@var{ext}, @ovar{action-if-success}, @ovar{action-if-failure})
6922 @acindex{FC_SRCEXT}
6923 By default, the @code{FC} macros perform their tests using a @file{.f}
6924 extension for source-code files.  Some compilers, however, only enable
6925 newer language features for appropriately named files, e.g., Fortran 90
6926 features only for @file{.f90} files.  On the other hand, some other
6927 compilers expect all source files to end in @file{.f} and require
6928 special flags to support other file name extensions.  The
6929 @code{AC_FC_SRCEXT} macro deals with both of these issues.
6931 The @code{AC_FC_SRCEXT} tries to get the @code{FC} compiler to accept files
6932 ending with the extension .@var{ext} (i.e., @var{ext} does @emph{not}
6933 contain the dot).  If any special compiler flags are needed for this, it
6934 stores them in the output variable @code{FCFLAGS_}@var{ext}.  This
6935 extension and these flags are then used for all subsequent @code{FC} tests
6936 (until @code{AC_FC_SRCEXT} is called again).
6938 For example, you would use @code{AC_FC_SRCEXT(f90)} to employ the
6939 @file{.f90} extension in future tests, and it would set a
6940 @code{FCFLAGS_f90} output variable with any extra flags that are needed
6941 to compile such files.
6943 The @code{FCFLAGS_}@var{ext} can @emph{not} be simply absorbed into
6944 @code{FCFLAGS}, for two reasons based on the limitations of some
6945 compilers.  First, only one @code{FCFLAGS_}@var{ext} can be used at a
6946 time, so files with different extensions must be compiled separately.
6947 Second, @code{FCFLAGS_}@var{ext} must appear @emph{immediately} before
6948 the source-code file name when compiling.  So, continuing the example
6949 above, you might compile a @file{foo.f90} file in your makefile with the
6950 command:
6952 @example
6953 foo.o: foo.f90
6954      $(FC) -c $(FCFLAGS) $(FCFLAGS_f90) $(srcdir)/foo.f90
6955 @end example
6957 If @code{AC_FC_SRCEXT} succeeds in compiling files with the @var{ext}
6958 extension, it calls @var{action-if-success} (defaults to nothing).  If
6959 it fails, and cannot find a way to make the @code{FC} compiler accept such
6960 files, it calls @var{action-if-failure} (defaults to exiting with an
6961 error message).
6963 @end defmac
6965 @defmac AC_FC_FREEFORM (@ovar{action-if-success}, @ovar{action-if-failure})
6966 @acindex{FC_FREEFORM}
6968 The @code{AC_FC_FREEFORM} tries to ensure that the Fortran compiler
6969 (@code{$FC}) allows free-format source code (as opposed to the older
6970 fixed-format style from Fortran 77).  If necessary, it may add some
6971 additional flags to @code{FCFLAGS}.
6973 This macro is most important if you are using the default @file{.f}
6974 extension, since many compilers interpret this extension as indicating
6975 fixed-format source unless an additional flag is supplied.  If you
6976 specify a different extension with @code{AC_FC_SRCEXT}, such as
6977 @file{.f90} or @file{.f95}, then @code{AC_FC_FREEFORM} ordinarily
6978 succeeds without modifying @code{FCFLAGS}.
6980 If @code{AC_FC_FREEFORM} succeeds in compiling free-form source, it
6981 calls @var{action-if-success} (defaults to nothing).  If it fails, it
6982 calls @var{action-if-failure} (defaults to exiting with an error
6983 message).
6984 @end defmac
6986 @node System Services
6987 @section System Services
6989 The following macros check for operating system services or capabilities.
6991 @defmac AC_PATH_X
6992 @acindex{PATH_X}
6993 @evindex XMKMF
6994 @cindex X Window System
6995 Try to locate the X Window System include files and libraries.  If the
6996 user gave the command line options @option{--x-includes=@var{dir}} and
6997 @option{--x-libraries=@var{dir}}, use those directories.
6999 If either or both were not given, get the missing values by running
7000 @code{xmkmf} (or an executable pointed to by the @code{XMKMF}
7001 environment variable) on a trivial @file{Imakefile} and examining the
7002 makefile that it produces.  Setting @code{XMKMF} to @samp{false}
7003 disables this method.
7005 If this method fails to find the X Window System, @command{configure}
7006 looks for the files in several directories where they often reside.
7007 If either method is successful, set the shell variables
7008 @code{x_includes} and @code{x_libraries} to their locations, unless they
7009 are in directories the compiler searches by default.
7011 If both methods fail, or the user gave the command line option
7012 @option{--without-x}, set the shell variable @code{no_x} to @samp{yes};
7013 otherwise set it to the empty string.
7014 @end defmac
7016 @defmac AC_PATH_XTRA
7017 @acindex{PATH_XTRA}
7018 @ovindex X_CFLAGS
7019 @ovindex X_LIBS
7020 @ovindex X_EXTRA_LIBS
7021 @ovindex X_PRE_LIBS
7022 @cvindex X_DISPLAY_MISSING
7023 An enhanced version of @code{AC_PATH_X}.  It adds the C compiler flags
7024 that X needs to output variable @code{X_CFLAGS}, and the X linker flags
7025 to @code{X_LIBS}.  Define @code{X_DISPLAY_MISSING} if X is not
7026 available.
7028 This macro also checks for special libraries that some systems need in
7029 order to compile X programs.  It adds any that the system needs to
7030 output variable @code{X_EXTRA_LIBS}.  And it checks for special X11R6
7031 libraries that need to be linked with before @option{-lX11}, and adds
7032 any found to the output variable @code{X_PRE_LIBS}.
7034 @c This is an incomplete kludge.  Make a real way to do it.
7035 @c If you need to check for other X functions or libraries yourself, then
7036 @c after calling this macro, add the contents of @code{X_EXTRA_LIBS} to
7037 @c @code{LIBS} temporarily, like this: (FIXME - add example)
7038 @end defmac
7040 @defmac AC_SYS_INTERPRETER
7041 @acindex{SYS_INTERPRETER}
7042 Check whether the system supports starting scripts with a line of the
7043 form @samp{#!/bin/sh} to select the interpreter to use for the script.
7044 After running this macro, shell code in @file{configure.ac} can check
7045 the shell variable @code{interpval}; it is set to @samp{yes}
7046 if the system supports @samp{#!}, @samp{no} if not.
7047 @end defmac
7049 @defmac AC_SYS_LARGEFILE
7050 @acindex{SYS_LARGEFILE}
7051 @cvindex _FILE_OFFSET_BITS
7052 @cvindex _LARGE_FILES
7053 @ovindex CC
7054 @cindex Large file support
7055 @cindex LFS
7056 Arrange for
7057 @uref{http://www.unix-systems.org/@/version2/@/whatsnew/@/lfs20mar.html,
7058 large-file support}.  On some hosts, one must use special compiler
7059 options to build programs that can access large files.  Append any such
7060 options to the output variable @code{CC}.  Define
7061 @code{_FILE_OFFSET_BITS} and @code{_LARGE_FILES} if necessary.
7063 Large-file support can be disabled by configuring with the
7064 @option{--disable-largefile} option.
7066 If you use this macro, check that your program works even when
7067 @code{off_t} is wider than @code{long int}, since this is common when
7068 large-file support is enabled.  For example, it is not correct to print
7069 an arbitrary @code{off_t} value @code{X} with @code{printf ("%ld",
7070 (long int) X)}.
7072 The LFS introduced the @code{fseeko} and @code{ftello} functions to
7073 replace their C counterparts @code{fseek} and @code{ftell} that do not
7074 use @code{off_t}.  Take care to use @code{AC_FUNC_FSEEKO} to make their
7075 prototypes available when using them and large-file support is
7076 enabled.
7077 @end defmac
7079 @defmac AC_SYS_LONG_FILE_NAMES
7080 @acindex{SYS_LONG_FILE_NAMES}
7081 @cvindex HAVE_LONG_FILE_NAMES
7082 If the system supports file names longer than 14 characters, define
7083 @code{HAVE_LONG_FILE_NAMES}.
7084 @end defmac
7086 @defmac AC_SYS_POSIX_TERMIOS
7087 @acindex{SYS_POSIX_TERMIOS}
7088 @cindex Posix termios headers
7089 @cindex termios Posix headers
7090 Check to see if the Posix termios headers and functions are available on the
7091 system.  If so, set the shell variable @code{ac_cv_sys_posix_termios} to
7092 @samp{yes}.  If not, set the variable to @samp{no}.
7093 @end defmac
7095 @node Posix Variants
7096 @section Posix Variants
7098 The following macros check for certain operating systems that need
7099 special treatment for some programs, due to exceptional oddities in
7100 their header files or libraries.  These macros are warts; they will be
7101 replaced by a more systematic approach, based on the functions they make
7102 available or the environments they provide.
7104 @defmac AC_AIX
7105 @acindex{AIX}
7106 @cvindex _ALL_SOURCE
7107 If on @acronym{AIX}, define @code{_ALL_SOURCE}.
7108 Allows the use of some @acronym{BSD}
7109 functions.  Should be called before any macros that run the C compiler.
7110 @end defmac
7112 @defmac AC_GNU_SOURCE
7113 @acindex{GNU_SOURCE}
7114 @cvindex _GNU_SOURCE
7115 If using the @acronym{GNU} C library, define @code{_GNU_SOURCE}.
7116 Allows the use of some @acronym{GNU} functions.  Should be called
7117 before any macros that run the C compiler.
7118 @end defmac
7120 @defmac AC_ISC_POSIX
7121 @acindex{ISC_POSIX}
7122 @ovindex LIBS
7123 For @sc{interactive} Systems Corporation Unix, add @option{-lcposix} to output
7124 variable @code{LIBS} if necessary for Posix facilities.  Call this
7125 after @code{AC_PROG_CC} and before any other macros that use Posix
7126 interfaces.  @sc{interactive} Unix is no longer sold, and Sun says that
7127 they will drop support for it on 2006-07-23, so this macro is becoming
7128 obsolescent.
7129 @end defmac
7131 @defmac AC_MINIX
7132 @acindex{MINIX}
7133 @cvindex _MINIX
7134 @cvindex _POSIX_SOURCE
7135 @cvindex _POSIX_1_SOURCE
7136 If on Minix, define @code{_MINIX} and @code{_POSIX_SOURCE} and define
7137 @code{_POSIX_1_SOURCE} to be 2.  This allows the use of Posix
7138 facilities.  Should be called before any macros that run the C compiler.
7139 @end defmac
7141 @defmac AC_USE_SYSTEM_EXTENSIONS
7142 @acindex{USE_SYSTEM_EXTENSIONS}
7143 @cvindex _ALL_SOURCE
7144 @cvindex _GNU_SOURCE
7145 @cvindex _MINIX
7146 @cvindex _POSIX_1_SOURCE
7147 @cvindex _POSIX_PTHREAD_SEMANTICS
7148 @cvindex _POSIX_SOURCE
7149 @cvindex __EXTENSIONS__
7150 If possible, enable extensions to Posix on hosts that normally disable
7151 the extensions, typically due to standards-conformance namespace issues.
7152 This may involve defining @code{__EXTENSIONS__} and
7153 @code{_POSIX_PTHREAD_SEMANTICS}, which are macros used by Solaris.  This
7154 macro also has the combined effects of @code{AC_GNU_SOURCE},
7155 @code{AC_AIX}, and @code{AC_MINIX}.
7156 @end defmac
7159 @node Erlang Libraries
7160 @section Erlang Libraries
7161 @cindex Erlang, Library, checking
7163 The following macros check for an installation of Erlang/OTP, and for the
7164 presence of certain Erlang libraries.  All those macros require the
7165 configuration of an Erlang interpreter and an Erlang compiler
7166 (@pxref{Erlang Compiler and Interpreter}).
7168 @defmac AC_ERLANG_SUBST_ROOT_DIR
7169 @acindex{ERLANG_SUBST_ROOT_DIR}
7170 @ovindex ERLANG_ROOT_DIR
7172 Set the output variable @code{ERLANG_ROOT_DIR} to the path to the base directory
7173 in which Erlang/OTP is installed (as returned by Erlang's @code{code:root_dir/0}
7174 function).  The result of this test is cached if caching is enabled when running
7175 @command{configure}.
7176 @end defmac
7178 @defmac AC_ERLANG_SUBST_LIB_DIR
7179 @acindex{ERLANG_SUBST_LIB_DIR}
7180 @ovindex ERLANG_LIB_DIR
7182 Set the output variable @code{ERLANG_LIB_DIR} to the path of the library
7183 directory of Erlang/OTP (as returned by Erlang's
7184 @code{code:lib_dir/0} function), which subdirectories each contain an installed
7185 Erlang/OTP library.  The result of this test is cached if caching is enabled
7186 when running @command{configure}.
7187 @end defmac
7189 @defmac AC_ERLANG_CHECK_LIB (@var{library}, @ovar{action-if-found}, @ovar{action-if-not-found})
7190 @acindex{ERLANG_CHECK_LIB}
7191 @ovindex ERLANG_LIB_DIR_@var{library}
7193 Test whether the Erlang/OTP library @var{library} is installed by calling
7194 Erlang's @code{code:lib_dir/1} function.  The result of this test is cached if
7195 caching is enabled when running @command{configure}.  @var{action-if-found} is a
7196 list of shell commands to run if the library is installed;
7197 @var{action-if-not-found} is a list of shell commands to run if it is not.
7198 Additionally, if the library is installed, the output variable
7199 @samp{ERLANG_LIB_DIR_@var{library}} is set to the path to the library
7200 installation directory.  For example, to check if library @code{stdlib} is
7201 installed:
7203 @example
7204 AC_ERLANG_CHECK_LIB([stdlib],
7205   [echo "stdlib is installed in $ERLANG_LIB_DIR_stdlib"],
7206   [AC_MSG_ERROR([stdlib was not found!])])
7207 @end example
7208 @end defmac
7210 In addition to the above macros, which test installed Erlang libraries, the
7211 following macros determine the paths to the directories into which newly built
7212 Erlang libraries are to be installed:
7214 @defmac AC_ERLANG_SUBST_INSTALL_LIB_DIR
7215 @acindex{ERLANG_SUBST_INSTALL_LIB_DIR}
7216 @ovindex ERLANG_INSTALL_LIB_DIR
7218 Set the @code{ERLANG_INSTALL_LIB_DIR} output variable to the directory into
7219 which every built Erlang library should be installed in a separate subdirectory.
7220 If this variable is not set in the environment when @command{configure} runs,
7221 its default value is @code{$ERLANG_LIB_DIR}, which value is set by the
7222 @code{AC_ERLANG_SUBST_LIB_DIR} macro.
7223 @end defmac
7225 @defmac AC_ERLANG_SUBST_INSTALL_LIB_SUBDIR (@var{library}, @var{version})
7226 @acindex{ERLANG_SUBST_INSTALL_LIB_SUBDIR}
7227 @ovindex ERLANG_INSTALL_LIB_DIR_@var{library}
7229 Set the @samp{ERLANG_INSTALL_LIB_DIR_@var{library}} output variable to the
7230 directory into which the built Erlang library @var{library} version
7231 @var{version} should be installed.  If this variable is not set in the
7232 environment when @command{configure} runs, its default value is
7233 @samp{$ERLANG_INSTALL_LIB_DIR/@var{library}-@var{version}}, the value of the
7234 @code{ERLANG_INSTALL_LIB_DIR} variable being set by the
7235 @code{AC_ERLANG_SUBST_INSTALL_LIB_DIR} macro.
7236 @end defmac
7242 @c ========================================================= Writing Tests
7244 @node Writing Tests
7245 @chapter Writing Tests
7247 If the existing feature tests don't do something you need, you have to
7248 write new ones.  These macros are the building blocks.  They provide
7249 ways for other macros to check whether various kinds of features are
7250 available and report the results.
7252 This chapter contains some suggestions and some of the reasons why the
7253 existing tests are written the way they are.  You can also learn a lot
7254 about how to write Autoconf tests by looking at the existing ones.  If
7255 something goes wrong in one or more of the Autoconf tests, this
7256 information can help you understand the assumptions behind them, which
7257 might help you figure out how to best solve the problem.
7259 These macros check the output of the compiler system of the current
7260 language (@pxref{Language Choice}).  They do not cache the results of
7261 their tests for future use (@pxref{Caching Results}), because they don't
7262 know enough about the information they are checking for to generate a
7263 cache variable name.  They also do not print any messages, for the same
7264 reason.  The checks for particular kinds of features call these macros
7265 and do cache their results and print messages about what they're
7266 checking for.
7268 When you write a feature test that could be applicable to more than one
7269 software package, the best thing to do is encapsulate it in a new macro.
7270 @xref{Writing Autoconf Macros}, for how to do that.
7272 @menu
7273 * Language Choice::             Selecting which language to use for testing
7274 * Writing Test Programs::       Forging source files for compilers
7275 * Running the Preprocessor::    Detecting preprocessor symbols
7276 * Running the Compiler::        Detecting language or header features
7277 * Running the Linker::          Detecting library features
7278 * Runtime::                     Testing for runtime features
7279 * Systemology::                 A zoology of operating systems
7280 * Multiple Cases::              Tests for several possible values
7281 @end menu
7283 @node Language Choice
7284 @section Language Choice
7285 @cindex Language
7287 Autoconf-generated @command{configure} scripts check for the C compiler and
7288 its features by default.  Packages that use other programming languages
7289 (maybe more than one, e.g., C and C++) need to test features of the
7290 compilers for the respective languages.  The following macros determine
7291 which programming language is used in the subsequent tests in
7292 @file{configure.ac}.
7294 @defmac AC_LANG (@var{language})
7295 Do compilation tests using the compiler, preprocessor, and file
7296 extensions for the specified @var{language}.
7298 Supported languages are:
7300 @table @samp
7301 @item C
7302 Do compilation tests using @code{CC} and @code{CPP} and use extension
7303 @file{.c} for test programs.  Use compilation flags: @code{CPPFLAGS} with
7304 @code{CPP}, and both @code{CPPFLAGS} and @code{CFLAGS} with @code{CC}.
7306 @item C++
7307 Do compilation tests using @code{CXX} and @code{CXXCPP} and use
7308 extension @file{.C} for test programs.  Use compilation flags:
7309 @code{CPPFLAGS} with @code{CXXPP}, and both @code{CPPFLAGS} and
7310 @code{CXXFLAGS} with @code{CXX}.
7312 @item Fortran 77
7313 Do compilation tests using @code{F77} and use extension @file{.f} for
7314 test programs.  Use compilation flags: @code{FFLAGS}.
7316 @item Fortran
7317 Do compilation tests using @code{FC} and use extension @file{.f} (or
7318 whatever has been set by @code{AC_FC_SRCEXT}) for test programs.  Use
7319 compilation flags: @code{FCFLAGS}.
7321 @item Erlang
7322 @ovindex ERLC
7323 @ovindex ERL
7324 @ovindex ERLCFLAGS
7325 Compile and execute tests using @code{ERLC} and @code{ERL} and use extension
7326 @file{.erl} for test Erlang modules.  Use compilation flags: @code{ERLCFLAGS}.
7328 @item Objective C
7329 Do compilation tests using @code{OBJC} and @code{OBJCCPP} and use
7330 extension @file{.m} for test programs.  Use compilation flags:
7331 @code{CPPFLAGS} with @code{OBJCPP}, and both @code{CPPFLAGS} and
7332 @code{OBJCFLAGS} with @code{OBJC}.
7333 @end table
7334 @end defmac
7336 @defmac AC_LANG_PUSH (@var{language})
7337 @acindex{LANG_PUSH}
7338 Remember the current language (as set by @code{AC_LANG}) on a stack, and
7339 then select the @var{language}.  Use this macro and @code{AC_LANG_POP}
7340 in macros that need to temporarily switch to a particular language.
7341 @end defmac
7343 @defmac AC_LANG_POP (@ovar{language})
7344 @acindex{LANG_POP}
7345 Select the language that is saved on the top of the stack, as set by
7346 @code{AC_LANG_PUSH}, and remove it from the stack.
7348 If given, @var{language} specifies the language we just @emph{quit}.  It
7349 is a good idea to specify it when it's known (which should be the
7350 case@dots{}), since Autoconf detects inconsistencies.
7352 @example
7353 AC_LANG_PUSH([Fortran 77])
7354 # Perform some tests on Fortran 77.
7355 # @dots{}
7356 AC_LANG_POP([Fortran 77])
7357 @end example
7358 @end defmac
7360 @defmac AC_LANG_ASSERT (@var{language})
7361 @acindex{LANG_ASSERT} Check statically that the current language is
7362 @var{language}.  You should use this in your language specific macros
7363 to avoid that they be called with an inappropriate language.
7365 This macro runs only at @command{autoconf} time, and incurs no cost at
7366 @command{configure} time.  Sadly enough and because Autoconf is a two
7367 layer language @footnote{Because M4 is not aware of Sh code,
7368 especially conditionals, some optimizations that look nice statically
7369 may produce incorrect results at runtime.}, the macros
7370 @code{AC_LANG_PUSH} and @code{AC_LANG_POP} cannot be ``optimizing'',
7371 therefore as much as possible you ought to avoid using them to wrap
7372 your code, rather, require from the user to run the macro with a
7373 correct current language, and check it with @code{AC_LANG_ASSERT}.
7374 And anyway, that may help the user understand she is running a Fortran
7375 macro while expecting a result about her Fortran 77 compiler@dots{}
7376 @end defmac
7379 @defmac AC_REQUIRE_CPP
7380 @acindex{REQUIRE_CPP}
7381 Ensure that whichever preprocessor would currently be used for tests has
7382 been found.  Calls @code{AC_REQUIRE} (@pxref{Prerequisite Macros}) with an
7383 argument of either @code{AC_PROG_CPP} or @code{AC_PROG_CXXCPP},
7384 depending on which language is current.
7385 @end defmac
7388 @node Writing Test Programs
7389 @section Writing Test Programs
7391 Autoconf tests follow a common scheme: feed some program with some
7392 input, and most of the time, feed a compiler with some source file.
7393 This section is dedicated to these source samples.
7395 @menu
7396 * Guidelines::                  General rules for writing test programs
7397 * Test Functions::              Avoiding pitfalls in test programs
7398 * Generating Sources::          Source program boilerplate
7399 @end menu
7401 @node Guidelines
7402 @subsection Guidelines for Test Programs
7404 The most important rule to follow when writing testing samples is:
7406 @center @emph{Look for realism.}
7408 This motto means that testing samples must be written with the same
7409 strictness as real programs are written.  In particular, you should
7410 avoid ``shortcuts'' and simplifications.
7412 Don't just play with the preprocessor if you want to prepare a
7413 compilation.  For instance, using @command{cpp} to check whether a header is
7414 functional might let your @command{configure} accept a header which
7415 causes some @emph{compiler} error.  Do not hesitate to check a header with
7416 other headers included before, especially required headers.
7418 Make sure the symbols you use are properly defined, i.e., refrain for
7419 simply declaring a function yourself instead of including the proper
7420 header.
7422 Test programs should not write to standard output.  They
7423 should exit with status 0 if the test succeeds, and with status 1
7424 otherwise, so that success
7425 can be distinguished easily from a core dump or other failure;
7426 segmentation violations and other failures produce a nonzero exit
7427 status.  Unless you arrange for @code{exit} to be declared, test
7428 programs should @code{return}, not @code{exit}, from @code{main},
7429 because on many systems @code{exit} is not declared by default.
7431 Test programs can use @code{#if} or @code{#ifdef} to check the values of
7432 preprocessor macros defined by tests that have already run.  For
7433 example, if you call @code{AC_HEADER_STDBOOL}, then later on in
7434 @file{configure.ac} you can have a test program that includes
7435 @file{stdbool.h} conditionally:
7437 @example
7438 @group
7439 #if HAVE_STDBOOL_H
7440 # include <stdbool.h>
7441 #endif
7442 @end group
7443 @end example
7445 If a test program needs to use or create a data file, give it a name
7446 that starts with @file{conftest}, such as @file{conftest.data}.  The
7447 @command{configure} script cleans up by running @samp{rm -f -r conftest*}
7448 after running test programs and if the script is interrupted.
7450 @node Test Functions
7451 @subsection Test Functions
7453 These days it's safe to assume support for function prototypes
7454 (introduced in C89).
7456 Functions that test programs declare should also be conditionalized for
7457 C++, which requires @samp{extern "C"} prototypes.  Make sure to not
7458 include any header files containing clashing prototypes.
7460 @example
7461 #ifdef __cplusplus
7462 extern "C"
7463 #endif
7464 void *valloc (size_t);
7465 @end example
7467 If a test program calls a function with invalid parameters (just to see
7468 whether it exists), organize the program to ensure that it never invokes
7469 that function.  You can do this by calling it in another function that is
7470 never invoked.  You can't do it by putting it after a call to
7471 @code{exit}, because GCC version 2 knows that @code{exit} never returns
7472 and optimizes out any code that follows it in the same block.
7474 If you include any header files, be sure to call the functions
7475 relevant to them with the correct number of arguments, even if they are
7476 just 0, to avoid compilation errors due to prototypes.  GCC version 2
7477 has internal prototypes for several functions that it automatically
7478 inlines; for example, @code{memcpy}.  To avoid errors when checking for
7479 them, either pass them the correct number of arguments or redeclare them
7480 with a different return type (such as @code{char}).
7483 @node Generating Sources
7484 @subsection Generating Sources
7486 Autoconf provides a set of macros that can be used to generate test
7487 source files.  They are written to be language generic, i.e., they
7488 actually depend on the current language (@pxref{Language Choice}) to
7489 ``format'' the output properly.
7492 @defmac AC_LANG_CONFTEST (@var{source})
7493 @acindex{LANG_CONFTEST}
7494 Save the @var{source} text in the current test source file:
7495 @file{conftest.@var{extension}} where the @var{extension} depends on the
7496 current language.
7498 Note that the @var{source} is evaluated exactly once, like regular
7499 Autoconf macro arguments, and therefore (i) you may pass a macro
7500 invocation, (ii) if not, be sure to double quote if needed.
7501 @end defmac
7503 @defmac AC_LANG_SOURCE (@var{source})
7504 @acindex{LANG_SOURCE}
7505 Expands into the @var{source}, with the definition of
7506 all the @code{AC_DEFINE} performed so far.
7507 @end defmac
7509 For instance executing (observe the double quotation!):
7511 @example
7512 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7513 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7514   [Greetings string.])
7515 AC_LANG(C)
7516 AC_LANG_CONFTEST(
7517    [AC_LANG_SOURCE([[const char hw[] = "Hello, World\n";]])])
7518 gcc -E -dD -o - conftest.c
7519 @end example
7521 @noindent
7522 results in:
7524 @example
7525 @dots{}
7526 # 1 "conftest.c"
7528 #define PACKAGE_NAME "Hello"
7529 #define PACKAGE_TARNAME "hello"
7530 #define PACKAGE_VERSION "1.0"
7531 #define PACKAGE_STRING "Hello 1.0"
7532 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
7533 #define HELLO_WORLD "Hello, World\n"
7535 const char hw[] = "Hello, World\n";
7536 @end example
7538 When the test language is Fortran or Erlang, the @code{AC_DEFINE} definitions
7539 are not automatically translated into constants in the source code by this
7540 macro.
7542 @defmac AC_LANG_PROGRAM (@var{prologue}, @var{body})
7543 @acindex{LANG_PROGRAM}
7544 Expands into a source file which consists of the @var{prologue}, and
7545 then @var{body} as body of the main function (e.g., @code{main} in
7546 C).  Since it uses @code{AC_LANG_SOURCE}, the features of the latter are
7547 available.
7548 @end defmac
7550 For instance:
7552 @example
7553 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7554 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7555   [Greetings string.])
7556 AC_LANG_CONFTEST(
7557 [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
7558                  [[fputs (hw, stdout);]])])
7559 gcc -E -dD -o - conftest.c
7560 @end example
7562 @noindent
7563 results in:
7565 @example
7566 @dots{}
7567 # 1 "conftest.c"
7569 #define PACKAGE_NAME "Hello"
7570 #define PACKAGE_TARNAME "hello"
7571 #define PACKAGE_VERSION "1.0"
7572 #define PACKAGE_STRING "Hello 1.0"
7573 #define PACKAGE_BUGREPORT "bug-hello@@example.org"
7574 #define HELLO_WORLD "Hello, World\n"
7576 const char hw[] = "Hello, World\n";
7578 main ()
7580 fputs (hw, stdout);
7581   ;
7582   return 0;
7584 @end example
7586 In Erlang tests, the created source file is that of an Erlang module called
7587 @code{conftest} (@file{conftest.erl}).  This module defines and exports at least
7588 one @code{start/0} function, which is called to perform the test.  The
7589 @var{prologue} is optional code that is inserted between the module header and
7590 the @code{start/0} function definition.  @var{body} is the body of the
7591 @code{start/0} function without the final period (@pxref{Runtime}, about
7592 constraints on this function's behaviour).
7594 For instance:
7596 @example
7597 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7598 AC_LANG(Erlang)
7599 AC_LANG_CONFTEST(
7600 [AC_LANG_PROGRAM([[-define(HELLO_WORLD, "Hello, world!").]],
7601                  [[io:format("~s~n", [?HELLO_WORLD])]])])
7602 cat conftest.erl
7603 @end example
7605 @noindent
7606 results in:
7608 @example
7609 -module(conftest).
7610 -export([start/0]).
7611 -define(HELLO_WORLD, "Hello, world!").
7612 start() ->
7613 io:format("~s~n", [?HELLO_WORLD])
7615 @end example
7617 @defmac AC_LANG_CALL (@var{prologue}, @var{function})
7618 @acindex{LANG_CALL}
7619 Expands into a source file which consists of the @var{prologue}, and
7620 then a call to the @var{function} as body of the main function (e.g.,
7621 @code{main} in C).  Since it uses @code{AC_LANG_PROGRAM}, the feature
7622 of the latter are available.
7624 This function will probably be replaced in the future by a version
7625 which would enable specifying the arguments.  The use of this macro is
7626 not encouraged, as it violates strongly the typing system.
7628 This macro cannot be used for Erlang tests.
7629 @end defmac
7631 @defmac AC_LANG_FUNC_LINK_TRY (@var{function})
7632 @acindex{LANG_FUNC_LINK_TRY}
7633 Expands into a source file which uses the @var{function} in the body of
7634 the main function (e.g., @code{main} in C).  Since it uses
7635 @code{AC_LANG_PROGRAM}, the features of the latter are available.
7637 As @code{AC_LANG_CALL}, this macro is documented only for completeness.
7638 It is considered to be severely broken, and in the future will be
7639 removed in favor of actual function calls (with properly typed
7640 arguments).
7642 This macro cannot be used for Erlang tests.
7643 @end defmac
7645 @node Running the Preprocessor
7646 @section Running the Preprocessor
7648 Sometimes one might need to run the preprocessor on some source file.
7649 @emph{Usually it is a bad idea}, as you typically need to @emph{compile}
7650 your project, not merely run the preprocessor on it; therefore you
7651 certainly want to run the compiler, not the preprocessor.  Resist the
7652 temptation of following the easiest path.
7654 Nevertheless, if you need to run the preprocessor, then use
7655 @code{AC_PREPROC_IFELSE}.
7657 The macros described in this section cannot be used for tests in Erlang or
7658 Fortran, since those languages require no preprocessor.
7660 @defmac AC_PREPROC_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7661 @acindex{PREPROC_IFELSE}
7662 Run the preprocessor of the current language (@pxref{Language Choice})
7663 on the @var{input}, run the shell commands @var{action-if-true} on
7664 success, @var{action-if-false} otherwise.  The @var{input} can be made
7665 by @code{AC_LANG_PROGRAM} and friends.
7667 This macro uses @code{CPPFLAGS}, but not @code{CFLAGS}, because
7668 @option{-g}, @option{-O}, etc.@: are not valid options to many C
7669 preprocessors.
7671 It is customary to report unexpected failures with
7672 @code{AC_MSG_FAILURE}.
7673 @end defmac
7675 For instance:
7677 @example
7678 AC_INIT([Hello], [1.0], [bug-hello@@example.org])
7679 AC_DEFINE([HELLO_WORLD], ["Hello, World\n"],
7680   [Greetings string.])
7681 AC_PREPROC_IFELSE(
7682    [AC_LANG_PROGRAM([[const char hw[] = "Hello, World\n";]],
7683                     [[fputs (hw, stdout);]])],
7684    [AC_MSG_RESULT([OK])],
7685    [AC_MSG_FAILURE([unexpected preprocessor failure])])
7686 @end example
7688 @noindent
7689 results in:
7691 @example
7692 checking for gcc... gcc
7693 checking for C compiler default output file name... a.out
7694 checking whether the C compiler works... yes
7695 checking whether we are cross compiling... no
7696 checking for suffix of executables...
7697 checking for suffix of object files... o
7698 checking whether we are using the GNU C compiler... yes
7699 checking whether gcc accepts -g... yes
7700 checking for gcc option to accept ISO C89... none needed
7701 checking how to run the C preprocessor... gcc -E
7703 @end example
7705 @sp 1
7707 The macro @code{AC_TRY_CPP} (@pxref{Obsolete Macros}) used to play the
7708 role of @code{AC_PREPROC_IFELSE}, but double quotes its argument, making
7709 it impossible to use it to elaborate sources.  You are encouraged to
7710 get rid of your old use of the macro @code{AC_TRY_CPP} in favor of
7711 @code{AC_PREPROC_IFELSE}, but, in the first place, are you sure you need
7712 to run the @emph{preprocessor} and not the compiler?
7714 @defmac AC_EGREP_HEADER (@var{pattern}, @var{header-file}, @var{action-if-found}, @ovar{action-if-not-found})
7715 @acindex{EGREP_HEADER}
7716 If the output of running the preprocessor on the system header file
7717 @var{header-file} matches the extended regular expression
7718 @var{pattern}, execute shell commands @var{action-if-found}, otherwise
7719 execute @var{action-if-not-found}.
7720 @end defmac
7722 @defmac AC_EGREP_CPP (@var{pattern}, @var{program}, @ovar{action-if-found}, @ovar{action-if-not-found})
7723 @acindex{EGREP_CPP}
7724 @var{program} is the text of a C or C++ program, on which shell
7725 variable, back quote, and backslash substitutions are performed.  If the
7726 output of running the preprocessor on @var{program} matches the
7727 extended regular expression @var{pattern}, execute shell commands
7728 @var{action-if-found}, otherwise execute @var{action-if-not-found}.
7729 @end defmac
7733 @node Running the Compiler
7734 @section Running the Compiler
7736 To check for a syntax feature of the current language's (@pxref{Language
7737 Choice}) compiler, such as whether it recognizes a certain keyword, or
7738 simply to try some library feature, use @code{AC_COMPILE_IFELSE} to try
7739 to compile a small program that uses that feature.
7741 @defmac AC_COMPILE_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7742 @acindex{COMPILE_IFELSE}
7743 Run the compiler and compilation flags of the current language
7744 (@pxref{Language Choice}) on the @var{input}, run the shell commands
7745 @var{action-if-true} on success, @var{action-if-false} otherwise.  The
7746 @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
7748 It is customary to report unexpected failures with
7749 @code{AC_MSG_FAILURE}.  This macro does not try to link; use
7750 @code{AC_LINK_IFELSE} if you need to do that (@pxref{Running the
7751 Linker}).
7752 @end defmac
7754 @ovindex ERL
7755 For tests in Erlang, the @var{input} must be the source code of a module named
7756 @code{conftest}.  @code{AC_COMPILE_IFELSE} generates a @file{conftest.beam}
7757 file that can be interpreted by the Erlang virtual machine (@code{ERL}).  It is
7758 recommended to use @code{AC_LANG_PROGRAM} to specify the test program, to ensure
7759 that the Erlang module has the right name.
7761 @node Running the Linker
7762 @section Running the Linker
7764 To check for a library, a function, or a global variable, Autoconf
7765 @command{configure} scripts try to compile and link a small program that
7766 uses it.  This is unlike Metaconfig, which by default uses @code{nm} or
7767 @code{ar} on the C library to try to figure out which functions are
7768 available.  Trying to link with the function is usually a more reliable
7769 approach because it avoids dealing with the variations in the options
7770 and output formats of @code{nm} and @code{ar} and in the location of the
7771 standard libraries.  It also allows configuring for cross-compilation or
7772 checking a function's runtime behavior if needed.  On the other hand,
7773 it can be slower than scanning the libraries once, but accuracy is more
7774 important than speed.
7776 @code{AC_LINK_IFELSE} is used to compile test programs to test for
7777 functions and global variables.  It is also used by @code{AC_CHECK_LIB}
7778 to check for libraries (@pxref{Libraries}), by adding the library being
7779 checked for to @code{LIBS} temporarily and trying to link a small
7780 program.
7783 @defmac AC_LINK_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
7784 @acindex{LINK_IFELSE}
7785 Run the compiler (and compilation flags) and the linker of the current
7786 language (@pxref{Language Choice}) on the @var{input}, run the shell
7787 commands @var{action-if-true} on success, @var{action-if-false}
7788 otherwise.  The @var{input} can be made by @code{AC_LANG_PROGRAM} and
7789 friends.
7791 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
7792 current compilation flags.
7794 It is customary to report unexpected failures with
7795 @code{AC_MSG_FAILURE}.  This macro does not try to execute the program;
7796 use @code{AC_RUN_IFELSE} if you need to do that (@pxref{Runtime}).
7797 @end defmac
7799 The @code{AC_LINK_IFELSE} macro cannot be used for Erlang tests, since Erlang
7800 programs are interpreted and do not require linking.
7804 @node Runtime
7805 @section Checking Runtime Behavior
7807 Sometimes you need to find out how a system performs at runtime, such
7808 as whether a given function has a certain capability or bug.  If you
7809 can, make such checks when your program runs instead of when it is
7810 configured.  You can check for things like the machine's endianness when
7811 your program initializes itself.
7813 If you really need to test for a runtime behavior while configuring,
7814 you can write a test program to determine the result, and compile and
7815 run it using @code{AC_RUN_IFELSE}.  Avoid running test programs if
7816 possible, because this prevents people from configuring your package for
7817 cross-compiling.
7819 @defmac AC_RUN_IFELSE (@var{input}, @ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-cross-compiling})
7820 @acindex{RUN_IFELSE}
7821 If @var{program} compiles and links successfully and returns an exit
7822 status of 0 when executed, run shell commands @var{action-if-true}.
7823 Otherwise, run shell commands @var{action-if-false}.
7825 The @var{input} can be made by @code{AC_LANG_PROGRAM} and friends.
7826 @code{LDFLAGS} and @code{LIBS} are used for linking, in addition to the
7827 compilation flags of the current language (@pxref{Language Choice}).
7829 If the compiler being used does not produce executables that run on the
7830 system where @command{configure} is being run, then the test program is
7831 not run.  If the optional shell commands @var{action-if-cross-compiling}
7832 are given, they are run instead.  Otherwise, @command{configure} prints
7833 an error message and exits.
7835 In the @var{action-if-false} section, the failing exit status is
7836 available in the shell variable @samp{$?}.  This exit status might be
7837 that of a failed compilation, or it might be that of a failed program
7838 execution.
7840 It is customary to report unexpected failures with
7841 @code{AC_MSG_FAILURE}.
7842 @end defmac
7844 Try to provide a pessimistic default value to use when cross-compiling
7845 makes runtime tests impossible.  You do this by passing the optional
7846 last argument to @code{AC_RUN_IFELSE}.  @command{autoconf} prints a
7847 warning message when creating @command{configure} each time it
7848 encounters a call to @code{AC_RUN_IFELSE} with no
7849 @var{action-if-cross-compiling} argument given.  You may ignore the
7850 warning, though users cannot configure your package for
7851 cross-compiling.  A few of the macros distributed with Autoconf produce
7852 this warning message.
7854 To configure for cross-compiling you can also choose a value for those
7855 parameters based on the canonical system name (@pxref{Manual
7856 Configuration}).  Alternatively, set up a test results cache file with
7857 the correct values for the host system (@pxref{Caching Results}).
7859 @ovindex cross_compiling
7860 To provide a default for calls of @code{AC_RUN_IFELSE} that are embedded
7861 in other macros, including a few of the ones that come with Autoconf,
7862 you can test whether the shell variable @code{cross_compiling} is set to
7863 @samp{yes}, and then use an alternate method to get the results instead
7864 of calling the macros.
7866 A C or C++ runtime test should be portable.
7867 @xref{Portable C and C++}.
7869 Erlang tests must exit themselves the Erlang VM by calling the @code{halt/1}
7870 function: the given status code is used to determine the success of the test
7871 (status is @code{0}) or its failure (status is different than @code{0}), as
7872 explained above.  It must be noted that data output through the standard output
7873 (e.g. using @code{io:format/2}) may be truncated when halting the VM.
7874 Therefore, if a test must output configuration information, it is recommended
7875 to create and to output data into the temporary file named @file{conftest.out},
7876 using the functions of module @code{file}.  The @code{conftest.out} file is
7877 automatically deleted by the @code{AC_RUN_IFELSE} macro.  For instance, a
7878 simplified implementation of Autoconf's @code{AC_ERLANG_SUBST_LIB_DIR} macro is:
7880 @example
7881 AC_INIT([LibdirTest], [1.0], [bug-libdirtest@@example.org])
7882 AC_ERLANG_NEED_ERL
7883 AC_LANG(Erlang)
7884 AC_RUN_IFELSE(
7885   [AC_LANG_PROGRAM([], [dnl
7886     file:write_file("conftest.out", code:lib_dir()),
7887     halt(0)])],
7888   [echo "code:lib_dir() returned: `cat conftest.out`"],
7889   [AC_MSG_FAILURE([test Erlang program execution failed])])
7890 @end example
7893 @node Systemology
7894 @section Systemology
7895 @cindex Systemology
7897 This section aims at presenting some systems and pointers to
7898 documentation.  It may help you addressing particular problems reported
7899 by users.
7901 @uref{http://www.opengroup.org/susv3, Posix-conforming systems} are
7902 derived from the @uref{http://www.bell-labs.com/history/unix/, Unix
7903 operating system}.
7905 The @uref{http://bhami.com/rosetta.html, Rosetta Stone for Unix}
7906 contains a table correlating the features of various Posix-conforming
7907 systems.  @uref{http://www.levenez.com/unix/, Unix History} is a
7908 simplified diagram of how many Unix systems were derived from each
7909 other.
7911 @uref{http://heirloom.sourceforge.net/, The Heirloom Project}
7912 provides some variants of traditional implementations of Unix utilities.
7914 @table @asis
7915 @item Darwin
7916 @cindex Darwin
7917 Darwin is also known as Mac OS X@.  Beware that the file system @emph{can} be
7918 case-preserving, but case insensitive.  This can cause nasty problems,
7919 since for instance the installation attempt for a package having an
7920 @file{INSTALL} file can result in @samp{make install} report that
7921 nothing was to be done!
7923 That's all dependent on whether the file system is a UFS (case
7924 sensitive) or HFS+ (case preserving).  By default Apple wants you to
7925 install the OS on HFS+.  Unfortunately, there are some pieces of
7926 software which really need to be built on UFS@.  We may want to rebuild
7927 Darwin to have both UFS and HFS+ available (and put the /local/build
7928 tree on the UFS).
7930 @item @acronym{QNX} 4.25
7931 @cindex @acronym{QNX} 4.25
7932 @c FIXME: Please, if you feel like writing something more precise,
7933 @c it'd be great.  In particular, I can't understand the difference with
7934 @c QNX Neutrino.
7935 @acronym{QNX} is a realtime operating system running on Intel architecture
7936 meant to be scalable from the small embedded systems to the hundred
7937 processor super-computer.  It claims to be Posix certified.  More
7938 information is available on the
7939 @uref{http://www.qnx.com/, @acronym{QNX} home page}.
7941 @item Tru64
7942 @cindex Tru64
7943 @uref{http://h30097.www3.hp.com/@/docs/,
7944 Documentation of several versions of Tru64} is available in different
7945 formats.
7947 @item Unix version 7
7948 @cindex Unix version 7
7949 @cindex V7
7950 Officially this was called the ``Seventh Edition'' of ``the @sc{unix}
7951 time-sharing system'' but we use the more-common name ``Unix version 7''.
7952 Documentation is available in the
7953 @uref{http://plan9.bell-labs.com/@/7thEdMan/, Unix Seventh Edition Manual}.
7954 Previous versions of Unix are called ``Unix version 6'', etc., but
7955 they were not as widely used.
7956 @end table
7959 @node Multiple Cases
7960 @section Multiple Cases
7962 Some operations are accomplished in several possible ways, depending on
7963 the OS variant.  Checking for them essentially requires a ``case
7964 statement''.  Autoconf does not directly provide one; however, it is
7965 easy to simulate by using a shell variable to keep track of whether a
7966 way to perform the operation has been found yet.
7968 Here is an example that uses the shell variable @code{fstype} to keep
7969 track of whether the remaining cases need to be checked.
7971 @example
7972 @group
7973 AC_MSG_CHECKING([how to get file system type])
7974 fstype=no
7975 # The order of these tests is important.
7976 AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statvfs.h>
7977 #include <sys/fstyp.h>]])],
7978                   [AC_DEFINE([FSTYPE_STATVFS], [1],
7979                      [Define if statvfs exists.])
7980                    fstype=SVR4])
7981 if test $fstype = no; then
7982   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
7983 #include <sys/fstyp.h>]])],
7984                   [AC_DEFINE([FSTYPE_USG_STATFS], [1],
7985                      [Define if USG statfs.])
7986                    fstype=SVR3])
7988 if test $fstype = no; then
7989   AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[#include <sys/statfs.h>
7990 #include <sys/vmount.h>]])]),
7991                   [AC_DEFINE([FSTYPE_AIX_STATFS], [1],
7992                      [Define if AIX statfs.])
7993                    fstype=AIX])
7995 # (more cases omitted here)
7996 AC_MSG_RESULT([$fstype])
7997 @end group
7998 @end example
8000 @c ====================================================== Results of Tests.
8002 @node Results
8003 @chapter Results of Tests
8005 Once @command{configure} has determined whether a feature exists, what can
8006 it do to record that information?  There are four sorts of things it can
8007 do: define a C preprocessor symbol, set a variable in the output files,
8008 save the result in a cache file for future @command{configure} runs, and
8009 print a message letting the user know the result of the test.
8011 @menu
8012 * Defining Symbols::            Defining C preprocessor symbols
8013 * Setting Output Variables::    Replacing variables in output files
8014 * Special Chars in Variables::  Characters to beware of in variables
8015 * Caching Results::             Speeding up subsequent @command{configure} runs
8016 * Printing Messages::           Notifying @command{configure} users
8017 @end menu
8019 @node Defining Symbols
8020 @section Defining C Preprocessor Symbols
8022 A common action to take in response to a feature test is to define a C
8023 preprocessor symbol indicating the results of the test.  That is done by
8024 calling @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}.
8026 By default, @code{AC_OUTPUT} places the symbols defined by these macros
8027 into the output variable @code{DEFS}, which contains an option
8028 @option{-D@var{symbol}=@var{value}} for each symbol defined.  Unlike in
8029 Autoconf version 1, there is no variable @code{DEFS} defined while
8030 @command{configure} is running.  To check whether Autoconf macros have
8031 already defined a certain C preprocessor symbol, test the value of the
8032 appropriate cache variable, as in this example:
8034 @example
8035 AC_CHECK_FUNC([vprintf], [AC_DEFINE([HAVE_VPRINTF], [1],
8036                           [Define if vprintf exists.])])
8037 if test "$ac_cv_func_vprintf" != yes; then
8038   AC_CHECK_FUNC([_doprnt], [AC_DEFINE([HAVE_DOPRNT], [1],
8039                             [Define if _doprnt exists.])])
8041 @end example
8043 If @code{AC_CONFIG_HEADERS} has been called, then instead of creating
8044 @code{DEFS}, @code{AC_OUTPUT} creates a header file by substituting the
8045 correct values into @code{#define} statements in a template file.
8046 @xref{Configuration Headers}, for more information about this kind of
8047 output.
8049 @defmac AC_DEFINE (@var{variable}, @var{value}, @ovar{description})
8050 @defmacx AC_DEFINE (@var{variable})
8051 @acindex{DEFINE}
8052 Define the C preprocessor variable @var{variable} to @var{value} (verbatim).
8053 @var{value} should not contain literal newlines, and if you are not
8054 using @code{AC_CONFIG_HEADERS} it should not contain any @samp{#}
8055 characters, as @command{make} tends to eat them.  To use a shell variable,
8056 use @code{AC_DEFINE_UNQUOTED} instead.
8057 @var{description} is only useful if you are using
8058 @code{AC_CONFIG_HEADERS}.  In this case, @var{description} is put into
8059 the generated @file{config.h.in} as the comment before the macro define.
8060 The following example defines the C preprocessor variable
8061 @code{EQUATION} to be the string constant @samp{"$a > $b"}:
8063 @example
8064 AC_DEFINE([EQUATION], ["$a > $b"],
8065   [Equation string.])
8066 @end example
8068 If neither @var{value} nor @var{description} are given, then
8069 @var{value} defaults to 1 instead of to the empty string.  This is for
8070 backwards compatibility with older versions of Autoconf, but this usage
8071 is obsolescent and may be withdrawn in future versions of Autoconf.
8073 If the @var{variable} is a literal string, it is passed to
8074 @code{m4_pattern_allow} (@pxref{Forbidden Patterns}).
8075 @end defmac
8077 @defmac AC_DEFINE_UNQUOTED (@var{variable}, @var{value}, @ovar{description})
8078 @defmacx AC_DEFINE_UNQUOTED (@var{variable})
8079 @acindex{DEFINE_UNQUOTED}
8080 Like @code{AC_DEFINE}, but three shell expansions are
8081 performed---once---on @var{variable} and @var{value}: variable expansion
8082 (@samp{$}), command substitution (@samp{`}), and backslash escaping
8083 (@samp{\}).  Single and double quote characters in the value have no
8084 special meaning.  Use this macro instead of @code{AC_DEFINE} when
8085 @var{variable} or @var{value} is a shell variable.  Examples:
8087 @example
8088 AC_DEFINE_UNQUOTED([config_machfile], ["$machfile"],
8089   [Configuration machine file.])
8090 AC_DEFINE_UNQUOTED([GETGROUPS_T], [$ac_cv_type_getgroups],
8091   [getgroups return type.])
8092 AC_DEFINE_UNQUOTED([$ac_tr_hdr], [1],
8093   [Translated header name.])
8094 @end example
8095 @end defmac
8097 Due to a syntactical bizarreness of the Bourne shell, do not use
8098 semicolons to separate @code{AC_DEFINE} or @code{AC_DEFINE_UNQUOTED}
8099 calls from other macro calls or shell code; that can cause syntax errors
8100 in the resulting @command{configure} script.  Use either blanks or
8101 newlines.  That is, do this:
8103 @example
8104 AC_CHECK_HEADER([elf.h],
8105   [AC_DEFINE([SVR4], [1], [System V Release 4]) LIBS="-lelf $LIBS"])
8106 @end example
8108 @noindent
8109 or this:
8111 @example
8112 AC_CHECK_HEADER([elf.h],
8113   [AC_DEFINE([SVR4], [1], [System V Release 4])
8114    LIBS="-lelf $LIBS"])
8115 @end example
8117 @noindent
8118 instead of this:
8120 @example
8121 AC_CHECK_HEADER([elf.h],
8122   [AC_DEFINE([SVR4], [1], [System V Release 4]); LIBS="-lelf $LIBS"])
8123 @end example
8125 @node Setting Output Variables
8126 @section Setting Output Variables
8127 @cindex Output variables
8129 Another way to record the results of tests is to set @dfn{output
8130 variables}, which are shell variables whose values are substituted into
8131 files that @command{configure} outputs.  The two macros below create new
8132 output variables.  @xref{Preset Output Variables}, for a list of output
8133 variables that are always available.
8135 @defmac AC_SUBST (@var{variable}, @ovar{value})
8136 @acindex{SUBST}
8137 Create an output variable from a shell variable.  Make @code{AC_OUTPUT}
8138 substitute the variable @var{variable} into output files (typically one
8139 or more makefiles).  This means that @code{AC_OUTPUT}
8140 replaces instances of @samp{@@@var{variable}@@} in input files with the
8141 value that the shell variable @var{variable} has when @code{AC_OUTPUT}
8142 is called.  The value can contain newlines.
8143 The substituted value is not rescanned for more output variables;
8144 occurrences of @samp{@@@var{variable}@@} in the value are inserted
8145 literally into the output file.  (The algorithm uses the special marker
8146 @code{|#_!!_#|} internally, so the substituted value cannot contain
8147 @code{|#_!!_#|}.)
8149 If @var{value} is given, in addition assign it to @var{variable}.
8151 The string @var{variable} is passed to @code{m4_pattern_allow}
8152 (@pxref{Forbidden Patterns}).
8153 @end defmac
8155 @defmac AC_SUBST_FILE (@var{variable})
8156 @acindex{SUBST_FILE}
8157 Another way to create an output variable from a shell variable.  Make
8158 @code{AC_OUTPUT} insert (without substitutions) the contents of the file
8159 named by shell variable @var{variable} into output files.  This means
8160 that @code{AC_OUTPUT} replaces instances of
8161 @samp{@@@var{variable}@@} in output files (such as @file{Makefile.in})
8162 with the contents of the file that the shell variable @var{variable}
8163 names when @code{AC_OUTPUT} is called.  Set the variable to
8164 @file{/dev/null} for cases that do not have a file to insert.
8165 This substitution occurs only when the @samp{@@@var{variable}@@} is on a
8166 line by itself, optionally surrounded by spaces and tabs.  The
8167 substitution replaces the whole line, including the spaces, tabs, and
8168 the terminating newline.
8170 This macro is useful for inserting makefile fragments containing
8171 special dependencies or other @code{make} directives for particular host
8172 or target types into makefiles.  For example, @file{configure.ac}
8173 could contain:
8175 @example
8176 AC_SUBST_FILE([host_frag])
8177 host_frag=$srcdir/conf/sun4.mh
8178 @end example
8180 @noindent
8181 and then a @file{Makefile.in} could contain:
8183 @example
8184 @@host_frag@@
8185 @end example
8187 The string @var{variable} is passed to @code{m4_pattern_allow}
8188 (@pxref{Forbidden Patterns}).
8189 @end defmac
8191 @cindex Previous Variable
8192 @cindex Variable, Precious
8193 Running @command{configure} in varying environments can be extremely
8194 dangerous.  If for instance the user runs @samp{CC=bizarre-cc
8195 ./configure}, then the cache, @file{config.h}, and many other output
8196 files depend upon @command{bizarre-cc} being the C compiler.  If
8197 for some reason the user runs @command{./configure} again, or if it is
8198 run via @samp{./config.status --recheck}, (@xref{Automatic Remaking},
8199 and @pxref{config.status Invocation}), then the configuration can be
8200 inconsistent, composed of results depending upon two different
8201 compilers.
8203 Environment variables that affect this situation, such as @samp{CC}
8204 above, are called @dfn{precious variables}, and can be declared as such
8205 by @code{AC_ARG_VAR}.
8207 @defmac AC_ARG_VAR (@var{variable}, @var{description})
8208 @acindex{ARG_VAR}
8209 Declare @var{variable} is a precious variable, and include its
8210 @var{description} in the variable section of @samp{./configure --help}.
8212 Being precious means that
8213 @itemize @minus
8214 @item
8215 @var{variable} is substituted via @code{AC_SUBST}.
8217 @item
8218 The value of @var{variable} when @command{configure} was launched is
8219 saved in the cache, including if it was not specified on the command
8220 line but via the environment.  Indeed, while @command{configure} can
8221 notice the definition of @code{CC} in @samp{./configure CC=bizarre-cc},
8222 it is impossible to notice it in @samp{CC=bizarre-cc ./configure},
8223 which, unfortunately, is what most users do.
8225 We emphasize that it is the @emph{initial} value of @var{variable} which
8226 is saved, not that found during the execution of @command{configure}.
8227 Indeed, specifying @samp{./configure FOO=foo} and letting
8228 @samp{./configure} guess that @code{FOO} is @code{foo} can be two
8229 different things.
8231 @item
8232 @var{variable} is checked for consistency between two
8233 @command{configure} runs.  For instance:
8235 @example
8236 $ @kbd{./configure --silent --config-cache}
8237 $ @kbd{CC=cc ./configure --silent --config-cache}
8238 configure: error: `CC' was not set in the previous run
8239 configure: error: changes in the environment can compromise \
8240 the build
8241 configure: error: run `make distclean' and/or \
8242 `rm config.cache' and start over
8243 @end example
8245 @noindent
8246 and similarly if the variable is unset, or if its content is changed.
8249 @item
8250 @var{variable} is kept during automatic reconfiguration
8251 (@pxref{config.status Invocation}) as if it had been passed as a command
8252 line argument, including when no cache is used:
8254 @example
8255 $ @kbd{CC=/usr/bin/cc ./configure undeclared_var=raboof --silent}
8256 $ @kbd{./config.status --recheck}
8257 running /bin/sh ./configure undeclared_var=raboof --silent \
8258   CC=/usr/bin/cc  --no-create --no-recursion
8259 @end example
8260 @end itemize
8261 @end defmac
8263 @node Special Chars in Variables
8264 @section Special Characters in Output Variables
8265 @cindex Output variables, special characters in
8267 Many output variables are intended to be evaluated both by
8268 @command{make} and by the shell.  Some characters are expanded
8269 differently in these two contexts, so to avoid confusion these
8270 variables' values should not contain any of the following characters:
8272 @example
8273 " # $ & ' ( ) * ; < > ? [ \ ^ ` |
8274 @end example
8276 Also, these variables' values should neither contain newlines, nor start
8277 with @samp{~}, nor contain white space or @samp{:} immediately followed
8278 by @samp{~}.  The values can contain nonempty sequences of white space
8279 characters like tabs and spaces, but each such sequence might
8280 arbitrarily be replaced by a single space during substitution.
8282 These restrictions apply both to the values that @command{configure}
8283 computes, and to the values set directly by the user.  For example, the
8284 following invocations of @command{configure} are problematic, since they
8285 attempt to use special characters within @code{CPPFLAGS}:
8287 @example
8288 CPPFLAGS='-DOUCH="&\"#$*?"' ./configure
8290 ./configure CPPFLAGS='-DOUCH="&\"#$*?"'
8291 @end example
8293 @node Caching Results
8294 @section Caching Results
8295 @cindex Cache
8297 To avoid checking for the same features repeatedly in various
8298 @command{configure} scripts (or in repeated runs of one script),
8299 @command{configure} can optionally save the results of many checks in a
8300 @dfn{cache file} (@pxref{Cache Files}).  If a @command{configure} script
8301 runs with caching enabled and finds a cache file, it reads the results
8302 of previous runs from the cache and avoids rerunning those checks.  As a
8303 result, @command{configure} can then run much faster than if it had to
8304 perform all of the checks every time.
8306 @defmac AC_CACHE_VAL (@var{cache-id}, @var{commands-to-set-it})
8307 @acindex{CACHE_VAL}
8308 Ensure that the results of the check identified by @var{cache-id} are
8309 available.  If the results of the check were in the cache file that was
8310 read, and @command{configure} was not given the @option{--quiet} or
8311 @option{--silent} option, print a message saying that the result was
8312 cached; otherwise, run the shell commands @var{commands-to-set-it}.  If
8313 the shell commands are run to determine the value, the value is
8314 saved in the cache file just before @command{configure} creates its output
8315 files.  @xref{Cache Variable Names}, for how to choose the name of the
8316 @var{cache-id} variable.
8318 The @var{commands-to-set-it} @emph{must have no side effects} except for
8319 setting the variable @var{cache-id}, see below.
8320 @end defmac
8322 @defmac AC_CACHE_CHECK (@var{message}, @var{cache-id}, @var{commands-to-set-it})
8323 @acindex{CACHE_CHECK}
8324 A wrapper for @code{AC_CACHE_VAL} that takes care of printing the
8325 messages.  This macro provides a convenient shorthand for the most
8326 common way to use these macros.  It calls @code{AC_MSG_CHECKING} for
8327 @var{message}, then @code{AC_CACHE_VAL} with the @var{cache-id} and
8328 @var{commands} arguments, and @code{AC_MSG_RESULT} with @var{cache-id}.
8330 The @var{commands-to-set-it} @emph{must have no side effects} except for
8331 setting the variable @var{cache-id}, see below.
8332 @end defmac
8334 It is common to find buggy macros using @code{AC_CACHE_VAL} or
8335 @code{AC_CACHE_CHECK}, because people are tempted to call
8336 @code{AC_DEFINE} in the @var{commands-to-set-it}.  Instead, the code that
8337 @emph{follows} the call to @code{AC_CACHE_VAL} should call
8338 @code{AC_DEFINE}, by examining the value of the cache variable.  For
8339 instance, the following macro is broken:
8341 @example
8342 @group
8343 AC_DEFUN([AC_SHELL_TRUE],
8344 [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
8345                 [ac_cv_shell_true_works=no
8346                  (true) 2>/dev/null && ac_cv_shell_true_works=yes
8347                  if test "$ac_cv_shell_true_works" = yes; then
8348                    AC_DEFINE([TRUE_WORKS], [1],
8349                              [Define if `true(1)' works properly.])
8350                  fi])
8352 @end group
8353 @end example
8355 @noindent
8356 This fails if the cache is enabled: the second time this macro is run,
8357 @code{TRUE_WORKS} @emph{will not be defined}.  The proper implementation
8360 @example
8361 @group
8362 AC_DEFUN([AC_SHELL_TRUE],
8363 [AC_CACHE_CHECK([whether true(1) works], [ac_cv_shell_true_works],
8364                 [ac_cv_shell_true_works=no
8365                  (true) 2>/dev/null && ac_cv_shell_true_works=yes])
8366  if test "$ac_cv_shell_true_works" = yes; then
8367    AC_DEFINE([TRUE_WORKS], [1],
8368              [Define if `true(1)' works properly.])
8369  fi
8371 @end group
8372 @end example
8374 Also, @var{commands-to-set-it} should not print any messages, for
8375 example with @code{AC_MSG_CHECKING}; do that before calling
8376 @code{AC_CACHE_VAL}, so the messages are printed regardless of whether
8377 the results of the check are retrieved from the cache or determined by
8378 running the shell commands.
8380 @menu
8381 * Cache Variable Names::        Shell variables used in caches
8382 * Cache Files::                 Files @command{configure} uses for caching
8383 * Cache Checkpointing::         Loading and saving the cache file
8384 @end menu
8386 @node Cache Variable Names
8387 @subsection Cache Variable Names
8388 @cindex Cache variable
8390 The names of cache variables should have the following format:
8392 @example
8393 @var{package-prefix}_cv_@var{value-type}_@var{specific-value}_@ovar{additional-options}
8394 @end example
8396 @noindent
8397 for example, @samp{ac_cv_header_stat_broken} or
8398 @samp{ac_cv_prog_gcc_traditional}.  The parts of the variable name are:
8400 @table @asis
8401 @item @var{package-prefix}
8402 An abbreviation for your package or organization; the same prefix you
8403 begin local Autoconf macros with, except lowercase by convention.
8404 For cache values used by the distributed Autoconf macros, this value is
8405 @samp{ac}.
8407 @item @code{_cv_}
8408 Indicates that this shell variable is a cache value.  This string
8409 @emph{must} be present in the variable name, including the leading
8410 underscore.
8412 @item @var{value-type}
8413 A convention for classifying cache values, to produce a rational naming
8414 system.  The values used in Autoconf are listed in @ref{Macro Names}.
8416 @item @var{specific-value}
8417 Which member of the class of cache values this test applies to.
8418 For example, which function (@samp{alloca}), program (@samp{gcc}), or
8419 output variable (@samp{INSTALL}).
8421 @item @var{additional-options}
8422 Any particular behavior of the specific member that this test applies to.
8423 For example, @samp{broken} or @samp{set}.  This part of the name may
8424 be omitted if it does not apply.
8425 @end table
8427 The values assigned to cache variables may not contain newlines.
8428 Usually, their values are Boolean (@samp{yes} or @samp{no}) or the
8429 names of files or functions; so this is not an important restriction.
8431 @node Cache Files
8432 @subsection Cache Files
8434 A cache file is a shell script that caches the results of configure
8435 tests run on one system so they can be shared between configure scripts
8436 and configure runs.  It is not useful on other systems.  If its contents
8437 are invalid for some reason, the user may delete or edit it.
8439 By default, @command{configure} uses no cache file,
8440 to avoid problems caused by accidental
8441 use of stale cache files.
8443 To enable caching, @command{configure} accepts @option{--config-cache} (or
8444 @option{-C}) to cache results in the file @file{config.cache}.
8445 Alternatively, @option{--cache-file=@var{file}} specifies that
8446 @var{file} be the cache file.  The cache file is created if it does not
8447 exist already.  When @command{configure} calls @command{configure} scripts in
8448 subdirectories, it uses the @option{--cache-file} argument so that they
8449 share the same cache.  @xref{Subdirectories}, for information on
8450 configuring subdirectories with the @code{AC_CONFIG_SUBDIRS} macro.
8452 @file{config.status} only pays attention to the cache file if it is
8453 given the @option{--recheck} option, which makes it rerun
8454 @command{configure}.
8456 It is wrong to try to distribute cache files for particular system types.
8457 There is too much room for error in doing that, and too much
8458 administrative overhead in maintaining them.  For any features that
8459 can't be guessed automatically, use the standard method of the canonical
8460 system type and linking files (@pxref{Manual Configuration}).
8462 The site initialization script can specify a site-wide cache file to
8463 use, instead of the usual per-program cache.  In this case, the cache
8464 file gradually accumulates information whenever someone runs a new
8465 @command{configure} script.  (Running @command{configure} merges the new cache
8466 results with the existing cache file.)  This may cause problems,
8467 however, if the system configuration (e.g., the installed libraries or
8468 compilers) changes and the stale cache file is not deleted.
8470 @node Cache Checkpointing
8471 @subsection Cache Checkpointing
8473 If your configure script, or a macro called from @file{configure.ac}, happens
8474 to abort the configure process, it may be useful to checkpoint the cache
8475 a few times at key points using @code{AC_CACHE_SAVE}.  Doing so
8476 reduces the amount of time it takes to rerun the configure script with
8477 (hopefully) the error that caused the previous abort corrected.
8479 @c FIXME: Do we really want to document this guy?
8480 @defmac AC_CACHE_LOAD
8481 @acindex{CACHE_LOAD}
8482 Loads values from existing cache file, or creates a new cache file if a
8483 cache file is not found.  Called automatically from @code{AC_INIT}.
8484 @end defmac
8486 @defmac AC_CACHE_SAVE
8487 @acindex{CACHE_SAVE}
8488 Flushes all cached values to the cache file.  Called automatically from
8489 @code{AC_OUTPUT}, but it can be quite useful to call
8490 @code{AC_CACHE_SAVE} at key points in @file{configure.ac}.
8491 @end defmac
8493 For instance:
8495 @example
8496 @r{ @dots{} AC_INIT, etc. @dots{}}
8497 @group
8498 # Checks for programs.
8499 AC_PROG_CC
8500 AC_PROG_AWK
8501 @r{ @dots{} more program checks @dots{}}
8502 AC_CACHE_SAVE
8503 @end group
8505 @group
8506 # Checks for libraries.
8507 AC_CHECK_LIB([nsl], [gethostbyname])
8508 AC_CHECK_LIB([socket], [connect])
8509 @r{ @dots{} more lib checks @dots{}}
8510 AC_CACHE_SAVE
8511 @end group
8513 @group
8514 # Might abort@dots{}
8515 AM_PATH_GTK([1.0.2], [], [AC_MSG_ERROR([GTK not in path])])
8516 AM_PATH_GTKMM([0.9.5], [], [AC_MSG_ERROR([GTK not in path])])
8517 @end group
8518 @r{ @dots{} AC_OUTPUT, etc. @dots{}}
8519 @end example
8521 @node Printing Messages
8522 @section Printing Messages
8523 @cindex Messages, from @command{configure}
8525 @command{configure} scripts need to give users running them several kinds
8526 of information.  The following macros print messages in ways appropriate
8527 for each kind.  The arguments to all of them get enclosed in shell
8528 double quotes, so the shell performs variable and back-quote
8529 substitution on them.
8531 These macros are all wrappers around the @command{echo} shell command.
8532 They direct output to the appropriate file descriptor (@pxref{File
8533 Descriptor Macros}).
8534 @command{configure} scripts should rarely need to run @command{echo} directly
8535 to print messages for the user.  Using these macros makes it easy to
8536 change how and when each kind of message is printed; such changes need
8537 only be made to the macro definitions and all the callers change
8538 automatically.
8540 To diagnose static issues, i.e., when @command{autoconf} is run, see
8541 @ref{Reporting Messages}.
8543 @defmac AC_MSG_CHECKING (@var{feature-description})
8544 @acindex{MSG_CHECKING}
8545 Notify the user that @command{configure} is checking for a particular
8546 feature.  This macro prints a message that starts with @samp{checking }
8547 and ends with @samp{...} and no newline.  It must be followed by a call
8548 to @code{AC_MSG_RESULT} to print the result of the check and the
8549 newline.  The @var{feature-description} should be something like
8550 @samp{whether the Fortran compiler accepts C++ comments} or @samp{for
8551 c89}.
8553 This macro prints nothing if @command{configure} is run with the
8554 @option{--quiet} or @option{--silent} option.
8555 @end defmac
8557 @defmac AC_MSG_RESULT (@var{result-description})
8558 @acindex{MSG_RESULT}
8559 Notify the user of the results of a check.  @var{result-description} is
8560 almost always the value of the cache variable for the check, typically
8561 @samp{yes}, @samp{no}, or a file name.  This macro should follow a call
8562 to @code{AC_MSG_CHECKING}, and the @var{result-description} should be
8563 the completion of the message printed by the call to
8564 @code{AC_MSG_CHECKING}.
8566 This macro prints nothing if @command{configure} is run with the
8567 @option{--quiet} or @option{--silent} option.
8568 @end defmac
8570 @defmac AC_MSG_NOTICE (@var{message})
8571 @acindex{MSG_NOTICE}
8572 Deliver the @var{message} to the user.  It is useful mainly to print a
8573 general description of the overall purpose of a group of feature checks,
8574 e.g.,
8576 @example
8577 AC_MSG_NOTICE([checking if stack overflow is detectable])
8578 @end example
8580 This macro prints nothing if @command{configure} is run with the
8581 @option{--quiet} or @option{--silent} option.
8582 @end defmac
8584 @defmac AC_MSG_ERROR (@var{error-description}, @ovar{exit-status})
8585 @acindex{MSG_ERROR}
8586 Notify the user of an error that prevents @command{configure} from
8587 completing.  This macro prints an error message to the standard error
8588 output and exits @command{configure} with @var{exit-status} (1 by default).
8589 @var{error-description} should be something like @samp{invalid value
8590 $HOME for \$HOME}.
8592 The @var{error-description} should start with a lower-case letter, and
8593 ``cannot'' is preferred to ``can't''.
8594 @end defmac
8596 @defmac AC_MSG_FAILURE (@var{error-description}, @ovar{exit-status})
8597 @acindex{MSG_FAILURE}
8598 This @code{AC_MSG_ERROR} wrapper notifies the user of an error that
8599 prevents @command{configure} from completing @emph{and} that additional
8600 details are provided in @file{config.log}.  This is typically used when
8601 abnormal results are found during a compilation.
8602 @end defmac
8604 @defmac AC_MSG_WARN (@var{problem-description})
8605 @acindex{MSG_WARN}
8606 Notify the @command{configure} user of a possible problem.  This macro
8607 prints the message to the standard error output; @command{configure}
8608 continues running afterward, so macros that call @code{AC_MSG_WARN} should
8609 provide a default (back-up) behavior for the situations they warn about.
8610 @var{problem-description} should be something like @samp{ln -s seems to
8611 make hard links}.
8612 @end defmac
8616 @c ====================================================== Programming in M4.
8618 @node Programming in M4
8619 @chapter Programming in M4
8620 @cindex M4
8622 Autoconf is written on top of two layers: @dfn{M4sugar}, which provides
8623 convenient macros for pure M4 programming, and @dfn{M4sh}, which
8624 provides macros dedicated to shell script generation.
8626 As of this version of Autoconf, these two layers are still experimental,
8627 and their interface might change in the future.  As a matter of fact,
8628 @emph{anything that is not documented must not be used}.
8630 @menu
8631 * M4 Quotation::                Protecting macros from unwanted expansion
8632 * Using autom4te::              The Autoconf executables backbone
8633 * Programming in M4sugar::      Convenient pure M4 macros
8634 * Programming in M4sh::         Common shell Constructs
8635 * File Descriptor Macros::      File descriptor macros for input and output
8636 @end menu
8638 @node M4 Quotation
8639 @section M4 Quotation
8640 @cindex M4 quotation
8641 @cindex quotation
8643 @c FIXME: Grmph, yet another quoting myth: quotation has *never*
8644 @c prevented `expansion' of $1.  Unless it refers to the expansion
8645 @c of the value of $1?  Anyway, we need a rewrite here@enddots{}
8647 The most common problem with existing macros is an improper quotation.
8648 This section, which users of Autoconf can skip, but which macro writers
8649 @emph{must} read, first justifies the quotation scheme that was chosen
8650 for Autoconf and then ends with a rule of thumb.  Understanding the
8651 former helps one to follow the latter.
8653 @menu
8654 * Active Characters::           Characters that change the behavior of M4
8655 * One Macro Call::              Quotation and one macro call
8656 * Quotation and Nested Macros::  Macros calling macros
8657 * Changequote is Evil::         Worse than INTERCAL: M4 + changequote
8658 * Quadrigraphs::                Another way to escape special characters
8659 * Quotation Rule Of Thumb::     One parenthesis, one quote
8660 @end menu
8662 @node Active Characters
8663 @subsection Active Characters
8665 To fully understand where proper quotation is important, you first need
8666 to know what the special characters are in Autoconf: @samp{#} introduces
8667 a comment inside which no macro expansion is performed, @samp{,}
8668 separates arguments, @samp{[} and @samp{]} are the quotes themselves,
8669 and finally @samp{(} and @samp{)} (which M4 tries to match by
8670 pairs).
8672 In order to understand the delicate case of macro calls, we first have
8673 to present some obvious failures.  Below they are ``obvious-ified'',
8674 but when you find them in real life, they are usually in disguise.
8676 Comments, introduced by a hash and running up to the newline, are opaque
8677 tokens to the top level: active characters are turned off, and there is
8678 no macro expansion:
8680 @example
8681 # define([def], ine)
8682 @result{}# define([def], ine)
8683 @end example
8685 Each time there can be a macro expansion, there is a quotation
8686 expansion, i.e., one level of quotes is stripped:
8688 @example
8689 int tab[10];
8690 @result{}int tab10;
8691 [int tab[10];]
8692 @result{}int tab[10];
8693 @end example
8695 Without this in mind, the reader might try hopelessly to use her macro
8696 @code{array}:
8698 @example
8699 define([array], [int tab[10];])
8700 array
8701 @result{}int tab10;
8702 [array]
8703 @result{}array
8704 @end example
8706 @noindent
8707 How can you correctly output the intended results@footnote{Using
8708 @code{defn}.}?
8711 @node One Macro Call
8712 @subsection One Macro Call
8714 Let's proceed on the interaction between active characters and macros
8715 with this small macro, which just returns its first argument:
8717 @example
8718 define([car], [$1])
8719 @end example
8721 @noindent
8722 The two pairs of quotes above are not part of the arguments of
8723 @code{define}; rather, they are understood by the top level when it
8724 tries to find the arguments of @code{define}.  Therefore, assuming
8725 @code{car} is not already defined, it is equivalent to write:
8727 @example
8728 define(car, $1)
8729 @end example
8731 @noindent
8732 But, while it is acceptable for a @file{configure.ac} to avoid unnecessary
8733 quotes, it is bad practice for Autoconf macros which must both be more
8734 robust and also advocate perfect style.
8736 At the top level, there are only two possibilities: either you
8737 quote or you don't:
8739 @example
8740 car(foo, bar, baz)
8741 @result{}foo
8742 [car(foo, bar, baz)]
8743 @result{}car(foo, bar, baz)
8744 @end example
8746 Let's pay attention to the special characters:
8748 @example
8749 car(#)
8750 @error{}EOF in argument list
8751 @end example
8753 The closing parenthesis is hidden in the comment; with a hypothetical
8754 quoting, the top level understood it this way:
8756 @example
8757 car([#)]
8758 @end example
8760 @noindent
8761 Proper quotation, of course, fixes the problem:
8763 @example
8764 car([#])
8765 @result{}#
8766 @end example
8768 Here are more examples:
8770 @example
8771 car(foo, bar)
8772 @result{}foo
8773 car([foo, bar])
8774 @result{}foo, bar
8775 car((foo, bar))
8776 @result{}(foo, bar)
8777 car([(foo], [bar)])
8778 @result{}(foo
8779 define([a], [b])
8780 @result{}
8781 car(a)
8782 @result{}b
8783 car([a])
8784 @result{}b
8785 car([[a]])
8786 @result{}a
8787 car([[[a]]])
8788 @result{}[a]
8789 @end example
8791 With this in mind, we can explore the cases where macros invoke
8792 macros@enddots{}
8795 @node Quotation and Nested Macros
8796 @subsection Quotation and Nested Macros
8798 The examples below use the following macros:
8800 @example
8801 define([car], [$1])
8802 define([active], [ACT, IVE])
8803 define([array], [int tab[10]])
8804 @end example
8806 Each additional embedded macro call introduces other possible
8807 interesting quotations:
8809 @example
8810 car(active)
8811 @result{}ACT
8812 car([active])
8813 @result{}ACT, IVE
8814 car([[active]])
8815 @result{}active
8816 @end example
8818 In the first case, the top level looks for the arguments of @code{car},
8819 and finds @samp{active}.  Because M4 evaluates its arguments
8820 before applying the macro, @samp{active} is expanded, which results in:
8822 @example
8823 car(ACT, IVE)
8824 @result{}ACT
8825 @end example
8827 @noindent
8828 In the second case, the top level gives @samp{active} as first and only
8829 argument of @code{car}, which results in:
8831 @example
8832 active
8833 @result{}ACT, IVE
8834 @end example
8836 @noindent
8837 i.e., the argument is evaluated @emph{after} the macro that invokes it.
8838 In the third case, @code{car} receives @samp{[active]}, which results in:
8840 @example
8841 [active]
8842 @result{}active
8843 @end example
8845 @noindent
8846 exactly as we already saw above.
8848 The example above, applied to a more realistic example, gives:
8850 @example
8851 car(int tab[10];)
8852 @result{}int tab10;
8853 car([int tab[10];])
8854 @result{}int tab10;
8855 car([[int tab[10];]])
8856 @result{}int tab[10];
8857 @end example
8859 @noindent
8860 Huh?  The first case is easily understood, but why is the second wrong,
8861 and the third right?  To understand that, you must know that after
8862 M4 expands a macro, the resulting text is immediately subjected
8863 to macro expansion and quote removal.  This means that the quote removal
8864 occurs twice---first before the argument is passed to the @code{car}
8865 macro, and second after the @code{car} macro expands to the first
8866 argument.
8868 As the author of the Autoconf macro @code{car}, you then consider it to
8869 be incorrect that your users have to double-quote the arguments of
8870 @code{car}, so you ``fix'' your macro.  Let's call it @code{qar} for
8871 quoted car:
8873 @example
8874 define([qar], [[$1]])
8875 @end example
8877 @noindent
8878 and check that @code{qar} is properly fixed:
8880 @example
8881 qar([int tab[10];])
8882 @result{}int tab[10];
8883 @end example
8885 @noindent
8886 Ahhh!  That's much better.
8888 But note what you've done: now that the arguments are literal strings,
8889 if the user wants to use the results of expansions as arguments, she has
8890 to use an @emph{unquoted} macro call:
8892 @example
8893 qar(active)
8894 @result{}ACT
8895 @end example
8897 @noindent
8898 where she wanted to reproduce what she used to do with @code{car}:
8900 @example
8901 car([active])
8902 @result{}ACT, IVE
8903 @end example
8905 @noindent
8906 Worse yet: she wants to use a macro that produces a set of @code{cpp}
8907 macros:
8909 @example
8910 define([my_includes], [#include <stdio.h>])
8911 car([my_includes])
8912 @result{}#include <stdio.h>
8913 qar(my_includes)
8914 @error{}EOF in argument list
8915 @end example
8917 This macro, @code{qar}, because it double quotes its arguments, forces
8918 its users to leave their macro calls unquoted, which is dangerous.
8919 Commas and other active symbols are interpreted by M4 before
8920 they are given to the macro, often not in the way the users expect.
8921 Also, because @code{qar} behaves differently from the other macros,
8922 it's an exception that should be avoided in Autoconf.
8924 @node Changequote is Evil
8925 @subsection @code{changequote} is Evil
8926 @cindex @code{changequote}
8928 The temptation is often high to bypass proper quotation, in particular
8929 when it's late at night.  Then, many experienced Autoconf hackers
8930 finally surrender to the dark side of the force and use the ultimate
8931 weapon: @code{changequote}.
8933 The M4 builtin @code{changequote} belongs to a set of primitives that
8934 allow one to adjust the syntax of the language to adjust it to one's
8935 needs.  For instance, by default M4 uses @samp{`} and @samp{'} as
8936 quotes, but in the context of shell programming (and actually of most
8937 programming languages), that's about the worst choice one can make:
8938 because of strings and back-quoted expressions in shell code (such as
8939 @samp{'this'} and @samp{`that`}), because of literal characters in usual
8940 programming languages (as in @samp{'0'}), there are many unbalanced
8941 @samp{`} and @samp{'}.  Proper M4 quotation then becomes a nightmare, if
8942 not impossible.  In order to make M4 useful in such a context, its
8943 designers have equipped it with @code{changequote}, which makes it
8944 possible to choose another pair of quotes.  M4sugar, M4sh, Autoconf, and
8945 Autotest all have chosen to use @samp{[} and @samp{]}.  Not especially
8946 because they are unlikely characters, but @emph{because they are
8947 characters unlikely to be unbalanced}.
8949 There are other magic primitives, such as @code{changecom} to specify
8950 what syntactic forms are comments (it is common to see
8951 @samp{changecom(<!--, -->)} when M4 is used to produce HTML pages),
8952 @code{changeword} and @code{changesyntax} to change other syntactic
8953 details (such as the character to denote the @var{n}th argument, @samp{$} by
8954 default, the parenthesis around arguments, etc.).
8956 These primitives are really meant to make M4 more useful for specific
8957 domains: they should be considered like command line options:
8958 @option{--quotes}, @option{--comments}, @option{--words}, and
8959 @option{--syntax}.  Nevertheless, they are implemented as M4 builtins, as
8960 it makes M4 libraries self contained (no need for additional options).
8962 There lies the problem@enddots{}
8964 @sp 1
8966 The problem is that it is then tempting to use them in the middle of an
8967 M4 script, as opposed to its initialization.  This, if not carefully
8968 thought out, can lead to disastrous effects: @emph{you are changing the
8969 language in the middle of the execution}.  Changing and restoring the
8970 syntax is often not enough: if you happened to invoke macros in between,
8971 these macros are lost, as the current syntax is probably not
8972 the one they were implemented with.
8974 @c FIXME: I've been looking for a short, real case example, but I
8975 @c lost them all :(
8978 @node Quadrigraphs
8979 @subsection Quadrigraphs
8980 @cindex quadrigraphs
8981 @cindex @samp{@@S|@@}
8982 @cindex @samp{@@&t@@}
8983 @c Info cannot handle `:' in index entries.
8984 @c @cindex @samp{@@<:@@}
8985 @c @cindex @samp{@@:>@@}
8986 @c @cindex @samp{@@%:@@}
8988 When writing an Autoconf macro you may occasionally need to generate
8989 special characters that are difficult to express with the standard
8990 Autoconf quoting rules.  For example, you may need to output the regular
8991 expression @samp{[^[]}, which matches any character other than @samp{[}.
8992 This expression contains unbalanced brackets so it cannot be put easily
8993 into an M4 macro.
8995 You can work around this problem by using one of the following
8996 @dfn{quadrigraphs}:
8998 @table @samp
8999 @item @@<:@@
9000 @samp{[}
9001 @item @@:>@@
9002 @samp{]}
9003 @item @@S|@@
9004 @samp{$}
9005 @item @@%:@@
9006 @samp{#}
9007 @item @@&t@@
9008 Expands to nothing.
9009 @end table
9011 Quadrigraphs are replaced at a late stage of the translation process,
9012 after @command{m4} is run, so they do not get in the way of M4 quoting.
9013 For example, the string @samp{^@@<:@@}, independently of its quotation,
9014 appears as @samp{^[} in the output.
9016 The empty quadrigraph can be used:
9018 @itemize @minus
9019 @item to mark trailing spaces explicitly
9021 Trailing spaces are smashed by @command{autom4te}.  This is a feature.
9023 @item to produce other quadrigraphs
9025 For instance @samp{@@<@@&t@@:@@} produces @samp{@@<:@@}.
9027 @item to escape @emph{occurrences} of forbidden patterns
9029 For instance you might want to mention @code{AC_FOO} in a comment, while
9030 still being sure that @command{autom4te} still catches unexpanded
9031 @samp{AC_*}.  Then write @samp{AC@@&t@@_FOO}.
9032 @end itemize
9034 The name @samp{@@&t@@} was suggested by Paul Eggert:
9036 @quotation
9037 I should give some credit to the @samp{@@&t@@} pun.  The @samp{&} is my
9038 own invention, but the @samp{t} came from the source code of the
9039 @sc{algol68c} compiler, written by Steve Bourne (of Bourne shell fame),
9040 and which used @samp{mt} to denote the empty string.  In C, it would
9041 have looked like something like:
9043 @example
9044 char const mt[] = "";
9045 @end example
9047 @noindent
9048 but of course the source code was written in Algol 68.
9050 I don't know where he got @samp{mt} from: it could have been his own
9051 invention, and I suppose it could have been a common pun around the
9052 Cambridge University computer lab at the time.
9053 @end quotation
9055 @node Quotation Rule Of Thumb
9056 @subsection Quotation Rule Of Thumb
9058 To conclude, the quotation rule of thumb is:
9060 @center @emph{One pair of quotes per pair of parentheses.}
9062 Never over-quote, never under-quote, in particular in the definition of
9063 macros.  In the few places where the macros need to use brackets
9064 (usually in C program text or regular expressions), properly quote
9065 @emph{the arguments}!
9067 It is common to read Autoconf programs with snippets like:
9069 @example
9070 AC_TRY_LINK(
9071 changequote(<<, >>)dnl
9072 <<#include <time.h>
9073 #ifndef tzname /* For SGI.  */
9074 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
9075 #endif>>,
9076 changequote([, ])dnl
9077 [atoi (*tzname);], ac_cv_var_tzname=yes, ac_cv_var_tzname=no)
9078 @end example
9080 @noindent
9081 which is incredibly useless since @code{AC_TRY_LINK} is @emph{already}
9082 double quoting, so you just need:
9084 @example
9085 AC_TRY_LINK(
9086 [#include <time.h>
9087 #ifndef tzname /* For SGI.  */
9088 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
9089 #endif],
9090             [atoi (*tzname);],
9091             [ac_cv_var_tzname=yes],
9092             [ac_cv_var_tzname=no])
9093 @end example
9095 @noindent
9096 The M4-fluent reader might note that these two examples are rigorously
9097 equivalent, since M4 swallows both the @samp{changequote(<<, >>)}
9098 and @samp{<<} @samp{>>} when it @dfn{collects} the arguments: these
9099 quotes are not part of the arguments!
9101 Simplified, the example above is just doing this:
9103 @example
9104 changequote(<<, >>)dnl
9105 <<[]>>
9106 changequote([, ])dnl
9107 @end example
9109 @noindent
9110 instead of simply:
9112 @example
9113 [[]]
9114 @end example
9116 With macros that do not double quote their arguments (which is the
9117 rule), double-quote the (risky) literals:
9119 @example
9120 AC_LINK_IFELSE([AC_LANG_PROGRAM(
9121 [[#include <time.h>
9122 #ifndef tzname /* For SGI.  */
9123 extern char *tzname[]; /* RS6000 and others reject char **tzname.  */
9124 #endif]],
9125                                 [atoi (*tzname);])],
9126                [ac_cv_var_tzname=yes],
9127                [ac_cv_var_tzname=no])
9128 @end example
9130 Please note that the macro @code{AC_TRY_LINK} is obsolete, so you really
9131 should be using @code{AC_LINK_IFELSE} instead.
9133 @xref{Quadrigraphs}, for what to do if you run into a hopeless case
9134 where quoting does not suffice.
9136 When you create a @command{configure} script using newly written macros,
9137 examine it carefully to check whether you need to add more quotes in
9138 your macros.  If one or more words have disappeared in the M4
9139 output, you need more quotes.  When in doubt, quote.
9141 However, it's also possible to put on too many layers of quotes.  If
9142 this happens, the resulting @command{configure} script may contain
9143 unexpanded macros.  The @command{autoconf} program checks for this problem
9144 by looking for the string @samp{AC_} in @file{configure}.  However, this
9145 heuristic does not work in general: for example, it does not catch
9146 overquoting in @code{AC_DEFINE} descriptions.
9149 @c ---------------------------------------- Using autom4te
9151 @node Using autom4te
9152 @section Using @command{autom4te}
9154 The Autoconf suite, including M4sugar, M4sh, and Autotest, in addition
9155 to Autoconf per se, heavily rely on M4.  All these different uses
9156 revealed common needs factored into a layer over @command{m4}:
9157 @command{autom4te}@footnote{
9159 Yet another great name from Lars J. Aas.
9163 @command{autom4te} is a preprocessor that is like @command{m4}.
9164 It supports M4 extensions designed for use in tools like Autoconf.
9166 @menu
9167 * autom4te Invocation::         A @acronym{GNU} M4 wrapper
9168 * Customizing autom4te::        Customizing the Autoconf package
9169 @end menu
9171 @node autom4te Invocation
9172 @subsection Invoking @command{autom4te}
9174 The command line arguments are modeled after M4's:
9176 @example
9177 autom4te @var{options} @var{files}
9178 @end example
9180 @noindent
9181 @evindex M4
9182 where the @var{files} are directly passed to @command{m4}.  By default,
9183 @acronym{GNU} m4 is found during configure, but the environment variable
9184 @env{M4} can be set to tell @command{autom4te} where to look.  In addition
9185 to the regular expansion, it handles the replacement of the quadrigraphs
9186 (@pxref{Quadrigraphs}), and of @samp{__oline__}, the current line in the
9187 output.  It supports an extended syntax for the @var{files}:
9189 @table @file
9190 @item @var{file}.m4f
9191 This file is an M4 frozen file.  Note that @emph{all the previous files
9192 are ignored}.  See the option @option{--melt} for the rationale.
9194 @item @var{file}?
9195 If found in the library path, the @var{file} is included for expansion,
9196 otherwise it is ignored instead of triggering a failure.
9197 @end table
9199 @sp 1
9201 Of course, it supports the Autoconf common subset of options:
9203 @table @option
9204 @item --help
9205 @itemx -h
9206 Print a summary of the command line options and exit.
9208 @item --version
9209 @itemx -V
9210 Print the version number of Autoconf and exit.
9212 @item --verbose
9213 @itemx -v
9214 Report processing steps.
9216 @item --debug
9217 @itemx -d
9218 Don't remove the temporary files and be even more verbose.
9220 @item --include=@var{dir}
9221 @itemx -I @var{dir}
9222 Also look for input files in @var{dir}.  Multiple invocations
9223 accumulate.
9225 @item --output=@var{file}
9226 @itemx -o @var{file}
9227 Save output (script or trace) to @var{file}.  The file @option{-} stands
9228 for the standard output.
9229 @end table
9231 @sp 1
9233 As an extension of @command{m4}, it includes the following options:
9235 @table @option
9236 @item --warnings=@var{category}
9237 @itemx -W @var{category}
9238 @evindex WARNINGS
9239 @c FIXME: Point to the M4sugar macros, not Autoconf's.
9240 Report the warnings related to @var{category} (which can actually be a
9241 comma separated list).  @xref{Reporting Messages}, macro
9242 @code{AC_DIAGNOSE}, for a comprehensive list of categories.  Special
9243 values include:
9245 @table @samp
9246 @item all
9247 report all the warnings
9249 @item none
9250 report none
9252 @item error
9253 treats warnings as errors
9255 @item no-@var{category}
9256 disable warnings falling into @var{category}
9257 @end table
9259 Warnings about @samp{syntax} are enabled by default, and the environment
9260 variable @env{WARNINGS}, a comma separated list of categories, is
9261 honored.  @samp{autom4te -W @var{category}} actually
9262 behaves as if you had run:
9264 @example
9265 autom4te --warnings=syntax,$WARNINGS,@var{category}
9266 @end example
9268 @noindent
9269 For example, if you want to disable defaults and @env{WARNINGS}
9270 of @command{autom4te}, but enable the warnings about obsolete
9271 constructs, you would use @option{-W none,obsolete}.
9273 @cindex Back trace
9274 @cindex Macro invocation stack
9275 @command{autom4te} displays a back trace for errors, but not for
9276 warnings; if you want them, just pass @option{-W error}.
9278 @item --melt
9279 @itemx -M
9280 Do not use frozen files.  Any argument @code{@var{file}.m4f} is
9281 replaced by @code{@var{file}.m4}.  This helps tracing the macros which
9282 are executed only when the files are frozen, typically
9283 @code{m4_define}.  For instance, running:
9285 @example
9286 autom4te --melt 1.m4 2.m4f 3.m4 4.m4f input.m4
9287 @end example
9289 @noindent
9290 is roughly equivalent to running:
9292 @example
9293 m4 1.m4 2.m4 3.m4 4.m4 input.m4
9294 @end example
9296 @noindent
9297 while
9299 @example
9300 autom4te 1.m4 2.m4f 3.m4 4.m4f input.m4
9301 @end example
9303 @noindent
9304 is equivalent to:
9306 @example
9307 m4 --reload-state=4.m4f input.m4
9308 @end example
9310 @item --freeze
9311 @itemx -f
9312 Produce a frozen state file.  @command{autom4te} freezing is stricter
9313 than M4's: it must produce no warnings, and no output other than empty
9314 lines (a line with white space is @emph{not} empty) and comments
9315 (starting with @samp{#}).  Please, note that contrary to @command{m4},
9316 this options takes no argument:
9318 @example
9319 autom4te 1.m4 2.m4 3.m4 --freeze --output=3.m4f
9320 @end example
9322 @noindent
9323 corresponds to
9325 @example
9326 m4 1.m4 2.m4 3.m4 --freeze-state=3.m4f
9327 @end example
9329 @item --mode=@var{octal-mode}
9330 @itemx -m @var{octal-mode}
9331 Set the mode of the non-traces output to @var{octal-mode}; by default
9332 @samp{0666}.
9333 @end table
9335 @sp 1
9337 @cindex @file{autom4te.cache}
9338 As another additional feature over @command{m4}, @command{autom4te}
9339 caches its results.  @acronym{GNU} M4 is able to produce a regular
9340 output and traces at the same time.  Traces are heavily used in the
9341 @acronym{GNU} Build System: @command{autoheader} uses them to build
9342 @file{config.h.in}, @command{autoreconf} to determine what
9343 @acronym{GNU} Build System components are used, @command{automake} to
9344 ``parse'' @file{configure.ac} etc.  To save the long runs of
9345 @command{m4}, traces are cached while performing regular expansion,
9346 and conversely.  This cache is (actually, the caches are) stored in
9347 the directory @file{autom4te.cache}.  @emph{It can safely be removed}
9348 at any moment (especially if for some reason @command{autom4te}
9349 considers it is trashed).
9351 @table @option
9352 @item --cache=@var{directory}
9353 @itemx -C @var{directory}
9354 Specify the name of the directory where the result should be cached.
9355 Passing an empty value disables caching.  Be sure to pass a relative
9356 file name, as for the time being, global caches are not supported.
9358 @item --no-cache
9359 Don't cache the results.
9361 @item --force
9362 @itemx -f
9363 If a cache is used, consider it obsolete (but update it anyway).
9364 @end table
9366 @sp 1
9368 Because traces are so important to the @acronym{GNU} Build System,
9369 @command{autom4te} provides high level tracing features as compared to
9370 M4, and helps exploiting the cache:
9372 @table @option
9373 @item --trace=@var{macro}[:@var{format}]
9374 @itemx -t @var{macro}[:@var{format}]
9375 Trace the invocations of @var{macro} according to the @var{format}.
9376 Multiple @option{--trace} arguments can be used to list several macros.
9377 Multiple @option{--trace} arguments for a single macro are not
9378 cumulative; instead, you should just make @var{format} as long as
9379 needed.
9381 The @var{format} is a regular string, with newlines if desired, and
9382 several special escape codes.  It defaults to @samp{$f:$l:$n:$%}.  It can
9383 use the following special escapes:
9385 @table @samp
9386 @item $$
9387 The character @samp{$}.
9389 @item $f
9390 The file name from which @var{macro} is called.
9392 @item $l
9393 The line number from which @var{macro} is called.
9395 @item $d
9396 The depth of the @var{macro} call.  This is an M4 technical detail that
9397 you probably don't want to know about.
9399 @item $n
9400 The name of the @var{macro}.
9402 @item $@var{num}
9403 The @var{num}th argument of the call to @var{macro}.
9405 @item $@@
9406 @itemx $@var{sep}@@
9407 @itemx $@{@var{separator}@}@@
9408 All the arguments passed to @var{macro}, separated by the character
9409 @var{sep} or the string @var{separator} (@samp{,} by default).  Each
9410 argument is quoted, i.e., enclosed in a pair of square brackets.
9412 @item $*
9413 @itemx $@var{sep}*
9414 @itemx $@{@var{separator}@}*
9415 As above, but the arguments are not quoted.
9417 @item $%
9418 @itemx $@var{sep}%
9419 @itemx $@{@var{separator}@}%
9420 As above, but the arguments are not quoted, all new line characters in
9421 the arguments are smashed, and the default separator is @samp{:}.
9423 The escape @samp{$%} produces single-line trace outputs (unless you put
9424 newlines in the @samp{separator}), while @samp{$@@} and @samp{$*} do
9425 not.
9426 @end table
9428 @xref{autoconf Invocation}, for examples of trace uses.
9430 @item --preselect=@var{macro}
9431 @itemx -p @var{macro}
9432 Cache the traces of @var{macro}, but do not enable traces.  This is
9433 especially important to save CPU cycles in the future.  For instance,
9434 when invoked, @command{autoconf} preselects all the macros that
9435 @command{autoheader}, @command{automake}, @command{autoreconf}, etc.,
9436 trace, so that running @command{m4} is not needed to trace them: the
9437 cache suffices.  This results in a huge speed-up.
9438 @end table
9440 @sp 1
9442 @cindex Autom4te Library
9443 Finally, @command{autom4te} introduces the concept of @dfn{Autom4te
9444 libraries}.  They consists in a powerful yet extremely simple feature:
9445 sets of combined command line arguments:
9447 @table @option
9448 @item --language=@var{language}
9449 @itemx -l @var{language}
9450 Use the @var{language} Autom4te library.  Current languages include:
9452 @table @code
9453 @item M4sugar
9454 create M4sugar output.
9456 @item M4sh
9457 create M4sh executable shell scripts.
9459 @item Autotest
9460 create Autotest executable test suites.
9462 @item Autoconf-without-aclocal-m4
9463 create Autoconf executable configure scripts without
9464 reading @file{aclocal.m4}.
9466 @item Autoconf
9467 create Autoconf executable configure scripts.  This language inherits
9468 all the characteristics of @code{Autoconf-without-aclocal-m4} and
9469 additionally reads @file{aclocal.m4}.
9470 @end table
9472 @item --prepend-include=@var{dir}
9473 @item -B @var{dir}
9474 Prepend directory @var{dir} to the search path.  This is used to include
9475 the language-specific files before any third-party macros.
9477 @end table
9479 @cindex @file{autom4te.cfg}
9480 As an example, if Autoconf is installed in its default location,
9481 @file{/usr/local}, the command @samp{autom4te -l m4sugar foo.m4} is
9482 strictly equivalent to the command:
9484 @example
9485 autom4te --prepend-include /usr/local/share/autoconf \
9486   m4sugar/m4sugar.m4f --warnings syntax foo.m4
9487 @end example
9489 @noindent
9490 Recursive expansion applies here: the command @samp{autom4te -l m4sh foo.m4}
9491 is the same as @samp{autom4te --language M4sugar m4sugar/m4sh.m4f
9492 foo.m4}, i.e.:
9494 @example
9495 autom4te --prepend-include /usr/local/share/autoconf \
9496   m4sugar/m4sugar.m4f m4sugar/m4sh.m4f --mode 777 foo.m4
9497 @end example
9499 @noindent
9500 The definition of the languages is stored in @file{autom4te.cfg}.
9502 @node Customizing autom4te
9503 @subsection Customizing @command{autom4te}
9505 One can customize @command{autom4te} via @file{~/.autom4te.cfg} (i.e.,
9506 as found in the user home directory), and @file{./.autom4te.cfg} (i.e.,
9507 as found in the directory from which @command{autom4te} is run).  The
9508 order is first reading @file{autom4te.cfg}, then @file{~/.autom4te.cfg},
9509 then @file{./.autom4te.cfg}, and finally the command line arguments.
9511 In these text files, comments are introduced with @code{#}, and empty
9512 lines are ignored.  Customization is performed on a per-language basis,
9513 wrapped in between a @samp{begin-language: "@var{language}"},
9514 @samp{end-language: "@var{language}"} pair.
9516 Customizing a language stands for appending options (@pxref{autom4te
9517 Invocation}) to the current definition of the language.  Options, and
9518 more generally arguments, are introduced by @samp{args:
9519 @var{arguments}}.  You may use the traditional shell syntax to quote the
9520 @var{arguments}.
9522 As an example, to disable Autoconf caches (@file{autom4te.cache})
9523 globally, include the following lines in @file{~/.autom4te.cfg}:
9525 @verbatim
9526 ## ------------------ ##
9527 ## User Preferences.  ##
9528 ## ------------------ ##
9530 begin-language: "Autoconf-without-aclocal-m4"
9531 args: --no-cache
9532 end-language: "Autoconf-without-aclocal-m4"
9533 @end verbatim
9536 @node Programming in M4sugar
9537 @section Programming in M4sugar
9539 @cindex M4sugar
9540 M4 by itself provides only a small, but sufficient, set of all-purpose
9541 macros.  M4sugar introduces additional generic macros.  Its name was
9542 coined by Lars J. Aas: ``Readability And Greater Understanding Stands 4
9543 M4sugar''.
9545 @menu
9546 * Redefined M4 Macros::         M4 builtins changed in M4sugar
9547 * Looping constructs::          Iteration in M4
9548 * Evaluation Macros::           More quotation and evaluation control
9549 * Text processing Macros::      String manipulation in M4
9550 * Forbidden Patterns::          Catching unexpanded macros
9551 @end menu
9553 @node Redefined M4 Macros
9554 @subsection Redefined M4 Macros
9556 @msindex{builtin}
9557 @msindex{decr}
9558 @msindex{define}
9559 @msindex{dumpdef}
9560 @msindex{errprint}
9561 @msindex{esyscmd}
9562 @msindex{eval}
9563 @msindex{format}
9564 @msindex{ifdef}
9565 @msindex{incr}
9566 @msindex{index}
9567 @msindex{indir}
9568 @msindex{len}
9569 @msindex{maketemp}
9570 @msindex{pushdef}
9571 @msindex{shift}
9572 @msindex{substr}
9573 @msindex{syscmd}
9574 @msindex{sysval}
9575 @msindex{translit}
9576 @msindex{undefine}
9577 With a few exceptions, all the M4 native macros are moved in the
9578 @samp{m4_} pseudo-namespace, e.g., M4sugar renames @code{define} as
9579 @code{m4_define} etc.
9581 Some M4 macros are redefined, and are slightly incompatible with their
9582 native equivalent.
9584 @defmac dnl
9585 @msindex{dnl}
9586 This macro kept its original name: no @code{m4_dnl} is defined.
9587 @end defmac
9589 @defmac m4_defn (@var{macro})
9590 @msindex{defn}
9591 Contrary to the M4 builtin, this macro fails if @var{macro} is not
9592 defined.  See @code{m4_undefine}.
9593 @end defmac
9595 @defmac m4_exit (@var{exit-status})
9596 @msindex{exit}
9597 This macro corresponds to @code{m4exit}.
9598 @end defmac
9600 @defmac m4_if (@var{comment})
9601 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @ovar{not-equal})
9602 @defmacx m4_if (@var{string-1}, @var{string-2}, @var{equal}, @dots{})
9603 @msindex{if}
9604 This macro corresponds to @code{ifelse}.
9605 @end defmac
9607 @defmac m4_include (@var{file})
9608 @defmacx m4_sinclude (@var{file})
9609 @msindex{include}
9610 @msindex{sinclude}
9611 Like the M4 builtins, but warn against multiple inclusions of @var{file}.
9612 @end defmac
9614 @defmac m4_bpatsubst (@var{string}, @var{regexp}, @ovar{replacement})
9615 @msindex{bpatsubst}
9616 This macro corresponds to @code{patsubst}.  The name @code{m4_patsubst}
9617 is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
9618 provide extended regular expression syntax via @code{epatsubst}.
9619 @end defmac
9621 @defmac m4_popdef (@var{macro})
9622 @msindex{popdef}
9623 Contrary to the M4 builtin, this macro fails if @var{macro} is not
9624 defined.  See @code{m4_undefine}.
9625 @end defmac
9627 @defmac m4_bregexp (@var{string}, @var{regexp}, @ovar{replacement})
9628 @msindex{bregexp}
9629 This macro corresponds to @code{regexp}.  The name @code{m4_regexp}
9630 is kept for future versions of M4sh, on top of @acronym{GNU} M4 which will
9631 provide extended regular expression syntax via @code{eregexp}.
9632 @end defmac
9634 @defmac m4_wrap (@var{text})
9635 @msindex{wrap}
9636 This macro corresponds to @code{m4wrap}.
9638 You are encouraged to end @var{text} with @samp{[]}, so that there are
9639 no risks that two consecutive invocations of @code{m4_wrap} result in an
9640 unexpected pasting of tokens, as in
9642 @example
9643 m4_define([foo], [Foo])
9644 m4_define([bar], [Bar])
9645 m4_define([foobar], [FOOBAR])
9646 m4_wrap([bar])
9647 m4_wrap([foo])
9648 @result{}FOOBAR
9649 @end example
9650 @end defmac
9652 @defmac m4_undefine (@var{macro})
9653 @msindex{undefine}
9654 Contrary to the M4 builtin, this macro fails if @var{macro} is not
9655 defined.  Use
9657 @example
9658 m4_ifdef([@var{macro}], [m4_undefine([@var{macro}])])
9659 @end example
9661 @noindent
9662 to recover the behavior of the builtin.
9663 @end defmac
9667 @node Looping constructs
9668 @subsection Looping constructs
9670 The following macros implement loops in M4.
9672 @defmac m4_for (@var{var}, @var{first}, @var{last}, @ovar{step}, @var{expression})
9673 @msindex{for}
9674 Loop over the numeric values between @var{first} and @var{last}
9675 including bounds by increments of @var{step}.  For each iteration,
9676 expand @var{expression} with the numeric value assigned to @var{var}.
9677 If @var{step} is omitted, it defaults to @samp{1} or @samp{-1} depending
9678 on the order of the limits.  If given, @var{step} has to match this
9679 order.
9680 @end defmac
9682 @defmac m4_foreach (@var{var}, @var{list}, @var{expression})
9683 @msindex{foreach}
9684 Loop over the comma-separated m4 list @var{list}, assigning each value
9685 to @var{var}, and expand @var{expression}.  The following example
9686 outputs two lines:
9688 @example
9689 m4_foreach([myvar], [[foo], [bar, baz]],
9690            [echo myvar
9693 @end example
9694 @end defmac
9696 @defmac m4_foreach_w (@var{var}, @var{list}, @var{expression})
9697 @msindex{foreach_w}
9698 Loop over the whitespace-separated list @var{list}, assigning each value
9699 to @var{var}, and expand @var{expression}.
9701 The deprecated macro @code{AC_FOREACH} is an alias of
9702 @code{m4_foreach_w}.
9703 @end defmac
9707 @node Evaluation Macros
9708 @subsection Evaluation Macros
9710 The following macros give some control over the order of the evaluation
9711 by adding or removing levels of quotes.  They are meant for hard-core M4
9712 programmers.
9714 @defmac m4_dquote (@var{arg1}, @dots{})
9715 @msindex{dquote}
9716 Return the arguments as a quoted list of quoted arguments.
9717 @end defmac
9719 @defmac m4_quote (@var{arg1}, @dots{})
9720 @msindex{quote}
9721 Return the arguments as a single entity, i.e., wrap them into a pair of
9722 quotes.
9723 @end defmac
9725 The following example aims at emphasizing the difference between (i), not
9726 using these macros, (ii), using @code{m4_quote}, and (iii), using
9727 @code{m4_dquote}.
9729 @example
9730 $ @kbd{cat example.m4}
9731 # Overquote, so that quotes are visible.
9732 m4_define([show], [$[]1 = [$1], $[]@@ = [$@@]])
9733 m4_divert(0)dnl
9734 show(a, b)
9735 show(m4_quote(a, b))
9736 show(m4_dquote(a, b))
9737 $ @kbd{autom4te -l m4sugar example.m4}
9738 $1 = a, $@@ = [a],[b]
9739 $1 = a,b, $@@ = [a,b]
9740 $1 = [a],[b], $@@ = [[a],[b]]
9741 @end example
9745 @node Text processing Macros
9746 @subsection Text processing Macros
9748 The following macros may be used to manipulate strings in M4.
9749 They are not intended for casual use.
9751 @defmac m4_re_escape (@var{string})
9752 @msindex{re_escape}
9753 Backslash-escape all characters in @var{string} that are active in
9754 regexps.
9755 @end defmac
9757 @defmac m4_tolower (@var{string})
9758 @defmacx m4_toupper (@var{string})
9759 @msindex{tolower}
9760 @msindex{toupper}
9761 Return @var{string} with letters converted to upper or lower case,
9762 respectively.
9763 @end defmac
9765 @defmac m4_split (@var{string}, @ovar{regexp})
9766 @msindex{split}
9767 Split @var{string} into an M4 list of elements quoted by @samp{[} and
9768 @samp{]}, while keeping white space at the beginning and at the end.
9769 If @var{regexp} is given, use it instead of @samp{[\t ]+} for splitting.
9770 If @var{string} is empty, the result is an empty list.
9771 @end defmac
9773 @defmac m4_normalize (@var{string})
9774 @msindex{normalize}
9775 Remove leading and trailing spaces and tabs, sequences of
9776 backslash-then-newline, and replace multiple spaces and tabs with a
9777 single space.
9778 @end defmac
9780 @defmac m4_append (@var{macro-name}, @var{string}, @ovar{separator})
9781 @defmacx m4_append_uniq (@var{macro-name}, @var{string}, @ovar{separator})
9782 @msindex{append}
9783 @msindex{append_uniq}
9784 Redefine @var{macro-name} to its former contents with @var{separator}
9785 and @var{string} added at the end.  If @var{macro-name} was undefined
9786 before (but not if it was defined but empty), then no @var{separator} is
9787 added.  @code{m4_append} can be used to grow strings, and
9788 @code{m4_append_uniq} to grow strings without duplicating substrings.
9789 @end defmac
9793 @node Forbidden Patterns
9794 @subsection Forbidden Patterns
9795 @cindex Forbidden patterns
9796 @cindex Patterns, forbidden
9798 M4sugar provides a means to define suspicious patterns, patterns
9799 describing tokens which should not be found in the output.  For
9800 instance, if an Autoconf @file{configure} script includes tokens such as
9801 @samp{AC_DEFINE}, or @samp{dnl}, then most probably something went
9802 wrong (typically a macro was not evaluated because of overquotation).
9804 M4sugar forbids all the tokens matching @samp{^m4_} and @samp{^dnl$}.
9806 @defmac m4_pattern_forbid (@var{pattern})
9807 @msindex{pattern_forbid}
9808 Declare that no token matching @var{pattern} must be found in the output.
9809 Comments are not checked; this can be a problem if, for instance, you
9810 have some macro left unexpanded after an @samp{#include}.  No consensus
9811 is currently found in the Autoconf community, as some people consider it
9812 should be valid to name macros in comments (which doesn't make sense to
9813 the author of this documentation, as @samp{#}-comments should document
9814 the output, not the input, documented by @samp{dnl} comments).
9815 @end defmac
9817 Of course, you might encounter exceptions to these generic rules, for
9818 instance you might have to refer to @samp{$m4_flags}.
9820 @defmac m4_pattern_allow (@var{pattern})
9821 @msindex{pattern_allow}
9822 Any token matching @var{pattern} is allowed, including if it matches an
9823 @code{m4_pattern_forbid} pattern.
9824 @end defmac
9826 @node Programming in M4sh
9827 @section Programming in M4sh
9829 @c FIXME: Eventually will become a chapter, as it is not related to
9830 @c programming in M4 per se.
9832 M4sh, pronounced ``mash'', is aiming at producing portable Bourne shell
9833 scripts.  This name was coined by Lars J. Aas, who notes that,
9834 according to the Webster's Revised Unabridged Dictionary (1913):
9836 @quotation
9837 Mash \Mash\, n.  [Akin to G. meisch, maisch, meische, maische, mash,
9838 wash, and prob.@: to AS. miscian to mix.  See ``Mix''.]
9840 @enumerate 1
9841 @item
9842 A mass of mixed ingredients reduced to a soft pulpy state by beating or
9843 pressure@enddots{}
9845 @item
9846 A mixture of meal or bran and water fed to animals.
9848 @item
9849 A mess; trouble.  [Obs.] --Beau.@: & Fl.
9850 @end enumerate
9851 @end quotation
9854 For the time being, it is not mature enough to be widely used.
9856 M4sh provides portable alternatives for some common shell constructs
9857 that unfortunately are not portable in practice.
9859 @c Deprecated, to be replaced by a better API
9860 @ignore
9861 @defmac AS_BASENAME (@var{file-name})
9862 @asindex{BASENAME}
9863 Output the non-directory portion of @var{file-name}.  For example,
9864 if @code{$file} is @samp{/one/two/three}, the command
9865 @code{base=`AS_BASENAME(["$file"])`} sets @code{base} to @samp{three}.
9866 @end defmac
9867 @end ignore
9869 @defmac AS_BOURNE_COMPATIBLE
9870 @asindex{BOURNE_COMPATIBLE}
9871 Set up the shell to be more compatible with the Bourne shell as
9872 standardized by Posix, if possible.  This may involve setting
9873 environment variables, or setting options, or similar
9874 implementation-specific actions.
9875 @end defmac
9877 @defmac AS_CASE (@var{word}, @ovar{pattern1}, @ovar{if-matched1}, @dots{}, @ovar{default})
9878 @asindex{CASE}
9879 Expand into a shell @samp{case} statement, where @var{word} is matched
9880 against one or more patterns.  @var{if-matched} is run if the
9881 corresponding pattern matched @var{word}, else @var{default} is run.
9882 @end defmac
9884 @defmac AS_DIRNAME (@var{file-name})
9885 @asindex{DIRNAME}
9886 Output the directory portion of @var{file-name}.  For example,
9887 if @code{$file} is @samp{/one/two/three}, the command
9888 @code{dir=`AS_DIRNAME(["$file"])`} sets @code{dir} to @samp{/one/two}.
9889 @end defmac
9891 @defmac AS_IF (@var{test1}, @ovar{run-if-true1}, @dots{}, @ovar{run-if-false})
9892 @asindex{IF}
9893 Run shell code @var{test1}.  If @var{test1} exits with a zero status then
9894 run shell code @var{run-if-true1}, else examine further tests.  If no test
9895 exits with a zero status, run shell code @var{run-if-false}, with
9896 simplifications if either @var{run-if-true1} or @var{run-if-false1}
9897 is empty.  For example,
9899 @example
9900 AS_IF([test "$foo" = yes], [HANDLE_FOO([yes])],
9901       [test "$foo" != no], [HANDLE_FOO([maybe])],
9902       [echo foo not specified])
9903 @end example
9905 @noindent
9906 ensures any required macros of @code{HANDLE_FOO}
9907 are expanded before the first test.
9908 @end defmac
9910 @defmac AS_MKDIR_P (@var{file-name})
9911 @asindex{MKDIR_P}
9912 Make the directory @var{file-name}, including intervening directories
9913 as necessary.  This is equivalent to @samp{mkdir -p @var{file-name}},
9914 except that it is portable to older versions of @command{mkdir} that
9915 lack support for the @option{-p} option.  Also, @code{AS_MKDIR_P}
9916 succeeds if @var{file-name} is a symbolic link to an existing directory,
9917 even though Posix is unclear whether @samp{mkdir -p} should
9918 succeed in that case.  If creation of @var{file-name} fails, exit the
9919 script.
9921 Also see the @code{AC_PROG_MKDIR_P} macro (@pxref{Particular Programs}).
9922 @end defmac
9924 @defmac AS_SHELL_SANITIZE
9925 @asindex{SHELL_SANITIZE}
9926 Initialize the shell suitably for @code{configure} scripts.  This has
9927 the effect of @code{AS_BOURNE_COMPATIBLE}, and sets some other
9928 environment variables for predictable results from configuration tests.
9929 For example, it sets @env{LC_ALL} to change to the default C locale.
9930 @xref{Special Shell Variables}.
9931 @end defmac
9933 @defmac AS_TR_CPP (@var{expression})
9934 @asindex{TR_CPP}
9935 Transform @var{expression} into a valid right-hand side for a C @code{#define}.
9936 For example:
9938 @example
9939 # This outputs "#define HAVE_CHAR_P 1".
9940 type="char *"
9941 echo "#define AS_TR_CPP([HAVE_$type]) 1"
9942 @end example
9943 @end defmac
9945 @defmac AS_TR_SH (@var{expression})
9946 @asindex{TR_SH}
9947 Transform @var{expression} into a valid shell variable name.  For example:
9949 @example
9950 # This outputs "Have it!".
9951 header="sys/some file.h"
9952 AS_TR_SH([HAVE_$header])=yes
9953 if test "$HAVE_sys_some_file_h" = yes; then echo "Have it!"; fi
9954 @end example
9955 @end defmac
9957 @defmac AS_SET_CATFILE (@var{var}, @var{dir}, @var{file})
9958 @asindex{SET_CATFILE}
9959 Set the shell variable @var{var} to @var{dir}/@var{file}, but
9960 optimizing the common cases (@var{dir} or @var{file} is @samp{.},
9961 @var{file} is absolute, etc.).
9962 @end defmac
9965 @node File Descriptor Macros
9966 @section File Descriptor Macros
9967 @cindex input
9968 @cindex standard input
9969 @cindex file descriptors
9970 @cindex descriptors
9971 @cindex low-level output
9972 @cindex output, low-level
9974 The following macros define file descriptors used to output messages
9975 (or input values) from @file{configure} scripts.
9976 For example:
9978 @example
9979 echo "$wombats found" >&AS_MESSAGE_LOG_FD
9980 echo 'Enter desired kangaroo count:' >&AS_MESSAGE_FD
9981 read kangaroos <&AS_ORIGINAL_STDIN_FD`
9982 @end example
9984 @noindent
9985 However doing so is seldom needed, because Autoconf provides higher
9986 level macros as described below.
9988 @defmac AS_MESSAGE_FD
9989 @asindex{MESSAGE_FD}
9990 The file descriptor for @samp{checking for...}  messages and results.
9991 Normally this directs messages to the standard output, however when
9992 @command{configure} is run with the @option{-q} option, messages sent to
9993 @code{AS_MESSAGE_FD} are discarded.
9995 If you want to display some messages, consider using one of the printing
9996 macros (@pxref{Printing Messages}) instead.  Copies of messages output
9997 via these macros are also recorded in @file{config.log}.
9998 @end defmac
10000 @defmac AS_MESSAGE_LOG_FD
10001 @asindex{MESSAGE_LOG_FD}
10003 The file descriptor for messages logged to @file{config.log}.  Macros
10004 that run tools, like @code{AC_COMPILE_IFELSE} (@pxref{Running the
10005 Compiler}), redirect all output to this descriptor.  You may want to do
10006 so if you develop such a low-level macro.
10007 @end defmac
10009 @defmac AS_ORIGINAL_STDIN_FD
10010 @asindex{ORIGINAL_STDIN_FD}
10011 The file descriptor for the original standard input.
10013 When @command{configure} runs, it may accidentally execute an
10014 interactive command that has the same name as the non-interactive meant
10015 to be used or checked.  If the standard input was the terminal, such
10016 interactive programs would cause @command{configure} to stop, pending
10017 some user input.  Therefore @command{configure} redirects its standard
10018 input from @file{/dev/null} during its initialization.  This is not
10019 normally a problem, since @command{configure} normally does not need
10020 user input.
10022 In the extreme case where your @file{configure} script really needs to
10023 obtain some values from the original standard input, you can read them
10024 explicitly from @code{AS_ORIGINAL_STDIN_FD}.
10025 @end defmac
10028 @c =================================================== Writing Autoconf Macros.
10030 @node Writing Autoconf Macros
10031 @chapter Writing Autoconf Macros
10033 When you write a feature test that could be applicable to more than one
10034 software package, the best thing to do is encapsulate it in a new macro.
10035 Here are some instructions and guidelines for writing Autoconf macros.
10037 @menu
10038 * Macro Definitions::           Basic format of an Autoconf macro
10039 * Macro Names::                 What to call your new macros
10040 * Reporting Messages::          Notifying @command{autoconf} users
10041 * Dependencies Between Macros::  What to do when macros depend on other macros
10042 * Obsoleting Macros::           Warning about old ways of doing things
10043 * Coding Style::                Writing Autoconf macros @`a la Autoconf
10044 @end menu
10046 @node Macro Definitions
10047 @section Macro Definitions
10049 @acindex{DEFUN}
10050 Autoconf macros are defined using the @code{AC_DEFUN} macro, which is
10051 similar to the M4 builtin @code{m4_define} macro.  In addition to
10052 defining a macro, @code{AC_DEFUN} adds to it some code that is used to
10053 constrain the order in which macros are called (@pxref{Prerequisite
10054 Macros}).
10056 An Autoconf macro definition looks like this:
10058 @example
10059 AC_DEFUN(@var{macro-name}, @var{macro-body})
10060 @end example
10062 You can refer to any arguments passed to the macro as @samp{$1},
10063 @samp{$2}, etc.  @xref{Definitions, , How to define new macros, m4.info,
10064 @acronym{GNU} m4}, for more complete information on writing M4 macros.
10066 Be sure to properly quote both the @var{macro-body} @emph{and} the
10067 @var{macro-name} to avoid any problems if the macro happens to have
10068 been previously defined.
10070 Each macro should have a header comment that gives its prototype, and a
10071 brief description.  When arguments have default values, display them in
10072 the prototype.  For example:
10074 @example
10075 # AC_MSG_ERROR(ERROR, [EXIT-STATUS = 1])
10076 # --------------------------------------
10077 m4_define([AC_MSG_ERROR],
10078   [@{ AS_MESSAGE([error: $1], [2])
10079      exit m4_default([$2], [1]); @}])
10080 @end example
10082 Comments about the macro should be left in the header comment.  Most
10083 other comments make their way into @file{configure}, so just keep
10084 using @samp{#} to introduce comments.
10086 @cindex @code{dnl}
10087 If you have some special comments about pure M4 code, comments
10088 that make no sense in @file{configure} and in the header comment, then
10089 use the builtin @code{dnl}: it causes M4 to discard the text
10090 through the next newline.
10092 Keep in mind that @code{dnl} is rarely needed to introduce comments;
10093 @code{dnl} is more useful to get rid of the newlines following macros
10094 that produce no output, such as @code{AC_REQUIRE}.
10097 @node Macro Names
10098 @section Macro Names
10100 All of the Autoconf macros have all-uppercase names starting with
10101 @samp{AC_} to prevent them from accidentally conflicting with other
10102 text.  All shell variables that they use for internal purposes have
10103 mostly-lowercase names starting with @samp{ac_}.  To ensure that your
10104 macros don't conflict with present or future Autoconf macros, you should
10105 prefix your own macro names and any shell variables they use with some
10106 other sequence.  Possibilities include your initials, or an abbreviation
10107 for the name of your organization or software package.
10109 Most of the Autoconf macros' names follow a structured naming convention
10110 that indicates the kind of feature check by the name.  The macro names
10111 consist of several words, separated by underscores, going from most
10112 general to most specific.  The names of their cache variables use the
10113 same convention (@pxref{Cache Variable Names}, for more information on
10114 them).
10116 The first word of the name after @samp{AC_} usually tells the category
10117 of the feature being tested.  Here are the categories used in Autoconf for
10118 specific test macros, the kind of macro that you are more likely to
10119 write.  They are also used for cache variables, in all-lowercase.  Use
10120 them where applicable; where they're not, invent your own categories.
10122 @table @code
10123 @item C
10124 C language builtin features.
10125 @item DECL
10126 Declarations of C variables in header files.
10127 @item FUNC
10128 Functions in libraries.
10129 @item GROUP
10130 Posix group owners of files.
10131 @item HEADER
10132 Header files.
10133 @item LIB
10134 C libraries.
10135 @item PATH
10136 Absolute names of files, including programs.
10137 @item PROG
10138 The base names of programs.
10139 @item MEMBER
10140 Members of aggregates.
10141 @item SYS
10142 Operating system features.
10143 @item TYPE
10144 C builtin or declared types.
10145 @item VAR
10146 C variables in libraries.
10147 @end table
10149 After the category comes the name of the particular feature being
10150 tested.  Any further words in the macro name indicate particular aspects
10151 of the feature.  For example, @code{AC_FUNC_FNMATCH_GNU} checks whether
10152 the @code{fnmatch} function supports @acronym{GNU} extensions.
10154 An internal macro should have a name that starts with an underscore;
10155 Autoconf internals should therefore start with @samp{_AC_}.
10156 Additionally, a macro that is an internal subroutine of another macro
10157 should have a name that starts with an underscore and the name of that
10158 other macro, followed by one or more words saying what the internal
10159 macro does.  For example, @code{AC_PATH_X} has internal macros
10160 @code{_AC_PATH_X_XMKMF} and @code{_AC_PATH_X_DIRECT}.
10162 @node Reporting Messages
10163 @section Reporting Messages
10164 @cindex Messages, from @command{autoconf}
10166 When macros statically diagnose abnormal situations, benign or fatal,
10167 they should report them using these macros.  For dynamic issues, i.e.,
10168 when @command{configure} is run, see @ref{Printing Messages}.
10170 @defmac AC_DIAGNOSE (@var{category}, @var{message})
10171 @acindex{DIAGNOSE}
10172 Report @var{message} as a warning (or as an error if requested by the
10173 user) if warnings of the @var{category} are turned on.  You are
10174 encouraged to use standard categories, which currently include:
10176 @table @samp
10177 @item all
10178 messages that don't fall into one of the following categories.  Use of an
10179 empty @var{category} is equivalent.
10181 @item cross
10182 related to cross compilation issues.
10184 @item obsolete
10185 use of an obsolete construct.
10187 @item syntax
10188 dubious syntactic constructs, incorrectly ordered macro calls.
10189 @end table
10190 @end defmac
10192 @defmac AC_WARNING (@var{message})
10193 @acindex{WARNING}
10194 Equivalent to @samp{AC_DIAGNOSE([syntax], @var{message})}, but you are
10195 strongly encouraged to use a finer grained category.
10196 @end defmac
10198 @defmac AC_FATAL (@var{message})
10199 @acindex{FATAL}
10200 Report a severe error @var{message}, and have @command{autoconf} die.
10201 @end defmac
10203 When the user runs @samp{autoconf -W error}, warnings from
10204 @code{AC_DIAGNOSE} and @code{AC_WARNING} are reported as error, see
10205 @ref{autoconf Invocation}.
10207 @node Dependencies Between Macros
10208 @section Dependencies Between Macros
10209 @cindex Dependencies between macros
10211 Some Autoconf macros depend on other macros having been called first in
10212 order to work correctly.  Autoconf provides a way to ensure that certain
10213 macros are called if needed and a way to warn the user if macros are
10214 called in an order that might cause incorrect operation.
10216 @menu
10217 * Prerequisite Macros::         Ensuring required information
10218 * Suggested Ordering::          Warning about possible ordering problems
10219 * One-Shot Macros::             Ensuring a macro is called only once
10220 @end menu
10222 @node Prerequisite Macros
10223 @subsection Prerequisite Macros
10224 @cindex Prerequisite macros
10225 @cindex Macros, prerequisites
10227 A macro that you write might need to use values that have previously
10228 been computed by other macros.  For example, @code{AC_DECL_YYTEXT}
10229 examines the output of @code{flex} or @code{lex}, so it depends on
10230 @code{AC_PROG_LEX} having been called first to set the shell variable
10231 @code{LEX}.
10233 Rather than forcing the user of the macros to keep track of the
10234 dependencies between them, you can use the @code{AC_REQUIRE} macro to do
10235 it automatically.  @code{AC_REQUIRE} can ensure that a macro is only
10236 called if it is needed, and only called once.
10238 @defmac AC_REQUIRE (@var{macro-name})
10239 @acindex{REQUIRE}
10240 If the M4 macro @var{macro-name} has not already been called, call it
10241 (without any arguments).  Make sure to quote @var{macro-name} with
10242 square brackets.  @var{macro-name} must have been defined using
10243 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
10244 that it has been called.
10246 @code{AC_REQUIRE} must be used inside a macro defined by @code{AC_DEFUN}; it
10247 must not be called from the top level.
10248 @end defmac
10250 @code{AC_REQUIRE} is often misunderstood.  It really implements
10251 dependencies between macros in the sense that if one macro depends upon
10252 another, the latter is expanded @emph{before} the body of the
10253 former.  To be more precise, the required macro is expanded before
10254 the outermost defined macro in the current expansion stack.
10255 In particular, @samp{AC_REQUIRE([FOO])} is not replaced with the body of
10256 @code{FOO}.  For instance, this definition of macros:
10258 @example
10259 @group
10260 AC_DEFUN([TRAVOLTA],
10261 [test "$body_temperature_in_celsius" -gt "38" &&
10262   dance_floor=occupied])
10263 AC_DEFUN([NEWTON_JOHN],
10264 [test "$hair_style" = "curly" &&
10265   dance_floor=occupied])
10266 @end group
10268 @group
10269 AC_DEFUN([RESERVE_DANCE_FLOOR],
10270 [if date | grep '^Sat.*pm' >/dev/null 2>&1; then
10271   AC_REQUIRE([TRAVOLTA])
10272   AC_REQUIRE([NEWTON_JOHN])
10273 fi])
10274 @end group
10275 @end example
10277 @noindent
10278 with this @file{configure.ac}
10280 @example
10281 AC_INIT([Dance Manager], [1.0], [bug-dance@@example.org])
10282 RESERVE_DANCE_FLOOR
10283 if test "$dance_floor" = occupied; then
10284   AC_MSG_ERROR([cannot pick up here, let's move])
10286 @end example
10288 @noindent
10289 does not leave you with a better chance to meet a kindred soul at
10290 other times than Saturday night since it expands into:
10292 @example
10293 @group
10294 test "$body_temperature_in_Celsius" -gt "38" &&
10295   dance_floor=occupied
10296 test "$hair_style" = "curly" &&
10297   dance_floor=occupied
10299 if date | grep '^Sat.*pm' >/dev/null 2>&1; then
10303 @end group
10304 @end example
10306 This behavior was chosen on purpose: (i) it prevents messages in
10307 required macros from interrupting the messages in the requiring macros;
10308 (ii) it avoids bad surprises when shell conditionals are used, as in:
10310 @example
10311 @group
10312 if @dots{}; then
10313   AC_REQUIRE([SOME_CHECK])
10315 @dots{}
10316 SOME_CHECK
10317 @end group
10318 @end example
10320 The helper macros @code{AS_IF} and @code{AS_CASE} may be used to
10321 enforce expansion of required macros outside of shell conditional
10322 constructs.  You are furthermore encouraged to put all @code{AC_REQUIRE} calls
10323 at the beginning of a macro.  You can use @code{dnl} to avoid the empty
10324 lines they leave.
10326 @node Suggested Ordering
10327 @subsection Suggested Ordering
10328 @cindex Macros, ordering
10329 @cindex Ordering macros
10331 Some macros should be run before another macro if both are called, but
10332 neither @emph{requires} that the other be called.  For example, a macro
10333 that changes the behavior of the C compiler should be called before any
10334 macros that run the C compiler.  Many of these dependencies are noted in
10335 the documentation.
10337 Autoconf provides the @code{AC_BEFORE} macro to warn users when macros
10338 with this kind of dependency appear out of order in a
10339 @file{configure.ac} file.  The warning occurs when creating
10340 @command{configure} from @file{configure.ac}, not when running
10341 @command{configure}.
10343 For example, @code{AC_PROG_CPP} checks whether the C compiler
10344 can run the C preprocessor when given the @option{-E} option.  It should
10345 therefore be called after any macros that change which C compiler is
10346 being used, such as @code{AC_PROG_CC}.  So @code{AC_PROG_CC} contains:
10348 @example
10349 AC_BEFORE([$0], [AC_PROG_CPP])dnl
10350 @end example
10352 @noindent
10353 This warns the user if a call to @code{AC_PROG_CPP} has already occurred
10354 when @code{AC_PROG_CC} is called.
10356 @defmac AC_BEFORE (@var{this-macro-name}, @var{called-macro-name})
10357 @acindex{BEFORE}
10358 Make M4 print a warning message to the standard error output if
10359 @var{called-macro-name} has already been called.  @var{this-macro-name}
10360 should be the name of the macro that is calling @code{AC_BEFORE}.  The
10361 macro @var{called-macro-name} must have been defined using
10362 @code{AC_DEFUN} or else contain a call to @code{AC_PROVIDE} to indicate
10363 that it has been called.
10364 @end defmac
10366 @node One-Shot Macros
10367 @subsection One-Shot Macros
10368 @cindex One-shot macros
10369 @cindex Macros, called once
10371 Some macros should be called only once, either because calling them
10372 multiple time is unsafe, or because it is bad style.  For instance
10373 Autoconf ensures that @code{AC_CANONICAL_BUILD} and cousins
10374 (@pxref{Canonicalizing}) are evaluated only once, because it makes no
10375 sense to run these expensive checks more than once.  Such one-shot
10376 macros can be defined using @code{AC_DEFUN_ONCE}.
10378 @defmac AC_DEFUN_ONCE (@var{macro-name}, @var{macro-body})
10379 @acindex{DEFUN_ONCE}
10381 Declare macro @var{macro-name} like @code{AC_DEFUN} would (@pxref{Macro
10382 Definitions}), and emit a warning any time the macro is called more than
10383 once.
10384 @end defmac
10386 Obviously it is not sensible to evaluate a macro defined by
10387 @code{AC_DEFUN_ONCE} in a macro defined by @code{AC_DEFUN}.
10388 Most of the time you want to use @code{AC_REQUIRE} (@pxref{Prerequisite
10389 Macros}).
10391 @node Obsoleting Macros
10392 @section Obsoleting Macros
10393 @cindex Obsoleting macros
10394 @cindex Macros, obsoleting
10396 Configuration and portability technology has evolved over the years.
10397 Often better ways of solving a particular problem are developed, or
10398 ad-hoc approaches are systematized.  This process has occurred in many
10399 parts of Autoconf.  One result is that some of the macros are now
10400 considered @dfn{obsolete}; they still work, but are no longer considered
10401 the best thing to do, hence they should be replaced with more modern
10402 macros.  Ideally, @command{autoupdate} should replace the old macro calls
10403 with their modern implementation.
10405 Autoconf provides a simple means to obsolete a macro.
10407 @defmac AU_DEFUN (@var{old-macro}, @var{implementation}, @ovar{message})
10408 @auindex{DEFUN}
10409 Define @var{old-macro} as @var{implementation}.  The only difference
10410 with @code{AC_DEFUN} is that the user is warned that
10411 @var{old-macro} is now obsolete.
10413 If she then uses @command{autoupdate}, the call to @var{old-macro} is
10414 replaced by the modern @var{implementation}.  @var{message} should
10415 include information on what to do after running @command{autoupdate};
10416 @command{autoupdate} prints it as a warning, and includes it
10417 in the updated @file{configure.ac} file.
10419 The details of this macro are hairy: if @command{autoconf} encounters an
10420 @code{AU_DEFUN}ed macro, all macros inside its second argument are expanded
10421 as usual.  However, when @command{autoupdate} is run, only M4 and M4sugar
10422 macros are expanded here, while all other macros are disabled and
10423 appear literally in the updated @file{configure.ac}.
10424 @end defmac
10426 @defmac AU_ALIAS (@var{old-name}, @var{new-name})
10427 @auindex{ALIAS}
10428 Used if the @var{old-name} is to be replaced by a call to @var{new-macro}
10429 with the same parameters.  This happens for example if the macro was renamed.
10430 @end defmac
10432 @node Coding Style
10433 @section Coding Style
10434 @cindex Coding style
10436 The Autoconf macros follow a strict coding style.  You are encouraged to
10437 follow this style, especially if you intend to distribute your macro,
10438 either by contributing it to Autoconf itself, or via other means.
10440 The first requirement is to pay great attention to the quotation.  For
10441 more details, see @ref{Autoconf Language}, and @ref{M4 Quotation}.
10443 Do not try to invent new interfaces.  It is likely that there is a macro
10444 in Autoconf that resembles the macro you are defining: try to stick to
10445 this existing interface (order of arguments, default values, etc.).  We
10446 @emph{are} conscious that some of these interfaces are not perfect;
10447 nevertheless, when harmless, homogeneity should be preferred over
10448 creativity.
10450 Be careful about clashes both between M4 symbols and between shell
10451 variables.
10453 If you stick to the suggested M4 naming scheme (@pxref{Macro Names}),
10454 you are unlikely to generate conflicts.  Nevertheless, when you need to
10455 set a special value, @emph{avoid using a regular macro name}; rather,
10456 use an ``impossible'' name.  For instance, up to version 2.13, the macro
10457 @code{AC_SUBST} used to remember what @var{symbol} macros were already defined
10458 by setting @code{AC_SUBST_@var{symbol}}, which is a regular macro name.
10459 But since there is a macro named @code{AC_SUBST_FILE}, it was just
10460 impossible to @samp{AC_SUBST(FILE)}!  In this case,
10461 @code{AC_SUBST(@var{symbol})} or @code{_AC_SUBST(@var{symbol})} should
10462 have been used (yes, with the parentheses).
10463 @c or better yet, high-level macros such as @code{m4_expand_once}
10465 No Autoconf macro should ever enter the user-variable name space; i.e.,
10466 except for the variables that are the actual result of running the
10467 macro, all shell variables should start with @code{ac_}.  In
10468 addition, small macros or any macro that is likely to be embedded in
10469 other macros should be careful not to use obvious names.
10471 @cindex @code{dnl}
10472 Do not use @code{dnl} to introduce comments: most of the comments you
10473 are likely to write are either header comments which are not output
10474 anyway, or comments that should make their way into @file{configure}.
10475 There are exceptional cases where you do want to comment special M4
10476 constructs, in which case @code{dnl} is right, but keep in mind that it
10477 is unlikely.
10479 M4 ignores the leading blanks and newlines before each argument.
10480 Use this feature to
10481 indent in such a way that arguments are (more or less) aligned with the
10482 opening parenthesis of the macro being called.  For instance, instead of
10484 @example
10485 AC_CACHE_CHECK(for EMX OS/2 environment,
10486 ac_cv_emxos2,
10487 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, [return __EMX__;])],
10488 [ac_cv_emxos2=yes], [ac_cv_emxos2=no])])
10489 @end example
10491 @noindent
10492 write
10494 @example
10495 AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10496 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10497                    [ac_cv_emxos2=yes],
10498                    [ac_cv_emxos2=no])])
10499 @end example
10501 @noindent
10502 or even
10504 @example
10505 AC_CACHE_CHECK([for EMX OS/2 environment],
10506                [ac_cv_emxos2],
10507                [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([],
10508                                                    [return __EMX__;])],
10509                                   [ac_cv_emxos2=yes],
10510                                   [ac_cv_emxos2=no])])
10511 @end example
10513 When using @code{AC_RUN_IFELSE} or any macro that cannot work when
10514 cross-compiling, provide a pessimistic value (typically @samp{no}).
10516 Feel free to use various tricks to prevent auxiliary tools, such as
10517 syntax-highlighting editors, from behaving improperly.  For instance,
10518 instead of:
10520 @example
10521 m4_bpatsubst([$1], [$"])
10522 @end example
10524 @noindent
10527 @example
10528 m4_bpatsubst([$1], [$""])
10529 @end example
10531 @noindent
10532 so that Emacsen do not open an endless ``string'' at the first quote.
10533 For the same reasons, avoid:
10535 @example
10536 test $[#] != 0
10537 @end example
10539 @noindent
10540 and use:
10542 @example
10543 test $[@@%:@@] != 0
10544 @end example
10546 @noindent
10547 Otherwise, the closing bracket would be hidden inside a @samp{#}-comment,
10548 breaking the bracket-matching highlighting from Emacsen.  Note the
10549 preferred style to escape from M4: @samp{$[1]}, @samp{$[@@]}, etc.  Do
10550 not escape when it is unnecessary.  Common examples of useless quotation
10551 are @samp{[$]$1} (write @samp{$$1}), @samp{[$]var} (use @samp{$var}),
10552 etc.  If you add portability issues to the picture, you'll prefer
10553 @samp{$@{1+"$[@@]"@}} to @samp{"[$]@@"}, and you'll prefer do something
10554 better than hacking Autoconf @code{:-)}.
10556 When using @command{sed}, don't use @option{-e} except for indenting
10557 purposes.  With the @code{s} and @code{y} commands, the preferred
10558 separator is @samp{/} unless @samp{/} itself might appear in the pattern
10559 or replacement, in which case you should use @samp{|}, or optionally
10560 @samp{,} if you know the pattern and replacement cannot contain a file
10561 name.  If none of these characters will do, choose a printable character
10562 that cannot appear in the pattern or replacement.  Characters from the
10563 set @samp{"#$&'()*;<=>?`|~} are good choices if the pattern or
10564 replacement might contain a file name, since they have special meaning
10565 to the shell and are less likely to occur in file names.
10567 @xref{Macro Definitions}, for details on how to define a macro.  If a
10568 macro doesn't use @code{AC_REQUIRE}, is expected to never be the object
10569 of an @code{AC_REQUIRE} directive, and macros required by other macros
10570 inside arguments do not need to be expanded before this macro, then
10571 use @code{m4_define}.  In case of doubt, use @code{AC_DEFUN}.
10572 All the @code{AC_REQUIRE} statements should be at the beginning of the
10573 macro, and each statement should be followed by @code{dnl}.
10575 You should not rely on the number of arguments: instead of checking
10576 whether an argument is missing, test that it is not empty.  It provides
10577 both a simpler and a more predictable interface to the user, and saves
10578 room for further arguments.
10580 Unless the macro is short, try to leave the closing @samp{])} at the
10581 beginning of a line, followed by a comment that repeats the name of the
10582 macro being defined.  This introduces an additional newline in
10583 @command{configure}; normally, that is not a problem, but if you want to
10584 remove it you can use @samp{[]dnl} on the last line.  You can similarly
10585 use @samp{[]dnl} after a macro call to remove its newline.  @samp{[]dnl}
10586 is recommended instead of @samp{dnl} to ensure that M4 does not
10587 interpret the @samp{dnl} as being attached to the preceding text or
10588 macro output.  For example, instead of:
10590 @example
10591 AC_DEFUN([AC_PATH_X],
10592 [AC_MSG_CHECKING([for X])
10593 AC_REQUIRE_CPP()
10594 @r{# @dots{}omitted@dots{}}
10595   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10596 fi])
10597 @end example
10599 @noindent
10600 you would write:
10602 @example
10603 AC_DEFUN([AC_PATH_X],
10604 [AC_REQUIRE_CPP()[]dnl
10605 AC_MSG_CHECKING([for X])
10606 @r{# @dots{}omitted@dots{}}
10607   AC_MSG_RESULT([libraries $x_libraries, headers $x_includes])
10608 fi[]dnl
10609 ])# AC_PATH_X
10610 @end example
10612 If the macro is long, try to split it into logical chunks.  Typically,
10613 macros that check for a bug in a function and prepare its
10614 @code{AC_LIBOBJ} replacement should have an auxiliary macro to perform
10615 this setup.  Do not hesitate to introduce auxiliary macros to factor
10616 your code.
10618 In order to highlight the recommended coding style, here is a macro
10619 written the old way:
10621 @example
10622 dnl Check for EMX on OS/2.
10623 dnl _AC_EMXOS2
10624 AC_DEFUN(_AC_EMXOS2,
10625 [AC_CACHE_CHECK(for EMX OS/2 environment, ac_cv_emxos2,
10626 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM(, return __EMX__;)],
10627 ac_cv_emxos2=yes, ac_cv_emxos2=no)])
10628 test "$ac_cv_emxos2" = yes && EMXOS2=yes])
10629 @end example
10631 @noindent
10632 and the new way:
10634 @example
10635 # _AC_EMXOS2
10636 # ----------
10637 # Check for EMX on OS/2.
10638 m4_define([_AC_EMXOS2],
10639 [AC_CACHE_CHECK([for EMX OS/2 environment], [ac_cv_emxos2],
10640 [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([], [return __EMX__;])],
10641                    [ac_cv_emxos2=yes],
10642                    [ac_cv_emxos2=no])])
10643 test "$ac_cv_emxos2" = yes && EMXOS2=yes[]dnl
10644 ])# _AC_EMXOS2
10645 @end example
10650 @c ============================================= Portable Shell Programming
10652 @node Portable Shell
10653 @chapter Portable Shell Programming
10654 @cindex Portable shell programming
10656 When writing your own checks, there are some shell-script programming
10657 techniques you should avoid in order to make your code portable.  The
10658 Bourne shell and upward-compatible shells like the Korn shell and Bash
10659 have evolved over the years, but to prevent trouble, do not take
10660 advantage of features that were added after Unix version 7, circa
10661 1977 (@pxref{Systemology}).
10663 You should not use shell functions, aliases, negated character
10664 classes, or other features that are not found in all Bourne-compatible
10665 shells; restrict yourself to the lowest common denominator.  Even
10666 @code{unset} is not supported by all shells!
10668 Some ancient systems have quite
10669 small limits on the length of the @samp{#!} line; for instance, 32
10670 bytes (not including the newline) on SunOS 4.
10671 A few ancient 4.2@acronym{BSD} based systems (such as Dynix circa 1984)
10672 required a single space between the @samp{#!} and the @samp{/}.
10673 However, these ancient systems are no longer of practical concern.
10675 The set of external programs you should run in a @command{configure} script
10676 is fairly small.  @xref{Utilities in Makefiles, , Utilities in
10677 Makefiles, standards, @acronym{GNU} Coding Standards}, for the list.  This
10678 restriction allows users to start out with a fairly small set of
10679 programs and build the rest, avoiding too many interdependencies between
10680 packages.
10682 Some of these external utilities have a portable subset of features; see
10683 @ref{Limitations of Usual Tools}.
10685 There are other sources of documentation about shells.  The
10686 specification for the Posix
10687 @uref{http://www.opengroup.org/@/susv3/@/utilities/@/xcu_chap02.html, Shell
10688 Command Language}, though more generous than the restrictive shell
10689 subset described above, is fairly portable nowadays.  Also please see
10690 @uref{http://www.faqs.org/@/faqs/@/unix-faq/@/shell/, the Shell FAQs}.
10692 @menu
10693 * Shellology::                  A zoology of shells
10694 * Here-Documents::              Quirks and tricks
10695 * File Descriptors::            FDs and redirections
10696 * File System Conventions::     File names
10697 * Shell Substitutions::         Variable and command expansions
10698 * Assignments::                 Varying side effects of assignments
10699 * Parentheses::                 Parentheses in shell scripts
10700 * Slashes::                     Slashes in shell scripts
10701 * Special Shell Variables::     Variables you should not change
10702 * Limitations of Builtins::     Portable use of not so portable /bin/sh
10703 * Limitations of Usual Tools::  Portable use of portable tools
10704 @end menu
10706 @node Shellology
10707 @section Shellology
10708 @cindex Shellology
10710 There are several families of shells, most prominently the Bourne family
10711 and the C shell family which are deeply incompatible.  If you want to
10712 write portable shell scripts, avoid members of the C shell family.  The
10713 @uref{http://www.faqs.org/@/faqs/@/unix-faq/@/shell/@/shell-differences/, the
10714 Shell difference FAQ} includes a small history of Posix shells, and a
10715 comparison between several of them.
10717 Below we describe some of the members of the Bourne shell family.
10719 @table @asis
10720 @item Ash
10721 @cindex Ash
10722 Ash is often used on @acronym{GNU}/Linux and @acronym{BSD}
10723 systems as a light-weight Bourne-compatible shell.  Ash 0.2 has some
10724 bugs that are fixed in the 0.3.x series, but portable shell scripts
10725 should work around them, since version 0.2 is still shipped with many
10726 @acronym{GNU}/Linux distributions.
10728 To be compatible with Ash 0.2:
10730 @itemize @minus
10731 @item
10732 don't use @samp{$?} after expanding empty or unset variables,
10733 or at the start of an @command{eval}:
10735 @example
10736 foo=
10737 false
10738 $foo
10739 echo "Do not use it: $?"
10740 false
10741 eval 'echo "Do not use it: $?"'
10742 @end example
10744 @item
10745 don't use command substitution within variable expansion:
10747 @example
10748 cat $@{FOO=`bar`@}
10749 @end example
10751 @item
10752 beware that single builtin substitutions are not performed by a
10753 subshell, hence their effect applies to the current shell!  @xref{Shell
10754 Substitutions}, item ``Command Substitution''.
10755 @end itemize
10757 @item Bash
10758 @cindex Bash
10759 To detect whether you are running Bash, test whether
10760 @code{BASH_VERSION} is set.  To require
10761 Posix compatibility, run @samp{set -o posix}.  @xref{Bash POSIX
10762 Mode, , Bash Posix Mode, bash, The @acronym{GNU} Bash Reference
10763 Manual}, for details.
10765 @item Bash 2.05 and later
10766 @cindex Bash 2.05 and later
10767 Versions 2.05 and later of Bash use a different format for the
10768 output of the @command{set} builtin, designed to make evaluating its
10769 output easier.  However, this output is not compatible with earlier
10770 versions of Bash (or with many other shells, probably).  So if
10771 you use Bash 2.05 or higher to execute @command{configure},
10772 you'll need to use Bash 2.05 for all other build tasks as well.
10774 @item Ksh
10775 @cindex Ksh
10776 @cindex Korn shell
10777 @prindex @samp{ksh}
10778 @prindex @samp{ksh88}
10779 @prindex @samp{ksh93}
10780 The Korn shell is compatible with the Bourne family and it mostly
10781 conforms to Posix.  It has two major variants commonly
10782 called @samp{ksh88} and @samp{ksh93}, named after the years of initial
10783 release.  It is usually called @command{ksh}, but is called @command{sh}
10784 on some hosts if you set your path appropriately.
10786 Solaris systems have three variants:
10787 @prindex @command{/usr/bin/ksh} on Solaris
10788 @command{/usr/bin/ksh} is @samp{ksh88}; it is
10789 standard on Solaris 2.0 and later.
10790 @prindex @command{/usr/xpg4/bin/sh} on Solaris
10791 @command{/usr/xpg4/bin/sh} is a Posix-compliant variant of
10792 @samp{ksh88}; it is standard on Solaris 9 and later.
10793 @prindex @command{/usr/dt/bin/dtksh} on Solaris
10794 @command{/usr/dt/bin/dtksh} is @samp{ksh93}.
10795 Variants that are not standard may be parts of optional
10796 packages.  There is no extra charge for these packages, but they are
10797 not part of a minimal OS install and therefore some installations may
10798 not have it.
10800 Starting with Tru64 Version 4.0, the Korn shell @command{/usr/bin/ksh}
10801 is also available as @command{/usr/bin/posix/sh}.  If the environment
10802 variable @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
10803 the standard shell conform to Posix.
10805 @item Pdksh
10806 @prindex @samp{pdksh}
10807 A public-domain clone of the Korn shell called @command{pdksh} is widely
10808 available: it has most of the @samp{ksh88} features along with a few of
10809 its own.  It usually sets @code{KSH_VERSION}, except if invoked as
10810 @command{/bin/sh} on Open@acronym{BSD}, and similarly to Bash you can require
10811 Posix compatibility by running @samp{set -o posix}.  Unfortunately, with
10812 @command{pdksh} 5.2.14 (the latest stable version as of February 2006)
10813 Posix mode is buggy and causes @command{pdksh} to depart from Posix in
10814 at least one respect:
10816 @example
10817 $ @kbd{echo "`echo \"hello\"`"}
10818 hello
10819 $ @kbd{set -o posix}
10820 $ @kbd{echo "`echo \"hello\"`"}
10821 "hello"
10822 @end example
10824 The last line of output contains spurious quotes.  This is yet another
10825 reason why portable shell code should not contain
10826 @code{"`@dots{}\"@dots{}\"@dots{}`"} constructs (@pxref{Shell
10827 Substitutions}).
10829 @item Zsh
10830 @cindex Zsh
10831 To detect whether you are running @command{zsh}, test whether
10832 @code{ZSH_VERSION} is set.  By default @command{zsh} is @emph{not}
10833 compatible with the Bourne shell: you must execute @samp{emulate sh},
10834 and for @command{zsh} versions before 3.1.6-dev-18 you must also
10835 set @code{NULLCMD} to @samp{:}.  @xref{Compatibility, , Compatibility,
10836 zsh, The Z Shell Manual}, for details.
10838 The default Mac OS X @command{sh} was originally Zsh; it was changed to
10839 Bash in Mac OS X 10.2.
10840 @end table
10842 The following discussion between Russ Allbery and Robert Lipe is worth
10843 reading:
10845 @noindent
10846 Russ Allbery:
10848 @quotation
10849 The @acronym{GNU} assumption that @command{/bin/sh} is the one and only shell
10850 leads to a permanent deadlock.  Vendors don't want to break users'
10851 existing shell scripts, and there are some corner cases in the Bourne
10852 shell that are not completely compatible with a Posix shell.  Thus,
10853 vendors who have taken this route will @emph{never} (OK@dots{}``never say
10854 never'') replace the Bourne shell (as @command{/bin/sh}) with a
10855 Posix shell.
10856 @end quotation
10858 @noindent
10859 Robert Lipe:
10861 @quotation
10862 This is exactly the problem.  While most (at least most System V's) do
10863 have a Bourne shell that accepts shell functions most vendor
10864 @command{/bin/sh} programs are not the Posix shell.
10866 So while most modern systems do have a shell @emph{somewhere} that meets the
10867 Posix standard, the challenge is to find it.
10868 @end quotation
10870 @node Here-Documents
10871 @section Here-Documents
10872 @cindex Here-documents
10873 @cindex Shell here-documents
10875 Don't rely on @samp{\} being preserved just because it has no special
10876 meaning together with the next symbol.  In the native @command{sh}
10877 on Open@acronym{BSD} 2.7 @samp{\"} expands to @samp{"} in here-documents with
10878 unquoted delimiter.  As a general rule, if @samp{\\} expands to @samp{\}
10879 use @samp{\\} to get @samp{\}.
10881 With Open@acronym{BSD} 2.7's @command{sh}
10883 @example
10884 @group
10885 $ @kbd{cat <<EOF
10886 > \" \\
10887 > EOF}
10888 " \
10889 @end group
10890 @end example
10892 @noindent
10893 and with Bash:
10895 @example
10896 @group
10897 bash-2.04$ @kbd{cat <<EOF
10898 > \" \\
10899 > EOF}
10900 \" \
10901 @end group
10902 @end example
10904 Some shells mishandle large here-documents: for example,
10905 Solaris 10 @command{dtksh} and the UnixWare 7.1.1 Posix shell, which are
10906 derived from Korn shell version M-12/28/93d, mishandle braced variable
10907 expansion that crosses a 1024- or 4096-byte buffer boundary
10908 within a here-document.  Only the part of the variable name after the boundary
10909 is used.  For example, @code{$@{variable@}} could be replaced by the expansion
10910 of @code{$@{ble@}}.  If the end of the variable name is aligned with the block
10911 boundary, the shell reports an error, as if you used @code{$@{@}}.
10912 Instead of @code{$@{variable-default@}}, the shell may expand
10913 @code{$@{riable-default@}}, or even @code{$@{fault@}}.  This bug can often
10914 be worked around by omitting the braces: @code{$variable}.  The bug was fixed in
10915 @samp{ksh93g} (1998-04-30) but as of 2006 many operating systems were
10916 still shipping older versions with the bug.
10918 Many older shells (including the Bourne shell) implement here-documents
10919 inefficiently.  In particular, some shells can be extremely inefficient when
10920 a single statement contains many here-documents.  For instance if your
10921 @file{configure.ac} includes something like:
10923 @example
10924 @group
10925 if <cross_compiling>; then
10926   assume this and that
10927 else
10928   check this
10929   check that
10930   check something else
10931   @dots{}
10932   on and on forever
10933   @dots{}
10935 @end group
10936 @end example
10938 A shell parses the whole @code{if}/@code{fi} construct, creating
10939 temporary files for each here-document in it.  Some shells create links
10940 for such here-documents on every @code{fork}, so that the clean-up code
10941 they had installed correctly removes them.  It is creating the links
10942 that can take the shell forever.
10944 Moving the tests out of the @code{if}/@code{fi}, or creating multiple
10945 @code{if}/@code{fi} constructs, would improve the performance
10946 significantly.  Anyway, this kind of construct is not exactly the
10947 typical use of Autoconf.  In fact, it's even not recommended, because M4
10948 macros can't look into shell conditionals, so we may fail to expand a
10949 macro when it was expanded before in a conditional path, and the
10950 condition turned out to be false at runtime, and we end up not
10951 executing the macro at all.
10953 @node File Descriptors
10954 @section File Descriptors
10955 @cindex Descriptors
10956 @cindex File descriptors
10957 @cindex Shell file descriptors
10959 Don't redirect the same file descriptor several times, as you are doomed
10960 to failure under Ultrix.
10962 @example
10963 ULTRIX V4.4 (Rev. 69) System #31: Thu Aug 10 19:42:23 GMT 1995
10964 UWS V4.4 (Rev. 11)
10965 $ @kbd{eval 'echo matter >fullness' >void}
10966 illegal io
10967 $ @kbd{eval '(echo matter >fullness)' >void}
10968 illegal io
10969 $ @kbd{(eval '(echo matter >fullness)') >void}
10970 Ambiguous output redirect.
10971 @end example
10973 @noindent
10974 In each case the expected result is of course @file{fullness} containing
10975 @samp{matter} and @file{void} being empty.
10977 Don't try to redirect the standard error of a command substitution: it
10978 must be done @emph{inside} the command substitution: when running
10979 @samp{: `cd /zorglub` 2>/dev/null} expect the error message to
10980 escape, while @samp{: `cd /zorglub 2>/dev/null`} works properly.
10982 It is worth noting that Zsh (but not Ash nor Bash) makes it possible
10983 in assignments though: @samp{foo=`cd /zorglub` 2>/dev/null}.
10985 Most shells, if not all (including Bash, Zsh, Ash), output traces on
10986 stderr, even for subshells.  This might result in undesirable content
10987 if you meant to capture the standard-error output of the inner command:
10989 @example
10990 $ @kbd{ash -x -c '(eval "echo foo >&2") 2>stderr'}
10991 $ @kbd{cat stderr}
10992 + eval echo foo >&2
10993 + echo foo
10995 $ @kbd{bash -x -c '(eval "echo foo >&2") 2>stderr'}
10996 $ @kbd{cat stderr}
10997 + eval 'echo foo >&2'
10998 ++ echo foo
11000 $ @kbd{zsh -x -c '(eval "echo foo >&2") 2>stderr'}
11001 @i{# Traces on startup files deleted here.}
11002 $ @kbd{cat stderr}
11003 +zsh:1> eval echo foo >&2
11004 +zsh:1> echo foo
11006 @end example
11008 @noindent
11009 You'll appreciate the various levels of detail@enddots{}
11011 One workaround is to grep out uninteresting lines, hoping not to remove
11012 good ones@enddots{}
11014 Don't try to move/delete open files, such as in @samp{exec >foo; mv foo
11015 bar}; see @ref{Limitations of Builtins}, @command{mv} for more details.
11017 Don't rely on file descriptors 0, 1, and 2 remaining closed in a
11018 subsidiary program.  If any of these descriptors is closed, the
11019 operating system may open an unspecified file for the descriptor in the
11020 new process image.  Posix says this may be done only if the subsidiary
11021 program is set-user-ID or set-group-ID, but HP-UX 11.23 does it even for
11022 ordinary programs.
11024 Don't rely on open file descriptors being open in child processes.  In
11025 @command{ksh}, file descriptors above 2 which are opened using
11026 @samp{exec @var{n}>file} are closed by a subsequent @samp{exec} (such as
11027 that involved in the fork-and-exec which runs a program or script).
11028 Thus, using @command{sh}, we have:
11030 @example
11031 $ @kbd{cat ./descrips}
11032 #!/bin/sh -
11033 echo hello >&5
11034 $ @kbd{exec 5>t}
11035 $ @kbd{./descrips}
11036 $ @kbd{cat t}
11038 hello
11039 @end example
11041 @noindent
11042 But using ksh:
11044 @example
11045 $ @kbd{exec 5>t}
11046 $ @kbd{./descrips}
11047 hello
11048 $ @kbd{cat t}
11050 @end example
11052 @noindent
11053 Within the process which runs the @samp{descrips} script, file
11054 descriptor 5 is closed.
11056 A few ancient systems reserved some file descriptors.  By convention,
11057 file descriptor 3 was opened to @file{/dev/tty} when you logged into
11058 Eighth Edition (1985) through Tenth Edition Unix (1989).  File
11059 descriptor 4 had a special use on the Stardent/Kubota Titan (circa
11060 1990), though we don't now remember what it was.  Both these systems are
11061 obsolete, so it's now safe to treat file descriptors 3 and 4 like any
11062 other file descriptors.
11064 @node File System Conventions
11065 @section File System Conventions
11066 @cindex File system conventions
11068 Autoconf uses shell-script processing extensively, so the file names
11069 that it processes should not contain characters that are special to the
11070 shell.  Special characters include space, tab, newline, @sc{nul}, and
11071 the following:
11073 @example
11074 " # $ & ' ( ) * ; < = > ? [ \ ` |
11075 @end example
11077 Also, file names should not begin with @samp{~} or @samp{-}, and should
11078 contain neither @samp{-} immediately after @samp{/} nor @samp{~}
11079 immediately after @samp{:}.  On Posix-like platforms, directory names
11080 should not contain @samp{:}, as this runs afoul of @samp{:} used as the
11081 path separator.
11083 These restrictions apply not only to the files that you distribute, but
11084 also to the absolute file names of your source, build, and destination
11085 directories.
11087 On some Posix-like platforms, @samp{!} and @samp{^} are special too, so
11088 they should be avoided.
11090 Posix lets implementations treat leading @file{//} specially, but
11091 requires leading @file{///} and beyond to be equivalent to @file{/}.
11092 Most Unix variants treat @file{//} like @file{/}.  However, some treat
11093 @file{//} as a ``super-root'' that can provide access to files that are
11094 not otherwise reachable from @file{/}.  The super-root tradition began
11095 with Apollo Domain/OS, which died out long ago, but unfortunately Cygwin
11096 has revived it.
11098 While @command{autoconf} and friends are usually run on some Posix
11099 variety, they can be used on other systems, most notably @acronym{DOS}
11100 variants.  This impacts several assumptions regarding file names.
11102 @noindent
11103 For example, the following code:
11105 @example
11106 case $foo_dir in
11107   /*) # Absolute
11108      ;;
11109   *)
11110      foo_dir=$dots$foo_dir ;;
11111 esac
11112 @end example
11114 @noindent
11115 fails to properly detect absolute file names on those systems, because
11116 they can use a drivespec, and usually use a backslash as directory
11117 separator.  If you want to be portable to @acronym{DOS} variants (at the
11118 price of rejecting valid but oddball Posix file names like @file{a:\b}),
11119 you can check for absolute file names like this:
11121 @example
11122 case $foo_dir in
11123   [\\/]* | ?:[\\/]* ) # Absolute
11124      ;;
11125   *)
11126      foo_dir=$dots$foo_dir ;;
11127 esac
11128 @end example
11130 @noindent
11131 Make sure you quote the brackets if appropriate and keep the backslash as
11132 first character (@pxref{Limitations of Builtins}).
11134 Also, because the colon is used as part of a drivespec, these systems don't
11135 use it as path separator.  When creating or accessing paths, you can use the
11136 @code{PATH_SEPARATOR} output variable instead.  @command{configure} sets this
11137 to the appropriate value (@samp{:} or @samp{;}) when it starts up.
11139 File names need extra care as well.  While @acronym{DOS} variants
11140 that are Posixy enough to run @command{autoconf} (such as @acronym{DJGPP})
11141 are usually able to handle long file names properly, there are still
11142 limitations that can seriously break packages.  Several of these issues
11143 can be easily detected by the
11144 @uref{ftp://ftp.gnu.org/gnu/non-gnu/doschk/doschk-1.1.tar.gz, doschk}
11145 package.
11147 A short overview follows; problems are marked with @sc{sfn}/@sc{lfn} to
11148 indicate where they apply: @sc{sfn} means the issues are only relevant to
11149 plain @acronym{DOS}, not to @acronym{DOS} under Microsoft Windows
11150 variants, while @sc{lfn} identifies problems that exist even under
11151 Microsoft Windows variants.
11153 @table @asis
11154 @item No multiple dots (@sc{sfn})
11155 @acronym{DOS} cannot handle multiple dots in file names.  This is an especially
11156 important thing to remember when building a portable configure script,
11157 as @command{autoconf} uses a .in suffix for template files.
11159 This is perfectly OK on Posix variants:
11161 @example
11162 AC_CONFIG_HEADERS([config.h])
11163 AC_CONFIG_FILES([source.c foo.bar])
11164 AC_OUTPUT
11165 @end example
11167 @noindent
11168 but it causes problems on @acronym{DOS}, as it requires @samp{config.h.in},
11169 @samp{source.c.in} and @samp{foo.bar.in}.  To make your package more portable
11170 to @acronym{DOS}-based environments, you should use this instead:
11172 @example
11173 AC_CONFIG_HEADERS([config.h:config.hin])
11174 AC_CONFIG_FILES([source.c:source.cin foo.bar:foobar.in])
11175 AC_OUTPUT
11176 @end example
11178 @item No leading dot (@sc{sfn})
11179 @acronym{DOS} cannot handle file names that start with a dot.  This is usually
11180 not important for @command{autoconf}.
11182 @item Case insensitivity (@sc{lfn})
11183 @acronym{DOS} is case insensitive, so you cannot, for example, have both a
11184 file called @samp{INSTALL} and a directory called @samp{install}.  This
11185 also affects @command{make}; if there's a file called @samp{INSTALL} in
11186 the directory, @samp{make install} does nothing (unless the
11187 @samp{install} target is marked as PHONY).
11189 @item The 8+3 limit (@sc{sfn})
11190 Because the @acronym{DOS} file system only stores the first 8 characters of
11191 the file name and the first 3 of the extension, those must be unique.
11192 That means that @file{foobar-part1.c}, @file{foobar-part2.c} and
11193 @file{foobar-prettybird.c} all resolve to the same file name
11194 (@file{FOOBAR-P.C}).  The same goes for @file{foo.bar} and
11195 @file{foo.bartender}.
11197 The 8+3 limit is not usually a problem under Microsoft Windows, as it
11198 uses numeric
11199 tails in the short version of file names to make them unique.  However, a
11200 registry setting can turn this behavior off.  While this makes it
11201 possible to share file trees containing long file names between @sc{sfn}
11202 and @sc{lfn} environments, it also means the above problem applies there
11203 as well.
11205 @item Invalid characters (@sc{lfn})
11206 Some characters are invalid in @acronym{DOS} file names, and should therefore
11207 be avoided.  In a @sc{lfn} environment, these are @samp{/}, @samp{\},
11208 @samp{?}, @samp{*}, @samp{:}, @samp{<}, @samp{>}, @samp{|} and @samp{"}.
11209 In a @sc{sfn} environment, other characters are also invalid.  These
11210 include @samp{+}, @samp{,}, @samp{[} and @samp{]}.
11212 @item Invalid names (@sc{lfn})
11213 Some @acronym{DOS} file names are reserved, and cause problems if you
11214 try to use files with those names.  These names include @file{CON},
11215 @file{AUX}, @file{COM1}, @file{COM2}, @file{COM3}, @file{COM4},
11216 @file{LPT1}, @file{LPT2}, @file{LPT3}, @file{NUL}, and @file{PRN}.
11217 File names are case insensitive, so even names like
11218 @file{aux/config.guess} are disallowed.
11220 @end table
11222 @node Shell Substitutions
11223 @section Shell Substitutions
11224 @cindex Shell substitutions
11226 Contrary to a persistent urban legend, the Bourne shell does not
11227 systematically split variables and back-quoted expressions, in particular
11228 on the right-hand side of assignments and in the argument of @code{case}.
11229 For instance, the following code:
11231 @example
11232 case "$given_srcdir" in
11233 .)  top_srcdir="`echo "$dots" | sed 's,/$,,'`" ;;
11234 *)  top_srcdir="$dots$given_srcdir" ;;
11235 esac
11236 @end example
11238 @noindent
11239 is more readable when written as:
11241 @example
11242 case $given_srcdir in
11243 .)  top_srcdir=`echo "$dots" | sed 's,/$,,'` ;;
11244 *)  top_srcdir=$dots$given_srcdir ;;
11245 esac
11246 @end example
11248 @noindent
11249 and in fact it is even @emph{more} portable: in the first case of the
11250 first attempt, the computation of @code{top_srcdir} is not portable,
11251 since not all shells properly understand @code{"`@dots{}"@dots{}"@dots{}`"}.
11252 Worse yet, not all shells understand @code{"`@dots{}\"@dots{}\"@dots{}`"}
11253 the same way.  There is just no portable way to use double-quoted
11254 strings inside double-quoted back-quoted expressions (pfew!).
11256 @table @code
11257 @item $@@
11258 @cindex @samp{"$@@"}
11259 One of the most famous shell-portability issues is related to
11260 @samp{"$@@"}.  When there are no positional arguments, Posix says
11261 that @samp{"$@@"} is supposed to be equivalent to nothing, but the
11262 original Unix version 7 Bourne shell treated it as equivalent to
11263 @samp{""} instead, and this behavior survives in later implementations
11264 like Digital Unix 5.0.
11266 The traditional way to work around this portability problem is to use
11267 @samp{$@{1+"$@@"@}}.  Unfortunately this method does not work with
11268 Zsh (3.x and 4.x), which is used on Mac OS X@.  When emulating
11269 the Bourne shell, Zsh performs word splitting on @samp{$@{1+"$@@"@}}:
11271 @example
11272 zsh $ @kbd{emulate sh}
11273 zsh $ @kbd{for i in "$@@"; do echo $i; done}
11274 Hello World
11276 zsh $ @kbd{for i in $@{1+"$@@"@}; do echo $i; done}
11277 Hello
11278 World
11280 @end example
11282 @noindent
11283 Zsh handles plain @samp{"$@@"} properly, but we can't use plain
11284 @samp{"$@@"} because of the portability problems mentioned above.
11285 One workaround relies on Zsh's ``global aliases'' to convert
11286 @samp{$@{1+"$@@"@}} into @samp{"$@@"} by itself:
11288 @example
11289 test "$@{ZSH_VERSION+set@}" = set && alias -g '$@{1+"$@@"@}'='"$@@"'
11290 @end example
11292 A more conservative workaround is to avoid @samp{"$@@"} if it is
11293 possible that there may be no positional arguments.  For example,
11294 instead of:
11296 @example
11297 cat conftest.c "$@@"
11298 @end example
11300 you can use this instead:
11302 @example
11303 case $# in
11304 0) cat conftest.c;;
11305 *) cat conftest.c "$@@";;
11306 esac
11307 @end example
11309 Autoconf macros often use the @command{set} command to update
11310 @samp{$@@}, so if you are writing shell code intended for
11311 @command{configure} you should not assume that the value of @samp{$@@}
11312 persists for any length of time.
11315 @item $@{10@}
11316 @cindex positional parameters
11317 The 10th, 11th, @dots{} positional parameters can be accessed only after
11318 a @code{shift}.  The 7th Edition shell reported an error if given
11319 @code{$@{10@}}, and
11320 Solaris 10 @command{/bin/sh} still acts that way:
11322 @example
11323 $ @kbd{set 1 2 3 4 5 6 7 8 9 10}
11324 $ @kbd{echo $@{10@}}
11325 bad substitution
11326 @end example
11328 @item $@{@var{var}:-@var{value}@}
11329 @c Info cannot handle `:' in index entries.
11330 @c @cindex $@{@var{var}:-@var{value}@}
11331 Old @acronym{BSD} shells, including the Ultrix @code{sh}, don't accept the
11332 colon for any shell substitution, and complain and die.
11334 @item $@{@var{var}=@var{literal}@}
11335 @cindex $@{@var{var}=@var{literal}@}
11336 Be sure to quote:
11338 @example
11339 : $@{var='Some words'@}
11340 @end example
11342 @noindent
11343 otherwise some shells, such as on Digital Unix V 5.0, die because
11344 of a ``bad substitution''.
11346 @sp 1
11348 Solaris @command{/bin/sh} has a frightening bug in its interpretation
11349 of this.  Imagine you need set a variable to a string containing
11350 @samp{@}}.  This @samp{@}} character confuses Solaris @command{/bin/sh}
11351 when the affected variable was already set.  This bug can be exercised
11352 by running:
11354 @example
11355 $ @kbd{unset foo}
11356 $ @kbd{foo=$@{foo='@}'@}}
11357 $ @kbd{echo $foo}
11359 $ @kbd{foo=$@{foo='@}'   # no error; this hints to what the bug is}
11360 $ @kbd{echo $foo}
11362 $ @kbd{foo=$@{foo='@}'@}}
11363 $ @kbd{echo $foo}
11364 @}@}
11365  ^ ugh!
11366 @end example
11368 It seems that @samp{@}} is interpreted as matching @samp{$@{}, even
11369 though it is enclosed in single quotes.  The problem doesn't happen
11370 using double quotes.
11372 @item $@{@var{var}=@var{expanded-value}@}
11373 @cindex $@{@var{var}=@var{expanded-value}@}
11374 On Ultrix,
11375 running
11377 @example
11378 default="yu,yaa"
11379 : $@{var="$default"@}
11380 @end example
11382 @noindent
11383 sets @var{var} to @samp{M-yM-uM-,M-yM-aM-a}, i.e., the 8th bit of
11384 each char is set.  You don't observe the phenomenon using a simple
11385 @samp{echo $var} since apparently the shell resets the 8th bit when it
11386 expands $var.  Here are two means to make this shell confess its sins:
11388 @example
11389 $ @kbd{cat -v <<EOF
11390 $var
11391 EOF}
11392 @end example
11394 @noindent
11397 @example
11398 $ @kbd{set | grep '^var=' | cat -v}
11399 @end example
11401 One classic incarnation of this bug is:
11403 @example
11404 default="a b c"
11405 : $@{list="$default"@}
11406 for c in $list; do
11407   echo $c
11408 done
11409 @end example
11411 @noindent
11412 You'll get @samp{a b c} on a single line.  Why?  Because there are no
11413 spaces in @samp{$list}: there are @samp{M- }, i.e., spaces with the 8th
11414 bit set, hence no IFS splitting is performed!!!
11416 One piece of good news is that Ultrix works fine with @samp{:
11417 $@{list=$default@}}; i.e., if you @emph{don't} quote.  The bad news is
11418 then that @acronym{QNX} 4.25 then sets @var{list} to the @emph{last} item of
11419 @var{default}!
11421 The portable way out consists in using a double assignment, to switch
11422 the 8th bit twice on Ultrix:
11424 @example
11425 list=$@{list="$default"@}
11426 @end example
11428 @noindent
11429 @dots{}but beware of the @samp{@}} bug from Solaris (see above).  For safety,
11430 use:
11432 @example
11433 test "$@{var+set@}" = set || var=@var{@{value@}}
11434 @end example
11437 @item `@var{commands}`
11438 @cindex `@var{commands}`
11439 @cindex Command Substitution
11440 Posix requires shells to trim all trailing newlines from command
11441 output before substituting it, so assignments like
11442 @samp{dir=`echo "$file" | tr a A`} do not work as expected if
11443 @samp{$file} ends in a newline.
11445 While in general it makes no sense, do not substitute a single builtin
11446 with side effects, because Ash 0.2, trying to optimize, does not fork a
11447 subshell to perform the command.
11449 For instance, if you wanted to check that @command{cd} is silent, do not
11450 use @samp{test -z "`cd /`"} because the following can happen:
11452 @example
11453 $ @kbd{pwd}
11454 /tmp
11455 $ @kbd{test -z "`cd /`" && pwd}
11457 @end example
11459 @noindent
11460 The result of @samp{foo=`exit 1`} is left as an exercise to the reader.
11462 The MSYS shell leaves a stray byte in the expansion of a double-quoted
11463 command substitution of a native program, if the end of the substution
11464 is not aligned with the end of the double quote.  This may be worked
11465 around by inserting another pair of quotes:
11467 @example
11468 $ @kbd{echo "`printf 'foo\r\n'` bar" > broken}
11469 $ @kbd{echo "`printf 'foo\r\n'`"" bar" | cmp - broken}
11470 - broken differ: char 4, line 1
11471 @end example
11474 @item $(@var{commands})
11475 @cindex $(@var{commands})
11476 This construct is meant to replace @samp{`@var{commands}`},
11477 and it has most of the problems listed under @code{`@var{commands}`}.
11479 This construct can be
11480 nested while this is impossible to do portably with back quotes.
11481 Unfortunately it is not yet universally supported.  Most notably, even recent
11482 releases of Solaris don't support it:
11484 @example
11485 $ @kbd{showrev -c /bin/sh | grep version}
11486 Command version: SunOS 5.10 Generic 121004-01 Oct 2005
11487 $ @kbd{echo $(echo blah)}
11488 syntax error: `(' unexpected
11489 @end example
11491 @noindent
11492 nor does @sc{irix} 6.5's Bourne shell:
11493 @example
11494 $ @kbd{uname -a}
11495 IRIX firebird-image 6.5 07151432 IP22
11496 $ @kbd{echo $(echo blah)}
11497 $(echo blah)
11498 @end example
11500 If you do use @samp{$(@var{commands})}, make sure that the commands
11501 do not start with a parenthesis, as that would cause confusion with
11502 a different notation @samp{$((@var{expression}))} that in modern
11503 shells is an arithmetic expression not a command.  To avoid the
11504 confusion, insert a space between the two opening parentheses.
11506 Avoid @var{commands} that contain unbalanced parentheses in
11507 here-documents, comments, or case statement patterns, as many shells
11508 mishandle them.  For example, Bash 3.1, @samp{ksh88}, @command{pdksh}
11509 5.2.14, and Zsh 4.2.6 all mishandle the following valid command:
11511 @example
11512 echo $(case x in x) echo hello;; esac)
11513 @end example
11515 @item ^
11516 @cindex ^ quoting
11517 Always quote @samp{^}, otherwise traditional shells such as
11518 @command{/bin/sh} on Solaris 10 treat this like @samp{|}.
11520 @end table
11523 @node Assignments
11524 @section Assignments
11525 @cindex Shell assignments
11527 When setting several variables in a row, be aware that the order of the
11528 evaluation is undefined.  For instance @samp{foo=1 foo=2; echo $foo}
11529 gives @samp{1} with Solaris @command{/bin/sh}, but @samp{2} with Bash.
11530 You must use
11531 @samp{;} to enforce the order: @samp{foo=1; foo=2; echo $foo}.
11533 Don't rely on the following to find @file{subdir/program}:
11535 @example
11536 PATH=subdir$PATH_SEPARATOR$PATH program
11537 @end example
11539 @noindent
11540 as this does not work with Zsh 3.0.6.  Use something like this
11541 instead:
11543 @example
11544 (PATH=subdir$PATH_SEPARATOR$PATH; export PATH; exec program)
11545 @end example
11547 Don't rely on the exit status of an assignment: Ash 0.2 does not change
11548 the status and propagates that of the last statement:
11550 @example
11551 $ @kbd{false || foo=bar; echo $?}
11553 $ @kbd{false || foo=`:`; echo $?}
11555 @end example
11557 @noindent
11558 and to make things even worse, @acronym{QNX} 4.25 just sets the exit status
11559 to 0 in any case:
11561 @example
11562 $ @kbd{foo=`exit 1`; echo $?}
11564 @end example
11566 To assign default values, follow this algorithm:
11568 @enumerate
11569 @item
11570 If the default value is a literal and does not contain any closing
11571 brace, use:
11573 @example
11574 : $@{var='my literal'@}
11575 @end example
11577 @item
11578 If the default value contains no closing brace, has to be expanded, and
11579 the variable being initialized is not intended to be IFS-split
11580 (i.e., it's not a list), then use:
11582 @example
11583 : $@{var="$default"@}
11584 @end example
11586 @item
11587 If the default value contains no closing brace, has to be expanded, and
11588 the variable being initialized is intended to be IFS-split (i.e., it's a list),
11589 then use:
11591 @example
11592 var=$@{var="$default"@}
11593 @end example
11595 @item
11596 If the default value contains a closing brace, then use:
11598 @example
11599 test "$@{var+set@}" = set || var="$default"
11600 @end example
11601 @end enumerate
11603 In most cases @samp{var=$@{var="$default"@}} is fine, but in case of
11604 doubt, just use the latter.  @xref{Shell Substitutions}, items
11605 @samp{$@{@var{var}:-@var{value}@}} and @samp{$@{@var{var}=@var{value}@}}
11606 for the rationale.
11608 @node Parentheses
11609 @section Parentheses in Shell Scripts
11610 @cindex Shell parentheses
11612 Beware of two opening parentheses in a row, as some shell
11613 implementations mishandle them.  For example, @samp{pdksh} 5.2.14
11614 misparses the following code:
11616 @example
11617 if ((true) || false); then
11618   echo ok
11620 @end example
11622 @noindent
11623 To work around this problem, insert a space between the two opening
11624 parentheses.  There is a similar problem and workaround with
11625 @samp{$((}; see @ref{Shell Substitutions}.
11627 Posix requires support for @code{case} patterns with opening
11628 parentheses like this:
11630 @example
11631 case $file_name in
11632 (*.c) echo "C source code";;
11633 esac
11634 @end example
11636 @noindent
11637 but the @code{(} in this example is not portable to many older Bourne
11638 shell implementations.  It can be omitted safely.
11640 @node Slashes
11641 @section Slashes in Shell Scripts
11642 @cindex Shell slashes
11644 Unpatched Tru64 5.1 @command{sh} omits the last slash of command-line
11645 arguments that contain two trailing slashes:
11647 @example
11648 $ @kbd{echo / // /// //// .// //.}
11649 / / // /// ./ //.
11650 $ @kbd{x=//}
11651 $ @kbd{eval "echo \$x"}
11653 $ @kbd{set -x}
11654 $ @kbd{echo abc | tr -t ab //}
11655 + echo abc
11656 + tr -t ab /
11658 @end example
11660 However, our understanding is that patches are available, so perhaps
11661 it's not worth worrying about working around this horrendous bug.
11663 @node Special Shell Variables
11664 @section Special Shell Variables
11665 @cindex Shell variables
11666 @cindex Special shell variables
11668 Some shell variables should not be used, since they can have a deep
11669 influence on the behavior of the shell.  In order to recover a sane
11670 behavior from the shell, some variables should be unset, but
11671 @command{unset} is not portable (@pxref{Limitations of Builtins}) and a
11672 fallback value is needed.
11674 As a general rule, shell variable names containing a lower-case letter
11675 are safe; you can define and use these variables without worrying about
11676 their effect on the underlying system, and without worrying about
11677 whether the shell changes them unexpectedly.  (The exception is the
11678 shell variable @code{status}, as described below.)
11680 Here is a list of names that are known to cause trouble.  This list is
11681 not exhaustive, but you should be safe if you avoid the name
11682 @code{status} and names containing only upper-case letters and
11683 underscores.
11685 @c Alphabetical order, case insensitive, `A' before `a'.
11686 @table @code
11687 @item _
11688 Many shells reserve @samp{$_} for various purposes, e.g., the name of
11689 the last command executed.
11691 @item BIN_SH
11692 @evindex BIN_SH
11693 In Tru64, if @env{BIN_SH} is set to @code{xpg4}, subsidiary invocations of
11694 the standard shell conform to Posix.
11695 Autoconf-generated scripts export this variable when they start up.
11697 @item CDPATH
11698 @evindex CDPATH
11699 When this variable is set it specifies a list of directories to search
11700 when invoking @code{cd} with a relative file name.  Posix
11701 1003.1-2001 says that if a nonempty directory name from @env{CDPATH}
11702 is used successfully, @code{cd} prints the resulting absolute
11703 file name.  Unfortunately this output can break idioms like
11704 @samp{abs=`cd src && pwd`} because @code{abs} receives the name twice.
11705 Also, many shells do not conform to this part of Posix; for
11706 example, @command{zsh} prints the result only if a directory name
11707 other than @file{.} was chosen from @env{CDPATH}.
11709 In practice the shells that have this problem also support
11710 @command{unset}, so you can work around the problem as follows:
11712 @example
11713 (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
11714 @end example
11716 Autoconf-generated scripts automatically unset @env{CDPATH} if
11717 possible, so you need not worry about this problem in those scripts.
11719 @item DUALCASE
11720 @evindex DUALCASE
11721 In the MKS shell, case statements and file name generation are
11722 case-insensitive unless @env{DUALCASE} is nonzero.
11723 Autoconf-generated scripts export this variable when they start up.
11725 @item ENV
11726 @itemx MAIL
11727 @itemx MAILPATH
11728 @itemx PS1
11729 @itemx PS2
11730 @itemx PS4
11731 @evindex ENV
11732 @evindex MAIL
11733 @evindex MAILPATH
11734 @evindex PS1
11735 @evindex PS2
11736 @evindex PS4
11737 These variables should not matter for shell scripts, since they are
11738 supposed to affect only interactive shells.  However, at least one
11739 shell (the pre-3.0 @sc{uwin} Korn shell) gets confused about
11740 whether it is interactive, which means that (for example) a @env{PS1}
11741 with a side effect can unexpectedly modify @samp{$?}.  To work around
11742 this bug, Autoconf-generated scripts do something like this:
11744 @example
11745 (unset ENV) >/dev/null 2>&1 && unset ENV MAIL MAILPATH
11746 PS1='$ '
11747 PS2='> '
11748 PS4='+ '
11749 @end example
11751 @item IFS
11752 @evindex IFS
11753 Long ago, shell scripts inherited @env{IFS} from the environment,
11754 but this caused many problems so modern shells ignore any environment
11755 settings for @env{IFS}.
11757 Don't set the first character of @code{IFS} to backslash.  Indeed,
11758 Bourne shells use the first character (backslash) when joining the
11759 components in @samp{"$@@"} and some shells then reinterpret (!)@: the
11760 backslash escapes, so you can end up with backspace and other strange
11761 characters.
11763 The proper value for @code{IFS} (in regular code, not when performing
11764 splits) is @samp{@key{SPC}@key{TAB}@key{RET}}.  The first character is
11765 especially important, as it is used to join the arguments in @samp{$*};
11766 however, note that traditional shells, but also bash-2.04, fail to adhere
11767 to this and join with a space anyway.
11769 @item LANG
11770 @itemx LC_ALL
11771 @itemx LC_COLLATE
11772 @itemx LC_CTYPE
11773 @itemx LC_MESSAGES
11774 @itemx LC_MONETARY
11775 @itemx LC_NUMERIC
11776 @itemx LC_TIME
11777 @evindex LANG
11778 @evindex LC_ALL
11779 @evindex LC_COLLATE
11780 @evindex LC_CTYPE
11781 @evindex LC_MESSAGES
11782 @evindex LC_MONETARY
11783 @evindex LC_NUMERIC
11784 @evindex LC_TIME
11786 Autoconf-generated scripts normally set all these variables to
11787 @samp{C} because so much configuration code assumes the C locale and
11788 Posix requires that locale environment variables be set to
11789 @samp{C} if the C locale is desired.  However, some older, nonstandard
11790 systems (notably @acronym{SCO}) break if locale environment variables
11791 are set to @samp{C}, so when running on these systems
11792 Autoconf-generated scripts unset the variables instead.
11794 @item LANGUAGE
11795 @evindex LANGUAGE
11797 @env{LANGUAGE} is not specified by Posix, but it is a @acronym{GNU}
11798 extension that overrides @env{LC_ALL} in some cases, so
11799 Autoconf-generated scripts set it too.
11801 @item LC_ADDRESS
11802 @itemx LC_IDENTIFICATION
11803 @itemx LC_MEASUREMENT
11804 @itemx LC_NAME
11805 @itemx LC_PAPER
11806 @itemx LC_TELEPHONE
11807 @evindex LC_ADDRESS
11808 @evindex LC_IDENTIFICATION
11809 @evindex LC_MEASUREMENT
11810 @evindex LC_NAME
11811 @evindex LC_PAPER
11812 @evindex LC_TELEPHONE
11814 These locale environment variables are @acronym{GNU} extensions.  They
11815 are treated like their Posix brethren (@env{LC_COLLATE},
11816 etc.)@: as described above.
11818 @item LINENO
11819 Most modern shells provide the current line number in @code{LINENO}.
11820 Its value is the line number of the beginning of the current command.
11821 Autoconf attempts to execute @command{configure} with a shell that
11822 supports @code{LINENO}.
11823 If no such shell is available, it attempts to implement @code{LINENO}
11824 with a Sed prepass that replaces each instance of the string
11825 @code{$LINENO} (not followed by an alphanumeric character) with the
11826 line's number.
11828 You should not rely on @code{LINENO} within @command{eval}, as the
11829 behavior differs in practice.  Also, the possibility of the Sed
11830 prepass means that you should not rely on @code{$LINENO} when quoted,
11831 when in here-documents, or when in long commands that cross line
11832 boundaries.  Subshells should be OK, though.  In the following
11833 example, lines 1, 6, and 9 are portable, but the other instances of
11834 @code{LINENO} are not:
11836 @example
11837 @group
11838 $ @kbd{cat lineno}
11839 echo 1. $LINENO
11840 cat <<EOF
11841 3. $LINENO
11842 4. $LINENO
11844 ( echo 6. $LINENO )
11845 eval 'echo 7. $LINENO'
11846 echo 8. '$LINENO'
11847 echo 9. $LINENO '
11848 10.' $LINENO
11849 @end group
11850 @group
11851 $ @kbd{bash-2.05 lineno}
11852 1. 1
11853 3. 2
11854 4. 2
11855 6. 6
11856 7. 1
11857 8. $LINENO
11858 9. 9
11859 10. 9
11860 @end group
11861 @group
11862 $ @kbd{zsh-3.0.6 lineno}
11863 1. 1
11864 3. 2
11865 4. 2
11866 6. 6
11867 7. 7
11868 8. $LINENO
11869 9. 9
11870 10. 9
11871 @end group
11872 @group
11873 $ @kbd{pdksh-5.2.14 lineno}
11874 1. 1
11875 3. 2
11876 4. 2
11877 6. 6
11878 7. 0
11879 8. $LINENO
11880 9. 9
11881 10. 9
11882 @end group
11883 @group
11884 $ @kbd{sed '=' <lineno |}
11885 > @kbd{  sed '}
11886 > @kbd{    N}
11887 > @kbd{    s,$,-,}
11888 > @kbd{    t loop}
11889 > @kbd{    :loop}
11890 > @kbd{    s,^\([0-9]*\)\(.*\)[$]LINENO\([^a-zA-Z0-9_]\),\1\2\1\3,}
11891 > @kbd{    t loop}
11892 > @kbd{    s,-$,,}
11893 > @kbd{    s,^[0-9]*\n,,}
11894 > @kbd{  ' |}
11895 > @kbd{  sh}
11896 1. 1
11897 3. 3
11898 4. 4
11899 6. 6
11900 7. 7
11901 8. 8
11902 9. 9
11903 10. 10
11904 @end group
11905 @end example
11907 @item NULLCMD
11908 @evindex NULLCMD
11909 When executing the command @samp{>foo}, @command{zsh} executes
11910 @samp{$NULLCMD >foo} unless it is operating in Bourne shell
11911 compatibility mode and the @command{zsh} version is newer
11912 than 3.1.6-dev-18.  If you are using an older @command{zsh}
11913 and forget to set @env{NULLCMD},
11914 your script might be suspended waiting for data on its standard input.
11916 @item PATH_SEPARATOR
11917 @evindex PATH_SEPARATOR
11918 On @acronym{DJGPP} systems, the @env{PATH_SEPARATOR} environment
11919 variable can be set to either @samp{:} or @samp{;} to control the path
11920 separator Bash uses to set up certain environment variables (such as
11921 @env{PATH}).  You can set this variable to @samp{;} if you want
11922 @command{configure} to use @samp{;} as a separator; this might be useful
11923 if you plan to use non-Posix shells to execute files.  @xref{File System
11924 Conventions}, for more information about @code{PATH_SEPARATOR}.
11926 @item PWD
11927 @evindex PWD
11928 Posix 1003.1-2001 requires that @command{cd} and
11929 @command{pwd} must update the @env{PWD} environment variable to point
11930 to the logical name of the current directory, but traditional shells
11931 do not support this.  This can cause confusion if one shell instance
11932 maintains @env{PWD} but a subsidiary and different shell does not know
11933 about @env{PWD} and executes @command{cd}; in this case @env{PWD}
11934 points to the wrong directory.  Use @samp{`pwd`} rather than
11935 @samp{$PWD}.
11937 @item RANDOM
11938 Many shells provide @code{RANDOM}, a variable that returns a different
11939 integer each time it is used.  Most of the time, its value does not
11940 change when it is not used, but on @sc{irix} 6.5 the value changes all
11941 the time.  This can be observed by using @command{set}.  It is common
11942 practice to use @code{$RANDOM} as part of a file name, but code
11943 shouldn't rely on @code{$RANDOM} expanding to a nonempty string.
11945 @item status
11946 This variable is an alias to @samp{$?} for @code{zsh} (at least 3.1.6),
11947 hence read-only.  Do not use it.
11948 @end table
11950 @node Limitations of Builtins
11951 @section Limitations of Shell Builtins
11952 @cindex Shell builtins
11953 @cindex Limitations of shell builtins
11955 No, no, we are serious: some shells do have limitations!  :)
11957 You should always keep in mind that any builtin or command may support
11958 options, and therefore differ in behavior with arguments
11959 starting with a dash.  For instance, the innocent @samp{echo "$word"}
11960 can give unexpected results when @code{word} starts with a dash.  It is
11961 often possible to avoid this problem using @samp{echo "x$word"}, taking
11962 the @samp{x} into account later in the pipe.
11964 @table @asis
11965 @item @command{.}
11966 @prindex @command{.}
11967 Use @command{.} only with regular files (use @samp{test -f}).  Bash
11968 2.03, for instance, chokes on @samp{. /dev/null}.  Also, remember that
11969 @command{.} uses @env{PATH} if its argument contains no slashes, so if
11970 you want to use @command{.} on a file @file{foo} in the current
11971 directory, you must use @samp{. ./foo}.
11973 @item @command{!}
11974 @prindex @command{!}
11975 The Unix version 7 shell did not support
11976 negating the exit status of commands with @command{!}, and this feature
11977 is still absent from some shells (e.g., Solaris @command{/bin/sh}).
11978 Shell code like this:
11980 @example
11981 if ! cmp file1 file2 >/dev/null 2>&1; then
11982   echo files differ or trouble
11984 @end example
11986 is therefore not portable in practice.  Typically it is easy to rewrite
11987 such code, e.g.:
11989 @example
11990 cmp file1 file2 >/dev/null 2>&1 ||
11991   echo files differ or trouble
11992 @end example
11994 More generally, one can always rewrite @samp{! @var{command}} as:
11996 @example
11997 if @var{command}; then (exit 1); else :; fi
11998 @end example
12000 @item @command{break}
12001 @c ------------------
12002 @prindex @command{break}
12003 The use of @samp{break 2} etc.@: is safe.
12006 @item @command{case}
12007 @c -----------------
12008 @prindex @command{case}
12009 You don't need to quote the argument; no splitting is performed.
12011 You don't need the final @samp{;;}, but you should use it.
12013 Because of a bug in its @code{fnmatch}, Bash fails to properly
12014 handle backslashes in character classes:
12016 @example
12017 bash-2.02$ @kbd{case /tmp in [/\\]*) echo OK;; esac}
12018 bash-2.02$
12019 @end example
12021 @noindent
12022 This is extremely unfortunate, since you are likely to use this code to
12023 handle Posix or @sc{ms-dos} absolute file names.  To work around this
12024 bug, always put the backslash first:
12026 @example
12027 bash-2.02$ @kbd{case '\TMP' in [\\/]*) echo OK;; esac}
12029 bash-2.02$ @kbd{case /tmp in [\\/]*) echo OK;; esac}
12031 @end example
12033 Many Bourne shells cannot handle closing brackets in character classes
12034 correctly.
12036 Some shells also have problems with backslash escaping in case you do not want
12037 to match the backslash: both a backslash and the escaped character match this
12038 pattern.  To work around this, specify the character class in a variable, so
12039 that quote removal does not apply afterwards, and the special characters don't
12040 have to be backslash-escaped:
12042 @example
12043 $ @kbd{case '\' in [\<]) echo OK;; esac}
12045 $ @kbd{scanset='[<]'; case '\' in $scanset) echo OK;; esac}
12047 @end example
12049 Even with this, Solaris @command{ksh} matches a backslash if the set
12050 contains any
12051 of the characters @samp{|}, @samp{&}, @samp{(}, or @samp{)}.
12053 Conversely, Tru64 @command{ksh} (circa 2003) erroneously always matches
12054 a closing parenthesis if not specified in a character class:
12056 @example
12057 $ @kbd{case foo in *\)*) echo fail ;; esac}
12058 fail
12059 $ @kbd{case foo in *')'*) echo fail ;; esac}
12060 fail
12061 @end example
12063 Some shells, such as Ash 0.3.8, are confused by an empty
12064 @code{case}/@code{esac}:
12066 @example
12067 ash-0.3.8 $ @kbd{case foo in esac;}
12068 @error{}Syntax error: ";" unexpected (expecting ")")
12069 @end example
12071 Many shells still do not support parenthesized cases, which is a pity
12072 for those of us using tools that rely on balanced parentheses.  For
12073 instance, Solaris @command{/bin/sh}:
12075 @example
12076 $ @kbd{case foo in (foo) echo foo;; esac}
12077 @error{}syntax error: `(' unexpected
12078 @end example
12081 @item @command{cd}
12082 @c ---------------
12083 @prindex @command{cd}
12084 Posix 1003.1-2001 requires that @command{cd} must support
12085 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
12086 with @option{-L} being the default.  However, traditional shells do
12087 not support these options, and their @command{cd} command has the
12088 @option{-P} behavior.
12090 Portable scripts should assume neither option is supported, and should
12091 assume neither behavior is the default.  This can be a bit tricky,
12092 since the Posix default behavior means that, for example,
12093 @samp{ls ..} and @samp{cd ..} may refer to different directories if
12094 the current logical directory is a symbolic link.  It is safe to use
12095 @command{cd @var{dir}} if @var{dir} contains no @file{..} components.
12096 Also, Autoconf-generated scripts check for this problem when computing
12097 variables like @code{ac_top_srcdir} (@pxref{Configuration Actions}),
12098 so it is safe to @command{cd} to these variables.
12100 Also please see the discussion of the @command{pwd} command.
12103 @item @command{echo}
12104 @c -----------------
12105 @prindex @command{echo}
12106 The simple @command{echo} is probably the most surprising source of
12107 portability troubles.  It is not possible to use @samp{echo} portably
12108 unless both options and escape sequences are omitted.  New applications
12109 which are not aiming at portability should use @samp{printf} instead of
12110 @samp{echo}.
12112 Don't expect any option.  @xref{Preset Output Variables}, @code{ECHO_N}
12113 etc.@: for a means to simulate @option{-n}.
12115 Do not use backslashes in the arguments, as there is no consensus on
12116 their handling.  For @samp{echo '\n' | wc -l}, the @command{sh} of
12117 Solaris outputs 2, but Bash and Zsh (in @command{sh} emulation mode) output 1.
12118 The problem is truly @command{echo}: all the shells
12119 understand @samp{'\n'} as the string composed of a backslash and an
12120 @samp{n}.
12122 Because of these problems, do not pass a string containing arbitrary
12123 characters to @command{echo}.  For example, @samp{echo "$foo"} is safe
12124 if you know that @var{foo}'s value cannot contain backslashes and cannot
12125 start with @samp{-}, but otherwise you should use a here-document like
12126 this:
12128 @example
12129 cat <<EOF
12130 $foo
12132 @end example
12135 @item @command{eval}
12136 @c -----------------
12137 @prindex @command{eval}
12138 The @command{eval} command is useful in limited circumstances, e.g.,
12139 using commands like @samp{eval table_$key=\$value} and @samp{eval
12140 value=table_$key} to simulate a hash table when the key is known to be
12141 alphanumeric.  However, @command{eval} is tricky to use on arbitrary
12142 arguments, even when it is implemented correctly.
12144 It is obviously unwise to use @samp{eval $cmd} if the string value of
12145 @samp{cmd} was derived from an untrustworthy source.  But even if the
12146 string value is valid, @samp{eval $cmd} might not work as intended,
12147 since it causes field splitting and file name expansion to occur twice,
12148 once for the @command{eval} and once for the command itself.  It is
12149 therefore safer to use @samp{eval "$cmd"}.  For example, if @var{cmd}
12150 has the value @samp{cat test?.c}, @samp{eval $cmd} might expand to the
12151 equivalent of @samp{cat test;.c} if there happens to be a file named
12152 @file{test;.c} in the current directory; and this in turn
12153 mistakenly attempts to invoke @command{cat} on the file @file{test} and
12154 then execute the command @command{.c}.  To avoid this problem, use
12155 @samp{eval "$cmd"} rather than @samp{eval $cmd}.
12157 However, suppose that you want to output the text of the evaluated
12158 command just before executing it.  Assuming the previous example,
12159 @samp{echo "Executing: $cmd"} outputs @samp{Executing: cat test?.c}, but
12160 this output doesn't show the user that @samp{test;.c} is the actual name
12161 of the copied file.  Conversely, @samp{eval "echo Executing: $cmd"}
12162 works on this example, but it fails with @samp{cmd='cat foo >bar'},
12163 since it mistakenly replaces the contents of @file{bar} by the
12164 string @samp{cat foo}.  No simple, general, and portable solution to
12165 this problem is known.
12167 You should also be wary of common bugs in @command{eval} implementations.
12168 In some shell implementations (e.g., older @command{ash}, Open@acronym{BSD} 3.8
12169 @command{sh}, @command{pdksh} v5.2.14 99/07/13.2, and @command{zsh}
12170 4.2.5), the arguments of @samp{eval} are evaluated in a context where
12171 @samp{$?} is 0, so they exhibit behavior like this:
12173 @example
12174 $ @kbd{false; eval 'echo $?'}
12176 @end example
12178 The correct behavior here is to output a nonzero value,
12179 but portable scripts should not rely on this.
12181 You should not rely on @code{LINENO} within @command{eval}.
12182 @xref{Special Shell Variables}.
12184 @item @command{exit}
12185 @c -----------------
12186 @prindex @command{exit}
12187 The default value of @command{exit} is supposed to be @code{$?};
12188 unfortunately, some shells, such as the @acronym{DJGPP} port of Bash 2.04, just
12189 perform @samp{exit 0}.
12191 @example
12192 bash-2.04$ @kbd{foo=`exit 1` || echo fail}
12193 fail
12194 bash-2.04$ @kbd{foo=`(exit 1)` || echo fail}
12195 fail
12196 bash-2.04$ @kbd{foo=`(exit 1); exit` || echo fail}
12197 bash-2.04$
12198 @end example
12200 Using @samp{exit $?} restores the expected behavior.
12202 Some shell scripts, such as those generated by @command{autoconf}, use a
12203 trap to clean up before exiting.  If the last shell command exited with
12204 nonzero status, the trap also exits with nonzero status so that the
12205 invoker can tell that an error occurred.
12207 Unfortunately, in some shells, such as Solaris @command{/bin/sh}, an exit
12208 trap ignores the @code{exit} command's argument.  In these shells, a trap
12209 cannot determine whether it was invoked by plain @code{exit} or by
12210 @code{exit 1}.  Instead of calling @code{exit} directly, use the
12211 @code{AC_MSG_ERROR} macro that has a workaround for this problem.
12214 @item @command{export}
12215 @c -------------------
12216 @prindex @command{export}
12217 The builtin @command{export} dubs a shell variable @dfn{environment
12218 variable}.  Each update of exported variables corresponds to an update
12219 of the environment variables.  Conversely, each environment variable
12220 received by the shell when it is launched should be imported as a shell
12221 variable marked as exported.
12223 Alas, many shells, such as Solaris @command{/bin/sh},
12224 @sc{irix} 6.3, @sc{irix} 5.2,
12225 @acronym{AIX} 4.1.5, and Digital Unix 4.0, forget to
12226 @command{export} the environment variables they receive.  As a result,
12227 two variables coexist: the environment variable and the shell
12228 variable.  The following code demonstrates this failure:
12230 @example
12231 #!/bin/sh
12232 echo $FOO
12233 FOO=bar
12234 echo $FOO
12235 exec /bin/sh $0
12236 @end example
12238 @noindent
12239 when run with @samp{FOO=foo} in the environment, these shells print
12240 alternately @samp{foo} and @samp{bar}, although they should print only
12241 @samp{foo} and then a sequence of @samp{bar}s.
12243 Therefore you should @command{export} again each environment variable
12244 that you update.
12247 @item @command{false}
12248 @c ------------------
12249 @prindex @command{false}
12250 Don't expect @command{false} to exit with status 1: in native
12251 Solaris @file{/bin/false} exits with status 255.
12254 @item @command{for}
12255 @c ----------------
12256 @prindex @command{for}
12257 To loop over positional arguments, use:
12259 @example
12260 for arg
12262   echo "$arg"
12263 done
12264 @end example
12266 @noindent
12267 You may @emph{not} leave the @code{do} on the same line as @code{for},
12268 since some shells improperly grok:
12270 @example
12271 for arg; do
12272   echo "$arg"
12273 done
12274 @end example
12276 If you want to explicitly refer to the positional arguments, given the
12277 @samp{$@@} bug (@pxref{Shell Substitutions}), use:
12279 @example
12280 for arg in $@{1+"$@@"@}; do
12281   echo "$arg"
12282 done
12283 @end example
12285 @noindent
12286 But keep in mind that Zsh, even in Bourne shell emulation mode, performs
12287 word splitting on @samp{$@{1+"$@@"@}}; see @ref{Shell Substitutions},
12288 item @samp{$@@}, for more.
12291 @item @command{if}
12292 @c ---------------
12293 @prindex @command{if}
12294 Using @samp{!} is not portable.  Instead of:
12296 @example
12297 if ! cmp -s file file.new; then
12298   mv file.new file
12300 @end example
12302 @noindent
12303 use:
12305 @example
12306 if cmp -s file file.new; then :; else
12307   mv file.new file
12309 @end example
12311 There are shells that do not reset the exit status from an @command{if}:
12313 @example
12314 $ @kbd{if (exit 42); then true; fi; echo $?}
12316 @end example
12318 @noindent
12319 whereas a proper shell should have printed @samp{0}.  This is especially
12320 bad in makefiles since it produces false failures.  This is why properly
12321 written makefiles, such as Automake's, have such hairy constructs:
12323 @example
12324 if test -f "$file"; then
12325   install "$file" "$dest"
12326 else
12327   :
12329 @end example
12332 @item @command{printf}
12333 @c ------------------
12334 @prindex @command{printf}
12335 A format string starting with a @samp{-} can cause problems.
12336 Bash (e.g., 2.05b) interprets it as an options argument and
12337 gives an error.  And @samp{--} to mark the end of options is not good
12338 in the Net@acronym{BSD} Almquist shell (e.g., 0.4.6) which takes that
12339 literally as the format string.  Putting the @samp{-} in a @samp{%c}
12340 or @samp{%s} is probably the easiest way to avoid doubt,
12342 @example
12343 printf %s -foo
12344 @end example
12347 @item @command{read}
12348 @c ------------------
12349 @prindex @command{read}
12350 Not all shells support @option{-r} (Solaris @command{/bin/sh} for example).
12353 @item @command{pwd}
12354 @c ----------------
12355 @prindex @command{pwd}
12356 With modern shells, plain @command{pwd} outputs a ``logical''
12357 directory name, some of whose components may be symbolic links.  These
12358 directory names are in contrast to ``physical'' directory names, whose
12359 components are all directories.
12361 Posix 1003.1-2001 requires that @command{pwd} must support
12362 the @option{-L} (``logical'') and @option{-P} (``physical'') options,
12363 with @option{-L} being the default.  However, traditional shells do
12364 not support these options, and their @command{pwd} command has the
12365 @option{-P} behavior.
12367 Portable scripts should assume neither option is supported, and should
12368 assume neither behavior is the default.  Also, on many hosts
12369 @samp{/bin/pwd} is equivalent to @samp{pwd -P}, but Posix
12370 does not require this behavior and portable scripts should not rely on
12373 Typically it's best to use plain @command{pwd}.  On modern hosts this
12374 outputs logical directory names, which have the following advantages:
12376 @itemize @bullet
12377 @item
12378 Logical names are what the user specified.
12379 @item
12380 Physical names may not be portable from one installation
12381 host to another due to network file system gymnastics.
12382 @item
12383 On modern hosts @samp{pwd -P} may fail due to lack of permissions to
12384 some parent directory, but plain @command{pwd} cannot fail for this
12385 reason.
12386 @end itemize
12388 Also please see the discussion of the @command{cd} command.
12391 @item @command{set}
12392 @c ----------------
12393 @prindex @command{set}
12394 With the Free@acronym{BSD} 6.0 shell, the @command{set} command (without
12395 any options) does not sort its output.
12397 The @command{set} builtin faces the usual problem with arguments starting with a
12398 dash.  Modern shells such as Bash or Zsh understand @option{--} to specify
12399 the end of the options (any argument after @option{--} is a parameter,
12400 even @samp{-x} for instance), but many traditional shells (e.g., Solaris
12401 10 @command{/bin/sh}) simply stop option
12402 processing as soon as a non-option argument is found.  Therefore, use
12403 @samp{dummy} or simply @samp{x} to end the option processing, and use
12404 @command{shift} to pop it out:
12406 @example
12407 set x $my_list; shift
12408 @end example
12410 Avoid @samp{set -}, e.g., @samp{set - $my_list}.  Posix no
12411 longer requires support for this command, and in traditional shells
12412 @samp{set - $my_list} resets the @option{-v} and @option{-x} options, which
12413 makes scripts harder to debug.
12415 Some nonstandard shells do not recognize more than one option
12416 (e.g., @samp{set -e -x} assigns @samp{-x} to the command line).  It is
12417 better to combine them:
12419 @example
12420 set -ex
12421 @end example
12423 The @acronym{BSD} shell has had several problems with the @option{-e}
12424 option, partly because @acronym{BSD} @command{make} traditionally used
12425 @option{-e} even though this was incompatible with Posix
12426 (@pxref{Failure in Make Rules}).  Older versions of the @acronym{BSD}
12427 shell (circa 1990) mishandled @samp{&&}, @samp{||}, @samp{if}, and
12428 @samp{case} when @option{-e} was in effect, causing the shell to exit
12429 unexpectedly in some cases.  This was particularly a problem with
12430 makefiles, and led to circumlocutions like @samp{sh -c 'test -f file ||
12431 touch file'}, where the seemingly-unnecessary @samp{sh -c '@dots{}'}
12432 wrapper works around the bug.
12434 Even relatively-recent versions of the @acronym{BSD} shell (e.g.,
12435 Open@acronym{BSD} 3.4) wrongly exit with @option{-e} if a command within
12436 @samp{&&} fails inside a compound statement.  For example:
12438 @example
12439 #! /bin/sh
12440 set -e
12441 foo=''
12442 test -n "$foo" && exit 1
12443 echo one
12444 if :; then
12445   test -n "$foo" && exit 1
12447 echo two
12448 @end example
12450 @noindent
12451 does not print @samp{two}.  One workaround is to use @samp{if test -n
12452 "$foo"; then exit 1; fi} rather than @samp{test -n "$foo" && exit 1}.
12453 Another possibility is to warn @acronym{BSD} users not to use @samp{sh -e}.
12456 @item @command{shift}
12457 @c ------------------
12458 @prindex @command{shift}
12459 Not only is @command{shift}ing a bad idea when there is nothing left to
12460 shift, but in addition it is not portable: the shell of @acronym{MIPS
12461 RISC/OS} 4.52 refuses to do it.
12463 Don't use @samp{shift 2} etc.; it was not in the 7th Edition Bourne shell,
12464 and it is also absent in many pre-Posix shells.
12467 @item @command{source}
12468 @c -------------------
12469 @prindex @command{source}
12470 This command is not portable, as Posix does not require it; use
12471 @command{.} instead.
12474 @item @command{test}
12475 @c -----------------
12476 @prindex @command{test}
12477 The @code{test} program is the way to perform many file and string
12478 tests.  It is often invoked by the alternate name @samp{[}, but using
12479 that name in Autoconf code is asking for trouble since it is an M4 quote
12480 character.
12482 If you need to make multiple checks using @code{test}, combine them with
12483 the shell operators @samp{&&} and @samp{||} instead of using the
12484 @code{test} operators @option{-a} and @option{-o}.  On System V, the
12485 precedence of @option{-a} and @option{-o} is wrong relative to the unary
12486 operators; consequently, Posix does not specify them, so using them
12487 is nonportable.  If you combine @samp{&&} and @samp{||} in the same
12488 statement, keep in mind that they have equal precedence.
12490 It is safe to use @samp{!} as a @command{test} operator.  For example,
12491 @samp{if test ! -d foo; @dots{}} is portable even though @samp{if ! test
12492 -d foo; @dots{}} is not.
12495 @item @command{test} (files)
12496 @c -------------------------
12497 To enable @command{configure} scripts to support cross-compilation, they
12498 shouldn't do anything that tests features of the build system instead of
12499 the host system.  But occasionally you may find it necessary to check
12500 whether some arbitrary file exists.  To do so, use @samp{test -f} or
12501 @samp{test -r}.  Do not use @samp{test -x}, because 4.3@acronym{BSD} does not
12502 have it.  Do not use @samp{test -e} either, because Solaris @command{/bin/sh}
12503 lacks it.  To test for symbolic links on systems that have them, use
12504 @samp{test -h} rather than @samp{test -L}; either form conforms to
12505 Posix 1003.1-2001, but older shells like Solaris 8
12506 @code{/bin/sh} support only @option{-h}.
12508 @item @command{test} (strings)
12509 @c ---------------------------
12510 Avoid @samp{test "@var{string}"}, in particular if @var{string} might
12511 start with a dash, since @code{test} might interpret its argument as an
12512 option (e.g., @samp{@var{string} = "-n"}).
12514 Contrary to a common belief, @samp{test -n @var{string}} and
12515 @samp{test -z @var{string}} @strong{are} portable.  Nevertheless many
12516 shells (such as Solaris, @acronym{AIX} 3.2, @sc{unicos} 10.0.0.6,
12517 Digital Unix 4, etc.)@: have bizarre precedence and may be confused if
12518 @var{string} looks like an operator:
12520 @example
12521 $ @kbd{test -n =}
12522 test: argument expected
12523 @end example
12525 If there are risks, use @samp{test "x@var{string}" = x} or @samp{test
12526 "x@var{string}" != x} instead.
12528 It is common to find variations of the following idiom:
12530 @example
12531 test -n "`echo $ac_feature | sed 's/[-a-zA-Z0-9_]//g'`" &&
12532   @var{action}
12533 @end example
12535 @noindent
12536 to take an action when a token matches a given pattern.  Such constructs
12537 should always be avoided by using:
12539 @example
12540 echo "$ac_feature" | grep '[^-a-zA-Z0-9_]' >/dev/null 2>&1 &&
12541   @var{action}
12542 @end example
12544 @noindent
12545 Use @code{case} where possible since it is faster, being a shell builtin:
12548 @example
12549 case $ac_feature in
12550   *[!-a-zA-Z0-9_]*) @var{action};;
12551 esac
12552 @end example
12554 Alas, negated character classes are probably not portable, although no
12555 shell is known to not support the Posix syntax @samp{[!@dots{}]}
12556 (when in interactive mode, @command{zsh} is confused by the
12557 @samp{[!@dots{}]} syntax and looks for an event in its history because of
12558 @samp{!}).  Many shells do not support the alternative syntax
12559 @samp{[^@dots{}]} (Solaris, Digital Unix, etc.).
12561 One solution can be:
12563 @example
12564 expr "$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
12565   @var{action}
12566 @end example
12568 @noindent
12569 or better yet
12571 @example
12572 expr "X$ac_feature" : '.*[^-a-zA-Z0-9_]' >/dev/null &&
12573   @var{action}
12574 @end example
12576 @samp{expr "X@var{foo}" : "X@var{bar}"} is more robust than @samp{echo
12577 "X@var{foo}" | grep "^X@var{bar}"}, because it avoids problems when
12578 @samp{@var{foo}} contains backslashes.
12581 @item @command{trap}
12582 @c -----------------
12583 @prindex @command{trap}
12584 It is safe to trap at least the signals 1, 2, 13, and 15.  You can also
12585 trap 0, i.e., have the @command{trap} run when the script ends (either via an
12586 explicit @command{exit}, or the end of the script).
12588 Posix says that @samp{trap - 1 2 13 15} resets the traps for the
12589 specified signals to their default values, but many common shells (e.g.,
12590 Solaris @command{/bin/sh}) misinterpret this and attempt to execute a
12591 ``command'' named @command{-} when the specified conditions arise.
12592 There is no portable workaround, except for @samp{trap - 0}, for which
12593 @samp{trap '' 0} is a portable substitute.
12595 Although Posix is not absolutely clear on this point, it is widely
12596 admitted that when entering the trap @samp{$?} should be set to the exit
12597 status of the last command run before the trap.  The ambiguity can be
12598 summarized as: ``when the trap is launched by an @command{exit}, what is
12599 the @emph{last} command run: that before @command{exit}, or
12600 @command{exit} itself?''
12602 Bash considers @command{exit} to be the last command, while Zsh and
12603 Solaris @command{/bin/sh} consider that when the trap is run it is
12604 @emph{still} in the @command{exit}, hence it is the previous exit status
12605 that the trap receives:
12607 @example
12608 $ @kbd{cat trap.sh}
12609 trap 'echo $?' 0
12610 (exit 42); exit 0
12611 $ @kbd{zsh trap.sh}
12613 $ @kbd{bash trap.sh}
12615 @end example
12617 The portable solution is then simple: when you want to @samp{exit 42},
12618 run @samp{(exit 42); exit 42}, the first @command{exit} being used to
12619 set the exit status to 42 for Zsh, and the second to trigger the trap
12620 and pass 42 as exit status for Bash.
12622 The shell in Free@acronym{BSD} 4.0 has the following bug: @samp{$?} is
12623 reset to 0 by empty lines if the code is inside @command{trap}.
12625 @example
12626 $ @kbd{trap 'false}
12628 echo $?' 0
12629 $ @kbd{exit}
12631 @end example
12633 @noindent
12634 Fortunately, this bug only affects @command{trap}.
12636 @item @command{true}
12637 @c -----------------
12638 @prindex @command{true}
12639 @c Info cannot handle `:' in index entries.
12640 @c @prindex @command{:}
12641 Don't worry: as far as we know @command{true} is portable.
12642 Nevertheless, it's not always a builtin (e.g., Bash 1.x), and the
12643 portable shell community tends to prefer using @command{:}.  This has a
12644 funny side effect: when asked whether @command{false} is more portable
12645 than @command{true} Alexandre Oliva answered:
12647 @quotation
12648 In a sense, yes, because if it doesn't exist, the shell will produce an
12649 exit status of failure, which is correct for @command{false}, but not
12650 for @command{true}.
12651 @end quotation
12654 @item @command{unset}
12655 @c ------------------
12656 @prindex @command{unset}
12657 You cannot assume the support of @command{unset}.  Nevertheless, because
12658 it is extremely useful to disable embarrassing variables such as
12659 @code{PS1}, you can test for its existence and use
12660 it @emph{provided} you give a neutralizing value when @command{unset} is
12661 not supported:
12663 @example
12664 if (unset FOO) >/dev/null 2>&1; then
12665   unset=unset
12666 else
12667   unset=false
12669 $unset PS1 || PS1='$ '
12670 @end example
12672 @xref{Special Shell Variables}, for some neutralizing values.  Also, see
12673 @ref{Limitations of Builtins}, documentation of @command{export}, for
12674 the case of environment variables.
12675 @end table
12677 @node Limitations of Usual Tools
12678 @section Limitations of Usual Tools
12679 @cindex Limitations of usual tools
12681 The small set of tools you can expect to find on any machine can still
12682 include some limitations you should be aware of.
12684 @table @asis
12685 @item Awk
12686 @c ------
12687 @prindex Awk
12688 Don't leave white space before the opening parenthesis in a user function call.
12689 Posix does not allow this and @acronym{GNU} Awk rejects it:
12691 @example
12692 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
12693         BEGIN @{ die () @}'}
12694 gawk: cmd. line:2:         BEGIN @{ die () @}
12695 gawk: cmd. line:2:                      ^ parse error
12696 $ @kbd{gawk 'function die () @{ print "Aaaaarg!"  @}
12697         BEGIN @{ die() @}'}
12698 Aaaaarg!
12699 @end example
12701 If you want your program to be deterministic, don't depend on @code{for}
12702 on arrays:
12704 @example
12705 $ @kbd{cat for.awk}
12706 END @{
12707   arr["foo"] = 1
12708   arr["bar"] = 1
12709   for (i in arr)
12710     print i
12712 $ @kbd{gawk -f for.awk </dev/null}
12715 $ @kbd{nawk -f for.awk </dev/null}
12718 @end example
12720 Some Awk implementations, such as HP-UX 11.0's native one, mishandle anchors:
12722 @example
12723 $ @kbd{echo xfoo | $AWK '/foo|^bar/ @{ print @}'}
12724 $ @kbd{echo bar | $AWK '/foo|^bar/ @{ print @}'}
12726 $ @kbd{echo xfoo | $AWK '/^bar|foo/ @{ print @}'}
12727 xfoo
12728 $ @kbd{echo bar | $AWK '/^bar|foo/ @{ print @}'}
12730 @end example
12732 @noindent
12733 Either do not depend on such patterns (i.e., use @samp{/^(.*foo|bar)/},
12734 or use a simple test to reject such implementations.
12736 @acronym{AIX} version 5.2 has an arbitrary limit of 399 on the the
12737 length of regular expressions and literal strings in an Awk program.
12739 Traditional Awk implementations derived from Unix version 7, such as
12740 Solaris @command{/bin/awk}, have many limitations and do not
12741 conform to Posix.  Nowadays @code{AC_PROG_AWK} (@pxref{Particular
12742 Programs}) finds you an Awk that doesn't have these problems, but if
12743 for some reason you prefer not to use @code{AC_PROG_AWK} you may need to
12744 address them.
12746 Traditional Awk does not support multidimensional arrays or user-defined
12747 functions.
12749 Traditional Awk does not support the @option{-v} option.  You can use
12750 assignments after the program instead, e.g., @command{$AWK '@{print v
12751 $1@}' v=x}; however, don't forget that such assignments are not
12752 evaluated until they are encountered (e.g., after any @code{BEGIN}
12753 action).
12755 Traditional Awk does not support the keywords @code{delete} or @code{do}.
12757 Traditional Awk does not support the expressions
12758 @code{@var{a}?@var{b}:@var{c}}, @code{!@var{a}}, @code{@var{a}^@var{b}},
12759 or @code{@var{a}^=@var{b}}.
12761 Traditional Awk does not support the predefined @code{CONVFMT} variable.
12763 Traditional Awk supports only the predefined functions @code{exp},
12764 @code{int}, @code{length}, @code{log}, @code{split}, @code{sprintf},
12765 @code{sqrt}, and @code{substr}.
12767 Traditional Awk @code{getline} is not at all compatible with Posix;
12768 avoid it.
12770 Traditional Awk @code{split} supports only two arguments.
12772 Traditional Awk has a limit of 99
12773 fields in a record.  You may be able to circumvent this problem by using
12774 @code{split}.
12777 @item @command{basename}
12778 @c ---------------------
12779 @prindex @command{basename}
12780 Not all hosts have a working @command{basename}.
12781 You can use @command{expr} instead.
12783 @c AS_BASENAME is to be replaced by a better API.
12784 @ignore
12785 Not all hosts have a working @command{basename}, and you should instead
12786 use @code{AS_BASENAME} (@pxref{Programming in M4sh}), followed by
12787 @command{expr} if you need to strip a suffix.  For example:
12789 @example
12790 a=`basename "$aname"`       # This is not portable.
12791 a=`AS_BASENAME(["$aname"])` # This is more portable.
12793 # This is not portable.
12794 c=`basename "$cname" .c`
12796 # This is more portable.
12797 c=`AS_BASENAME(["$cname"])`
12798 case $c in
12799 ?*.c) c=`expr "X$c" : 'X\(.*\)\.c'`;;
12800 esac
12801 @end example
12802 @end ignore
12805 @item @command{cat}
12806 @c ----------------
12807 @prindex @command{cat}
12808 Don't rely on any option.
12811 @item @command{cc}
12812 @c ---------------
12813 @prindex @command{cc}
12814 The command @samp{cc -c foo.c} traditionally produces an object file
12815 named @file{foo.o}.  Most compilers allow @option{-c} to be combined
12816 with @option{-o} to specify a different object file name, but
12817 Posix does not require this combination and a few compilers
12818 lack support for it.  @xref{C Compiler}, for how @acronym{GNU} Make
12819 tests for this feature with @code{AC_PROG_CC_C_O}.
12821 When a compilation such as @samp{cc -o foo foo.c} fails, some compilers
12822 (such as @sc{cds} on Reliant Unix) leave a @file{foo.o}.
12824 HP-UX @command{cc} doesn't accept @file{.S} files to preprocess and
12825 assemble.  @samp{cc -c foo.S} appears to succeed, but in fact does
12826 nothing.
12828 The default executable, produced by @samp{cc foo.c}, can be
12830 @itemize
12831 @item @file{a.out} --- usual Posix convention.
12832 @item @file{b.out} --- i960 compilers (including @command{gcc}).
12833 @item @file{a.exe} --- @acronym{DJGPP} port of @command{gcc}.
12834 @item @file{a_out.exe} --- GNV @command{cc} wrapper for DEC C on OpenVMS.
12835 @item @file{foo.exe} --- various MS-DOS compilers.
12836 @end itemize
12838 The C compiler's traditional name is @command{cc}, but other names like
12839 @command{gcc} are common.  Posix 1003.1-2001 specifies the
12840 name @command{c99}, but older Posix editions specified
12841 @command{c89} and anyway these standard names are rarely used in
12842 practice.  Typically the C compiler is invoked from makefiles that use
12843 @samp{$(CC)}, so the value of the @samp{CC} make variable selects the
12844 compiler name.
12847 @item @command{chmod}
12848 @c ------------------
12849 @prindex @command{chmod}
12850 Avoid usages like @samp{chmod -w file}; use @samp{chmod a-w file}
12851 instead, for two reasons.  First, plain @option{-w} does not necessarily
12852 make the file unwritable, since it does not affect mode bits that
12853 correspond to bits in the file mode creation mask.  Second,
12854 Posix says that the @option{-w} might be interpreted as an
12855 implementation-specific option, not as a mode; Posix suggests
12856 using @samp{chmod -- -w file} to avoid this confusion, but unfortunately
12857 @samp{--} does not work on some older hosts.
12860 @item @command{cmp}
12861 @c ----------------
12862 @prindex @command{cmp}
12863 @command{cmp} performs a raw data comparison of two files, while
12864 @command{diff} compares two text files.  Therefore, if you might compare
12865 DOS files, even if only checking whether two files are different, use
12866 @command{diff} to avoid spurious differences due to differences of
12867 newline encoding.
12870 @item @command{cp}
12871 @c ---------------
12872 @prindex @command{cp}
12873 Avoid the @option{-r} option, since Posix 1003.1-2004 marks it as
12874 obsolescent and its behavior on special files is implementation-defined.
12875 Use @option{-R} instead.  On @acronym{GNU} hosts the two options
12876 are equivalent, but on Solaris hosts (for example) @command{cp -r}
12877 reads from pipes instead of replicating them.
12879 Some @command{cp} implementations (e.g., @acronym{BSD/OS} 4.2) do not allow
12880 trailing slashes at the end of nonexistent destination directories.  To
12881 avoid this problem, omit the trailing slashes.  For example, use
12882 @samp{cp -R source /tmp/newdir} rather than @samp{cp -R source
12883 /tmp/newdir/} if @file{/tmp/newdir} does not exist.
12885 @c This is thanks to Ian.
12886 The ancient SunOS 4 @command{cp} does not support @option{-f}, although
12887 its @command{mv} does.
12889 @cindex timestamp resolution
12890 Traditionally, file timestamps had 1-second resolution, and @samp{cp
12891 -p} copied the timestamps exactly.  However, many modern file systems
12892 have timestamps with 1-nanosecond resolution.  Unfortunately, @samp{cp
12893 -p} implementations truncate timestamps when copying files, so this
12894 can result in the destination file appearing to be older than the
12895 source.  The exact amount of truncation depends on the resolution of
12896 the system calls that @command{cp} uses; traditionally this was
12897 @code{utime}, which has 1-second resolution, but some newer
12898 @command{cp} implementations use @code{utimes}, which has
12899 1-microsecond resolution.  These newer implementations include @acronym{GNU}
12900 Core Utilities 5.0.91 or later, and Solaris 8 (sparc) patch 109933-02 or
12901 later.  Unfortunately as of January 2006 there is still no system
12902 call to set timestamps to the full nanosecond resolution.
12904 Bob Proulx notes that @samp{cp -p} always @emph{tries} to copy
12905 ownerships.  But whether it actually does copy ownerships or not is a
12906 system dependent policy decision implemented by the kernel.  If the
12907 kernel allows it then it happens.  If the kernel does not allow it then
12908 it does not happen.  It is not something @command{cp} itself has control
12909 over.
12911 In Unix System V any user can chown files to any other user, and System
12912 V also has a non-sticky @file{/tmp}.  That probably derives from the
12913 heritage of System V in a business environment without hostile users.
12914 @acronym{BSD} changed this
12915 to be a more secure model where only root can @command{chown} files and
12916 a sticky @file{/tmp} is used.  That undoubtedly derives from the heritage
12917 of @acronym{BSD} in a campus environment.
12919 @acronym{GNU}/Linux and Solaris by default follow @acronym{BSD}, but
12920 can be configured to allow a System V style @command{chown}.  On the
12921 other hand, @acronym{HP-UX} follows System V, but can
12922 be configured to use the modern security model and disallow
12923 @command{chown}.  Since it is an administrator-configurable parameter
12924 you can't use the name of the kernel as an indicator of the behavior.
12928 @item @command{date}
12929 @c -----------------
12930 @prindex @command{date}
12931 Some versions of @command{date} do not recognize special @samp{%} directives,
12932 and unfortunately, instead of complaining, they just pass them through,
12933 and exit with success:
12935 @example
12936 $ @kbd{uname -a}
12937 OSF1 medusa.sis.pasteur.fr V5.1 732 alpha
12938 $ @kbd{date "+%s"}
12940 @end example
12943 @item @command{diff}
12944 @c -----------------
12945 @prindex @command{diff}
12946 Option @option{-u} is nonportable.
12948 Some implementations, such as Tru64's, fail when comparing to
12949 @file{/dev/null}.  Use an empty file instead.
12952 @item @command{dirname}
12953 @c --------------------
12954 @prindex @command{dirname}
12955 Not all hosts have a working @command{dirname}, and you should instead
12956 use @code{AS_DIRNAME} (@pxref{Programming in M4sh}).  For example:
12958 @example
12959 dir=`dirname "$file"`       # This is not portable.
12960 dir=`AS_DIRNAME(["$file"])` # This is more portable.
12961 @end example
12964 @item @command{egrep}
12965 @c ------------------
12966 @prindex @command{egrep}
12967 Posix 1003.1-2001 no longer requires @command{egrep},
12968 but many older hosts do not yet support the Posix
12969 replacement @code{grep -E}.  Also, some traditional implementations do
12970 not work on long input lines.  To work around these problems, invoke
12971 @code{AC_PROG_EGREP} and then use @code{$EGREP}.
12973 Portable extended regular expressions should use @samp{\} only to escape
12974 characters in the string @samp{$()*+.?[\^@{|}.  For example, @samp{\@}}
12975 is not portable, even though it typically matches @samp{@}}.
12977 The empty alternative is not portable.  Use @samp{?} instead.  For
12978 instance with Digital Unix v5.0:
12980 @example
12981 > printf "foo\n|foo\n" | $EGREP '^(|foo|bar)$'
12982 |foo
12983 > printf "bar\nbar|\n" | $EGREP '^(foo|bar|)$'
12984 bar|
12985 > printf "foo\nfoo|\n|bar\nbar\n" | $EGREP '^(foo||bar)$'
12987 |bar
12988 @end example
12990 @command{$EGREP} also suffers the limitations of @command{grep}.
12992 @item @command{expr}
12993 @c -----------------
12994 @prindex @command{expr}
12995 No @command{expr} keyword starts with @samp{X}, so use @samp{expr
12996 X"@var{word}" : 'X@var{regex}'} to keep @command{expr} from
12997 misinterpreting @var{word}.
12999 Don't use @code{length}, @code{substr}, @code{match} and @code{index}.
13001 @item @command{expr} (@samp{|})
13002 @prindex @command{expr} (@samp{|})
13003 You can use @samp{|}.  Although Posix does require that @samp{expr
13004 ''} return the empty string, it does not specify the result when you
13005 @samp{|} together the empty string (or zero) with the empty string.  For
13006 example:
13008 @example
13009 expr '' \| ''
13010 @end example
13012 Posix 1003.2-1992 returns the empty string
13013 for this case, but traditional Unix returns @samp{0} (Solaris is
13014 one such example).  In Posix 1003.1-2001, the specification was
13015 changed to match traditional Unix's behavior (which is
13016 bizarre, but it's too late to fix this).  Please note that the same
13017 problem does arise when the empty string results from a computation,
13018 as in:
13020 @example
13021 expr bar : foo \| foo : bar
13022 @end example
13024 @noindent
13025 Avoid this portability problem by avoiding the empty string.
13028 @item @command{expr} (@samp{:})
13029 @c ----------------------------
13030 @prindex @command{expr}
13031 Portable @command{expr} regular expressions should use @samp{\} to
13032 escape only characters in the string @samp{$()*.0123456789[\^n@{@}}.
13033 For example, alternation, @samp{\|}, is common but Posix does not
13034 require its support, so it should be avoided in portable scripts.
13035 Similarly, @samp{\+} and @samp{\?} should be avoided.
13037 Portable @command{expr} regular expressions should not begin with
13038 @samp{^}.  Patterns are automatically anchored so leading @samp{^} is
13039 not needed anyway.
13041 The Posix standard is ambiguous as to whether
13042 @samp{expr 'a' : '\(b\)'} outputs @samp{0} or the empty string.
13043 In practice, it outputs the empty string on most platforms, but portable
13044 scripts should not assume this.  For instance, the @acronym{QNX} 4.25 native
13045 @command{expr} returns @samp{0}.
13047 One might think that a way to get a uniform behavior would be to use
13048 the empty string as a default value:
13050 @example
13051 expr a : '\(b\)' \| ''
13052 @end example
13054 @noindent
13055 Unfortunately this behaves exactly as the original expression; see the
13056 @command{expr} (@samp{|}) entry for more information.
13058 Ancient @command{expr} implementations (e.g., SunOS 4 @command{expr} and
13059 Solaris 8 @command{/usr/ucb/expr}) have a silly length limit that causes
13060 @command{expr} to fail if the matched substring is longer than 120
13061 bytes.  In this case, you might want to fall back on @samp{echo|sed} if
13062 @command{expr} fails.  Nowadays this is of practical importance only for
13063 the rare installer who mistakenly puts @file{/usr/ucb} before
13064 @file{/usr/bin} in @env{PATH}.
13066 On Mac OS X 10.4, @command{expr} mishandles the pattern @samp{[^-]} in
13067 some cases.  For example, the command
13068 @example
13069 expr Xpowerpc-apple-darwin8.1.0 : 'X[^-]*-[^-]*-\(.*\)'
13070 @end example
13072 @noindent
13073 outputs @samp{apple-darwin8.1.0} rather than the correct @samp{darwin8.1.0}.
13074 This particular case can be worked around by substituting @samp{[^--]}
13075 for @samp{[^-]}.
13077 Don't leave, there is some more!
13079 The @acronym{QNX} 4.25 @command{expr}, in addition of preferring @samp{0} to
13080 the empty string, has a funny behavior in its exit status: it's always 1
13081 when parentheses are used!
13083 @example
13084 $ @kbd{val=`expr 'a' : 'a'`; echo "$?: $val"}
13085 0: 1
13086 $ @kbd{val=`expr 'a' : 'b'`; echo "$?: $val"}
13087 1: 0
13089 $ @kbd{val=`expr 'a' : '\(a\)'`; echo "?: $val"}
13090 1: a
13091 $ @kbd{val=`expr 'a' : '\(b\)'`; echo "?: $val"}
13092 1: 0
13093 @end example
13095 @noindent
13096 In practice this can be a big problem if you are ready to catch failures
13097 of @command{expr} programs with some other method (such as using
13098 @command{sed}), since you may get twice the result.  For instance
13100 @example
13101 $ @kbd{expr 'a' : '\(a\)' || echo 'a' | sed 's/^\(a\)$/\1/'}
13102 @end example
13104 @noindent
13105 outputs @samp{a} on most hosts, but @samp{aa} on @acronym{QNX} 4.25.  A
13106 simple workaround consists of testing @command{expr} and using a variable
13107 set to @command{expr} or to @command{false} according to the result.
13109 Tru64 @command{expr} incorrectly treats the result as a number, if it
13110 can be interpreted that way:
13112 @example
13113 $ @kbd{expr 00001 : '.*\(...\)'}
13115 @end example
13118 @item @command{fgrep}
13119 @c ------------------
13120 @prindex @command{fgrep}
13121 Posix 1003.1-2001 no longer requires @command{fgrep},
13122 but many older hosts do not yet support the Posix
13123 replacement @code{grep -F}.  Also, some traditional implementations do
13124 not work on long input lines.  To work around these problems, invoke
13125 @code{AC_PROG_FGREP} and then use @code{$FGREP}.
13128 @item @command{find}
13129 @c -----------------
13130 @prindex @command{find}
13131 The option @option{-maxdepth} seems to be @acronym{GNU} specific.
13132 Tru64 v5.1, Net@acronym{BSD} 1.5 and Solaris @command{find}
13133 commands do not understand it.
13135 The replacement of @samp{@{@}} is guaranteed only if the argument is
13136 exactly @emph{@{@}}, not if it's only a part of an argument.  For
13137 instance on DU, and HP-UX 10.20 and HP-UX 11:
13139 @example
13140 $ @kbd{touch foo}
13141 $ @kbd{find . -name foo -exec echo "@{@}-@{@}" \;}
13142 @{@}-@{@}
13143 @end example
13145 @noindent
13146 while @acronym{GNU} @command{find} reports @samp{./foo-./foo}.
13149 @item @command{grep}
13150 @c -----------------
13151 @prindex @command{grep}
13152 Portable scripts can rely on the @command{grep} options @option{-c},
13153 @option{-l}, @option{-n}, and @option{-v}, but should avoid other
13154 options.  For example, don't use @option{-w}, as Posix does not require
13155 it and Irix 6.5.16m's @command{grep} does not support it.  Also,
13156 portable scripts should not combine @option{-c} with @option{-l},
13157 as Posix does not allow this.
13159 Some of the options required by Posix are not portable in practice.
13160 Don't use @samp{grep -q} to suppress output, because many @command{grep}
13161 implementations (e.g., Solaris) do not support @option{-q}.
13162 Don't use @samp{grep -s} to suppress output either, because Posix
13163 says @option{-s} does not suppress output, only some error messages;
13164 also, the @option{-s} option of traditional @command{grep} behaved
13165 like @option{-q} does in most modern implementations.  Instead,
13166 redirect the standard output and standard error (in case the file
13167 doesn't exist) of @code{grep} to @file{/dev/null}.  Check the exit
13168 status of @code{grep} to determine whether it found a match.
13170 Some traditional @command{grep} implementations do not work on long
13171 input lines.  On AIX the default @code{grep} silently truncates long
13172 lines on the input before matching.
13174 Also, many implementations do not support multiple regexps
13175 with @option{-e}: they either reject @option{-e} entirely (e.g., Solaris)
13176 or honor only the last pattern (e.g., @acronym{IRIX} 6.5 and NeXT).  To
13177 work around these problems, invoke @code{AC_PROG_GREP} and then use
13178 @code{$GREP}.
13180 Another possible workaround for the multiple @option{-e} problem is to
13181 separate the patterns by newlines, for example:
13183 @example
13184 grep 'foo
13185 bar' in.txt
13186 @end example
13188 @noindent
13189 except that this fails with traditional @command{grep}
13190 implementations and with Open@acronym{BSD} 3.8 @command{grep}.
13192 Traditional @command{grep} implementations (e.g., Solaris) do not
13193 support the @option{-E} or @option{-F} options.  To work around these
13194 problems, invoke @code{AC_PROG_EGREP} and then use @code{$EGREP}, and
13195 similarly for @code{AC_PROG_FGREP} and @code{$FGREP}.  Even if you are
13196 willing to require support for Posix @command{grep}, your script should
13197 not use both @option{-E} and @option{-F}, since Posix does not allow
13198 this combination.
13200 Portable @command{grep} regular expressions should use @samp{\} only to
13201 escape characters in the string @samp{$()*.0123456789[\^@{@}}.  For example,
13202 alternation, @samp{\|}, is common but Posix does not require its
13203 support in basic regular expressions, so it should be avoided in
13204 portable scripts.  Solaris @command{grep} does not support it.
13205 Similarly, @samp{\+} and @samp{\?} should be avoided.
13208 @item @command{join}
13209 @c -----------------
13210 @prindex @command{join}
13211 Solaris 8 @command{join} has bugs when the second operand is standard
13212 input, and when standard input is a pipe.  For example, the following
13213 shell script causes Solaris 8 @command{join} to loop forever:
13215 @example
13216 cat >file <<'EOF'
13217 1 x
13218 2 y
13220 cat file | join file -
13221 @end example
13223 Use @samp{join - file} instead.
13226 @item @command{ln}
13227 @c ---------------
13228 @prindex @command{ln}
13229 @cindex Symbolic links
13230 Don't rely on @command{ln} having a @option{-f} option.  Symbolic links
13231 are not available on old systems; use @samp{$(LN_S)} as a portable substitute.
13233 For versions of the @acronym{DJGPP} before 2.04,
13234 @command{ln} emulates symbolic links
13235 to executables by generating a stub that in turn calls the real
13236 program.  This feature also works with nonexistent files like in the
13237 Posix spec.  So @samp{ln -s file link} generates @file{link.exe},
13238 which attempts to call @file{file.exe} if run.  But this feature only
13239 works for executables, so @samp{cp -p} is used instead for these
13240 systems.  @acronym{DJGPP} versions 2.04 and later have full support
13241 for symbolic links.
13244 @item @command{ls}
13245 @c ---------------
13246 @prindex @command{ls}
13247 @cindex Listing directories
13248 The portable options are @option{-acdilrtu}.  Current practice is for
13249 @option{-l} to output both owner and group, even though ancient versions
13250 of @command{ls} omitted the group.
13252 On ancient hosts, @samp{ls foo} sent the diagnostic @samp{foo not found}
13253 to standard output if @file{foo} did not exist.  Hence a shell command
13254 like @samp{sources=`ls *.c 2>/dev/null`} did not always work, since it
13255 was equivalent to @samp{sources='*.c not found'} in the absence of
13256 @samp{.c} files.  This is no longer a practical problem, since current
13257 @command{ls} implementations send diagnostics to standard error.
13259 @item @command{mkdir}
13260 @c ------------------
13261 @prindex @command{mkdir}
13262 @cindex Making directories
13263 No @command{mkdir} option is portable to older systems.  Instead of
13264 @samp{mkdir -p @var{file-name}}, you should use use
13265 @code{AS_MKDIR_P(@var{file-name})} (@pxref{Programming in M4sh})
13266 or @code{AC_PROG_MKDIR_P} (@pxref{Particular Programs}).
13268 Posix does not clearly specify whether @samp{mkdir -p foo}
13269 should succeed when @file{foo} is a symbolic link to an already-existing
13270 directory.  The @acronym{GNU} Core Utilities 5.1.0 @command{mkdir}
13271 succeeds, but Solaris @command{mkdir} fails.
13273 Traditional @code{mkdir -p} implementations suffer from race conditions.
13274 For example, if you invoke @code{mkdir -p a/b} and @code{mkdir -p a/c}
13275 at the same time, both processes might detect that @file{a} is missing,
13276 one might create @file{a}, then the other might try to create @file{a}
13277 and fail with a @code{File exists} diagnostic.  The @acronym{GNU} Core
13278 Utilities (@samp{fileutils} version 4.1), Free@acronym{BSD} 5.0,
13279 Net@acronym{BSD} 2.0.2, and Open@acronym{BSD} 2.4 are known to be
13280 race-free when two processes invoke @code{mkdir -p} simultaneously, but
13281 earlier versions are vulnerable.  Solaris @command{mkdir} is still
13282 vulnerable as of Solaris 10, and other traditional Unix systems are
13283 probably vulnerable too.  This possible race is harmful in parallel
13284 builds when several Make rules call @code{mkdir -p} to
13285 construct directories.  You may use
13286 @code{install-sh -d} as a safe replacement, provided this script is
13287 recent enough; the copy shipped with Autoconf 2.60 and Automake 1.10 is
13288 OK, but copies from older versions are vulnerable.
13291 @item @command{mktemp}
13292 @c -------------------
13293 @prindex @command{mktemp}
13294 @cindex Creating temporary files
13295 Shell scripts can use temporary files safely with @command{mktemp}, but
13296 it does not exist on all systems.  A portable way to create a safe
13297 temporary file name is to create a temporary directory with mode 700 and
13298 use a file inside this directory.  Both methods prevent attackers from
13299 gaining control, though @command{mktemp} is far less likely to fail
13300 gratuitously under attack.
13302 Here is sample code to create a new temporary directory safely:
13304 @example
13305 # Create a temporary directory $tmp in $TMPDIR (default /tmp).
13306 # Use mktemp if possible; otherwise fall back on mkdir,
13307 # with $RANDOM to make collisions less likely.
13308 : $@{TMPDIR=/tmp@}
13310   tmp=`
13311     (umask 077 && mktemp -d "$TMPDIR/fooXXXXXX") 2>/dev/null
13312   ` &&
13313   test -n "$tmp" && test -d "$tmp"
13314 @} || @{
13315   tmp=$TMPDIR/foo$$-$RANDOM
13316   (umask 077 && mkdir "$tmp")
13317 @} || exit $?
13318 @end example
13321 @item @command{mv}
13322 @c ---------------
13323 @prindex @command{mv}
13324 @cindex Moving open files
13325 The only portable options are @option{-f} and @option{-i}.
13327 Moving individual files between file systems is portable (it was in Unix
13328 version 6),
13329 but it is not always atomic: when doing @samp{mv new existing}, there's
13330 a critical section where neither the old nor the new version of
13331 @file{existing} actually exists.
13333 On some systems moving files from @file{/tmp} can sometimes cause
13334 undesirable (but perfectly valid) warnings, even if you created these
13335 files.  This is because @file{/tmp} belongs to a group that ordinary
13336 users are not members of, and files created in @file{/tmp} inherit
13337 the group of @file{/tmp}.  When the file is copied, @command{mv} issues
13338 a diagnostic without failing:
13340 @smallexample
13341 $ @kbd{touch /tmp/foo}
13342 $ @kbd{mv /tmp/foo .}
13343 @error{}mv: ./foo: set owner/group (was: 100/0): Operation not permitted
13344 $ @kbd{echo $?}
13346 $ @kbd{ls foo}
13348 @end smallexample
13350 @noindent
13351 This annoying behavior conforms to Posix, unfortunately.
13353 Moving directories across mount points is not portable, use @command{cp}
13354 and @command{rm}.
13356 Moving/Deleting open files isn't portable.  The following can't be done
13357 on @acronym{DOS} variants:
13359 @example
13360 exec > foo
13361 mv foo bar
13362 @end example
13364 @noindent
13365 nor can
13367 @example
13368 exec > foo
13369 rm -f foo
13370 @end example
13373 @item @command{od}
13374 @c ---------------
13375 @prindex @command{od}
13377 In Mac OS X 10.3, @command{od} does not support the
13378 standard Posix options @option{-A}, @option{-j}, @option{-N}, or
13379 @option{-t}, or the @acronym{XSI} option @option{-s}.  The only
13380 supported Posix option is @option{-v}, and the only supported
13381 @acronym{XSI} options are those in @option{-bcdox}.  The BSD
13382 @command{hexdump} program can be used instead.
13384 This problem no longer exists in Mac OS X 10.4.3.
13387 @item @command{sed}
13388 @c ----------------
13389 @prindex @command{sed}
13390 Patterns should not include the separator (unless escaped), even as part
13391 of a character class.  In conformance with Posix, the Cray
13392 @command{sed} rejects @samp{s/[^/]*$//}: use @samp{s,[^/]*$,,}.
13394 Avoid empty patterns within parentheses (i.e., @samp{\(\)}).  Posix does
13395 not require support for empty patterns, and Unicos 9 @command{sed} rejects
13396 them.
13398 Unicos 9 @command{sed} loops endlessly on patterns like @samp{.*\n.*}.
13400 Sed scripts should not use branch labels longer than 8 characters and
13401 should not contain comments.  HP-UX sed has a limit of 99 commands
13402 (not counting @samp{:} commands) and
13403 48 labels, which can not be circumvented by using more than one script
13404 file.  It can execute up to 19 reads with the @samp{r} command per cycle.
13405 Solaris @command{/usr/ucb/sed} rejects usages that exceed an limit of
13406 about 6000 bytes for the internal representation of commands.
13408 Avoid redundant @samp{;}, as some @command{sed} implementations, such as
13409 Net@acronym{BSD} 1.4.2's, incorrectly try to interpret the second
13410 @samp{;} as a command:
13412 @example
13413 $ @kbd{echo a | sed 's/x/x/;;s/x/x/'}
13414 sed: 1: "s/x/x/;;s/x/x/": invalid command code ;
13415 @end example
13417 Input should not have unreasonably long lines, since some @command{sed}
13418 implementations have an input buffer limited to 4000 bytes.
13420 Portable @command{sed} regular expressions should use @samp{\} only to escape
13421 characters in the string @samp{$()*.0123456789[\^n@{@}}.  For example,
13422 alternation, @samp{\|}, is common but Posix does not require its
13423 support, so it should be avoided in portable scripts.  Solaris
13424 @command{sed} does not support alternation; e.g., @samp{sed '/a\|b/d'}
13425 deletes only lines that contain the literal string @samp{a|b}.
13426 Similarly, @samp{\+} and @samp{\?} should be avoided.
13428 Anchors (@samp{^} and @samp{$}) inside groups are not portable.
13430 Nested parenthesization in patterns (e.g., @samp{\(\(a*\)b*)\)}) is
13431 quite portable to current hosts, but was not supported by some ancient
13432 @command{sed} implementations like SVR3.
13434 Some @command{sed} implementations, e.g., Solaris,
13435 restrict the special role of the asterisk to one-character regular expressions.
13436 This may lead to unexpected behavior:
13438 @example
13439 $ @kbd{echo '1*23*4' | /usr/bin/sed 's/\(.\)*/x/g'}
13440 x2x4
13441 $ @kbd{echo '1*23*4' | /usr/xpg4/bin/sed 's/\(.\)*/x/g'}
13443 @end example
13445 The @option{-e} option is portable.
13446 Some people prefer to use it:
13448 @example
13449 sed -e '@var{command-1}' \
13450     -e '@var{command-2}'
13451 @end example
13453 @noindent
13454 as opposed to the equivalent:
13456 @example
13457 sed '
13458   @var{command-1}
13459   @var{command-2}
13461 @end example
13463 @noindent
13464 The following usage is sometimes equivalent:
13466 @example
13467 sed '@var{command-1};@var{command-2}'
13468 @end example
13470 but Posix says that this use of a semicolon has undefined effect if
13471 @var{command-1}'s verb is @samp{@{}, @samp{a}, @samp{b}, @samp{c},
13472 @samp{i}, @samp{r}, @samp{t}, @samp{w}, @samp{:}, or @samp{#}, so you
13473 should use semicolon only with simple scripts that do not use these
13474 verbs.
13476 Commands inside @{ @} brackets are further restricted.  Posix says that
13477 they cannot be preceded by addresses, @samp{!}, or @samp{;}, and that
13478 each command must be followed immediately by a newline, without any
13479 intervening blanks or semicolons.  The closing bracket must be alone on
13480 a line, other than white space preceding or following it.
13482 Contrary to yet another urban legend, you may portably use @samp{&} in
13483 the replacement part of the @code{s} command to mean ``what was
13484 matched''.  All descendants of Unix version 7 @command{sed}
13485 (at least; we
13486 don't have first hand experience with older @command{sed} implementations) have
13487 supported it.
13489 Posix requires that you must not have any white space between
13490 @samp{!} and the following command.  It is OK to have blanks between
13491 the address and the @samp{!}.  For instance, on Solaris:
13493 @example
13494 $ @kbd{echo "foo" | sed -n '/bar/ ! p'}
13495 @error{}Unrecognized command: /bar/ ! p
13496 $ @kbd{echo "foo" | sed -n '/bar/! p'}
13497 @error{}Unrecognized command: /bar/! p
13498 $ @kbd{echo "foo" | sed -n '/bar/ !p'}
13500 @end example
13502 Posix also says that you should not combine @samp{!} and @samp{;}.  If
13503 you use @samp{!}, it is best to put it on a command that is delimited by
13504 newlines rather than @samp{;}.
13506 Also note that Posix requires that the @samp{b}, @samp{t}, @samp{r}, and
13507 @samp{w} commands be followed by exactly one space before their argument.
13508 On the other hand, no white space is allowed between @samp{:} and the
13509 subsequent label name.
13511 @item @command{sed} (@samp{t})
13512 @c ---------------------------
13513 @prindex @command{sed} (@samp{t})
13514 Some old systems have @command{sed} that ``forget'' to reset their
13515 @samp{t} flag when starting a new cycle.  For instance on @acronym{MIPS
13516 RISC/OS}, and on @sc{irix} 5.3, if you run the following @command{sed}
13517 script (the line numbers are not actual part of the texts):
13519 @example
13520 s/keep me/kept/g  # a
13521 t end             # b
13522 s/.*/deleted/g    # c
13523 :end              # d
13524 @end example
13526 @noindent
13529 @example
13530 delete me         # 1
13531 delete me         # 2
13532 keep me           # 3
13533 delete me         # 4
13534 @end example
13536 @noindent
13537 you get
13539 @example
13540 deleted
13541 delete me
13542 kept
13543 deleted
13544 @end example
13546 @noindent
13547 instead of
13549 @example
13550 deleted
13551 deleted
13552 kept
13553 deleted
13554 @end example
13556 Why?  When processing line 1, (c) matches, therefore sets the @samp{t}
13557 flag, and the output is produced.  When processing
13558 line 2, the @samp{t} flag is still set (this is the bug).  Command (a)
13559 fails to match, but @command{sed} is not supposed to clear the @samp{t}
13560 flag when a substitution fails.  Command (b) sees that the flag is set,
13561 therefore it clears it, and jumps to (d), hence you get @samp{delete me}
13562 instead of @samp{deleted}.  When processing line (3), @samp{t} is clear,
13563 (a) matches, so the flag is set, hence (b) clears the flags and jumps.
13564 Finally, since the flag is clear, line 4 is processed properly.
13566 There are two things one should remember about @samp{t} in @command{sed}.
13567 Firstly, always remember that @samp{t} jumps if @emph{some} substitution
13568 succeeded, not only the immediately preceding substitution.  Therefore,
13569 always use a fake @samp{t clear} followed by a @samp{:clear} on the next
13570 line, to reset the @samp{t} flag where needed.
13572 Secondly, you cannot rely on @command{sed} to clear the flag at each new
13573 cycle.
13575 One portable implementation of the script above is:
13577 @example
13578 t clear
13579 :clear
13580 s/keep me/kept/g
13581 t end
13582 s/.*/deleted/g
13583 :end
13584 @end example
13586 @item @command{touch}
13587 @c ------------------
13588 @prindex @command{touch}
13589 @cindex timestamp resolution
13590 If you specify the desired timestamp (e.g., with the @option{-r}
13591 option), @command{touch} typically uses the @code{utime} or
13592 @code{utimes} system call, which can result in the same kind of
13593 timestamp truncation problems that @samp{cp -p} has.
13595 On ancient @acronym{BSD} systems, @command{touch} or any command that
13596 results in an empty file does not update the timestamps, so use a
13597 command like @command{echo} as a workaround.
13598 Also,
13599 @acronym{GNU} @command{touch} 3.16r (and presumably all before that)
13600 fails to work on SunOS 4.1.3 when the empty file is on an
13601 @acronym{NFS}-mounted 4.2 volume.
13602 However, these problems are no longer of practical concern.
13604 @end table
13607 @node Portable Make
13608 @chapter Portable Make Programming
13609 @prindex @command{make}
13610 @cindex Limitations of @command{make}
13612 Writing portable makefiles is an art.  Since a makefile's commands are
13613 executed by the shell, you must consider the shell portability issues
13614 already mentioned.  However, other issues are specific to @command{make}
13615 itself.
13617 @menu
13618 * $< in Ordinary Make Rules::   $< in ordinary rules
13619 * Failure in Make Rules::       Failing portably in rules
13620 * Special Chars in Names::      Special Characters in Macro Names
13621 * Backslash-Newline-Newline::   Empty last lines in macro definitions
13622 * Backslash-Newline Comments::  Spanning comments across line boundaries
13623 * Long Lines in Makefiles::     Line length limitations
13624 * Macros and Submakes::         @code{make macro=value} and submakes
13625 * The Make Macro MAKEFLAGS::    @code{$(MAKEFLAGS)} portability issues
13626 * The Make Macro SHELL::        @code{$(SHELL)} portability issues
13627 * Comments in Make Rules::      Other problems with Make comments
13628 * obj/ and Make::               Don't name a subdirectory @file{obj}
13629 * make -k Status::              Exit status of @samp{make -k}
13630 * VPATH and Make::              @code{VPATH} woes
13631 * Single Suffix Rules::         Single suffix rules and separated dependencies
13632 * Timestamps and Make::         Subsecond timestamp resolution
13633 @end menu
13635 @node $< in Ordinary Make Rules
13636 @section @code{$<} in Ordinary Make Rules
13638 Posix says that the @samp{$<} construct in makefiles can be
13639 used only in inference rules and in the @samp{.DEFAULT} rule; its
13640 meaning in ordinary rules is unspecified.  Solaris @command{make}
13641 for instance replaces it with the empty string.  Open@acronym{BSD} (3.0 and
13642 later) @command{make} diagnoses these uses and errors out.
13644 @node Failure in Make Rules
13645 @section Failure in Make Rules
13647 Since 1992 Posix has required that @command{make} must invoke
13648 each command with the equivalent of a @samp{sh -c} subshell.  However,
13649 many @command{make} implementations, including @acronym{BSD} make through 2004,
13650 use @samp{sh -e -c} instead, and the @option{-e} option causes the
13651 subshell to exit immediately if a subsidiary simple-command fails.  For
13652 example, the command @samp{touch T; rm -f U} always attempts to
13653 remove @file{U} with Posix make, but incompatible
13654 @command{make} implementations skip the @command{rm} if the
13655 @command{touch} fails.  One way to work around this is to reword the
13656 affected simple-commands so that they always succeed, e.g., @samp{touch
13657 T || :; rm -f U}.
13658 However, even this approach can run into common bugs in BSD
13659 implementations of the @option{-e} option of @command{sh} and
13660 @command{set} (@pxref{Limitations of Builtins}), so if you are worried
13661 about porting to buggy BSD shells it may be simpler to migrate
13662 complicated @command{make} actions into separate scripts.
13664 @node Special Chars in Names
13665 @section Special Characters in Make Macro Names
13667 Posix limits macro names to nonempty strings containing only
13668 @acronym{ASCII} letters and digits, @samp{.}, and @samp{_}.  Many
13669 @command{make} implementations allow a wider variety of characters, but
13670 portable makefiles should avoid them.  It is portable to start a name
13671 with a special character, e.g., @samp{$(.FOO)}.
13673 Some ancient @command{make} implementations don't support leading
13674 underscores in macro names.  An example is @acronym{NEWS-OS} 4.2R.
13676 @example
13677 $ @kbd{cat Makefile}
13678 _am_include = #
13679 _am_quote =
13680 all:; @@echo this is test
13681 $ @kbd{make}
13682 Make: Must be a separator on rules line 2.  Stop.
13683 $ @kbd{cat Makefile2}
13684 am_include = #
13685 am_quote =
13686 all:; @@echo this is test
13687 $ @kbd{make -f Makefile2}
13688 this is test
13689 @end example
13691 @noindent
13692 However, this problem is no longer of practical concern.
13694 @node Backslash-Newline-Newline
13695 @section Backslash-Newline-Newline in Make Macro Values
13697 @c  This has been seen on ia64 hpux 11.20, and on one hppa hpux 10.20,
13698 @c  but another hppa hpux 10.20 didn't have it.  Bob Proulx
13699 @c  <bob@proulx.com> thinks it was in hpux 8.0 too.
13700 On some versions of HP-UX, @command{make} reads multiple newlines
13701 following a backslash, continuing to the next non-empty line.  For
13702 example,
13704 @example
13705 FOO = one \
13707 BAR = two
13709 test:
13710         : FOO is "$(FOO)"
13711         : BAR is "$(BAR)"
13712 @end example
13714 @noindent
13715 shows @code{FOO} equal to @code{one BAR = two}.  Other implementations
13716 sensibly let a backslash continue only to the immediately following
13717 line.
13719 @node Backslash-Newline Comments
13720 @section Backslash-Newline in Make Comments
13722 According to Posix, Make comments start with @code{#}
13723 and continue until an unescaped newline is reached.
13725 @example
13726 $ @kbd{cat Makefile}
13727 # A = foo \
13728       bar \
13729       baz
13731 all:
13732         @@echo ok
13733 $ @kbd{make}   # GNU make
13735 @end example
13737 @noindent
13738 However this is not always the case.  Some implementations
13739 discard everything from @code{#} through the end of the line, ignoring any
13740 trailing backslash.
13742 @example
13743 $ @kbd{pmake}  # BSD make
13744 "Makefile", line 3: Need an operator
13745 Fatal errors encountered -- cannot continue
13746 @end example
13748 @noindent
13749 Therefore, if you want to comment out a multi-line definition, prefix each
13750 line with @code{#}, not only the first.
13752 @example
13753 # A = foo \
13754 #     bar \
13755 #     baz
13756 @end example
13758 @node Long Lines in Makefiles
13759 @section Long Lines in Makefiles
13761 OSF/1 4.0d's @command{make} cannot process makefiles with lines
13762 longer than 38912 bytes.  It exits with a @code{Line too long}
13763 diagnostic.  A later version, Tru64 5.1's @command{make} has been
13764 reported to crash with lines around 20 kB.
13766 @node Macros and Submakes
13767 @section @code{make macro=value} and Submakes
13769 A command-line variable definition such as @code{foo=bar} overrides any
13770 definition of @code{foo} in a makefile.  Some @command{make}
13771 implementations (such as @acronym{GNU} @command{make}) propagate this
13772 override to subsidiary invocations of @command{make}.  Some other
13773 implementations do not pass the substitution along to submakes.
13775 @example
13776 $ @kbd{cat Makefile}
13777 foo = foo
13778 one:
13779         @@echo $(foo)
13780         $(MAKE) two
13781 two:
13782         @@echo $(foo)
13783 $ @kbd{make foo=bar}            # GNU make 3.79.1
13785 make two
13786 make[1]: Entering directory `/home/adl'
13788 make[1]: Leaving directory `/home/adl'
13789 $ @kbd{pmake foo=bar}           # BSD make
13791 pmake two
13793 @end example
13795 You have a few possibilities if you do want the @code{foo=bar} override
13796 to propagate to submakes.  One is to use the @option{-e}
13797 option, which causes all environment variables to have precedence over
13798 the makefile macro definitions, and declare foo as an environment
13799 variable:
13801 @example
13802 $ @kbd{env foo=bar make -e}
13803 @end example
13805 The @option{-e} option is propagated to submakes automatically,
13806 and since the environment is inherited between @command{make}
13807 invocations, the @code{foo} macro is overridden in
13808 submakes as expected.
13810 This syntax (@code{foo=bar make -e}) is portable only when used
13811 outside of a makefile, for instance from a script or from the
13812 command line.  When run inside a @command{make} rule, @acronym{GNU}
13813 @command{make} 3.80 and prior versions forget to propagate the
13814 @option{-e} option to submakes.
13816 Moreover, using @option{-e} could have unexpected side effects if your
13817 environment contains some other macros usually defined by the
13818 makefile.  (See also the note about @code{make -e} and @code{SHELL}
13819 below.)
13821 Another way to propagate overrides to submakes is to do it
13822 manually, from your makefile:
13824 @example
13825 foo = foo
13826 one:
13827         @@echo $(foo)
13828         $(MAKE) foo=$(foo) two
13829 two:
13830         @@echo $(foo)
13831 @end example
13833 You need to foresee all macros that a user might want to override if
13834 you do that.
13836 @node The Make Macro MAKEFLAGS
13837 @section The Make Macro MAKEFLAGS
13838 @cindex @code{MAKEFLAGS} and @command{make}
13839 @cindex @command{make} and @code{MAKEFLAGS}
13841 Posix requires @command{make} to use @code{MAKEFLAGS} to affect the
13842 current and recursive invocations of make, but allows implementations
13843 several formats for the variable.  It is tricky to parse
13844 @code{$MAKEFLAGS} to determine whether @option{-s} for silent execution
13845 or @option{-k} for continued execution are in effect.  For example, you
13846 cannot assume that the first space-separated word in @code{$MAKEFLAGS}
13847 contains single-letter options, since in the Cygwin version of
13848 @acronym{GNU} @command{make} it is either @option{--unix} or
13849 @option{--win32} with the second word containing single-letter options.
13851 @example
13852 $ @kbd{cat Makefile}
13853 all:
13854         @@echo MAKEFLAGS = $(MAKEFLAGS)
13855 $ @kbd{make}
13856 MAKEFLAGS = --unix
13857 $ @kbd{make -k}
13858 MAKEFLAGS = --unix -k
13859 @end example
13861 @node The Make Macro SHELL
13862 @section The Make Macro @code{SHELL}
13863 @cindex @code{SHELL} and @command{make}
13864 @cindex @command{make} and @code{SHELL}
13866 Posix-compliant @command{make} internally uses the @code{$(SHELL)}
13867 macro to spawn shell processes and execute Make rules.  This
13868 is a builtin macro supplied by @command{make}, but it can be modified
13869 by a makefile or by a command-line argument.
13871 Not all @command{make} implementations define this @code{SHELL} macro.
13872 OSF/Tru64
13873 @command{make} is an example; this implementation always uses
13874 @code{/bin/sh}.  So it's a good idea to always define @code{SHELL} in
13875 your makefiles.  If you use Autoconf, do
13877 @example
13878 SHELL = @@SHELL@@
13879 @end example
13881 Do not force @code{SHELL = /bin/sh} because that is not correct
13882 everywhere.  For instance @acronym{DJGPP} lacks @code{/bin/sh}, and when
13883 its @acronym{GNU} @code{make} port sees such a setting it enters a special
13884 emulation mode where features like pipes and redirections are emulated
13885 on top of DOS's @command{command.com}.  Unfortunately this emulation is
13886 incomplete; for instance it does not handle command substitutions.
13887 On @acronym{DJGPP} @code{SHELL} should point to Bash.
13889 Posix-compliant @command{make} should never acquire the value of
13890 $(SHELL) from the environment, even when @code{make -e} is used
13891 (otherwise, think about what would happen to your rules if
13892 @code{SHELL=/bin/tcsh}).
13894 However not all @command{make} implementations have this exception.
13895 For instance it's not surprising that OSF/Tru64 @command{make} doesn't
13896 protect @code{SHELL}, since it doesn't use it.
13898 @example
13899 $ @kbd{cat Makefile}
13900 SHELL = /bin/sh
13901 FOO = foo
13902 all:
13903         @@echo $(SHELL)
13904         @@echo $(FOO)
13905 $ @kbd{env SHELL=/bin/tcsh FOO=bar make -e}   # OSF1 V4.0 Make
13906 /bin/tcsh
13908 $ @kbd{env SHELL=/bin/tcsh FOO=bar gmake -e}  # GNU make
13909 /bin/sh
13911 @end example
13913 @node Comments in Make Rules
13914 @section Comments in Make Rules
13915 @cindex Comments in @file{Makefile} rules
13916 @cindex @file{Makefile} rules and comments
13918 Never put comments in a rule.
13920 Some @command{make} treat anything starting with a tab as a command for
13921 the current rule, even if the tab is immediately followed by a @code{#}.
13922 The @command{make} from Tru64 Unix V5.1 is one of them.  The following
13923 makefile runs @code{# foo} through the shell.
13925 @example
13926 all:
13927         # foo
13928 @end example
13930 @node obj/ and Make
13931 @section The @file{obj/} Subdirectory and Make
13932 @cindex @file{obj/}, subdirectory
13933 @cindex @acronym{BSD} @command{make} and @file{obj/}
13935 Never name one of your subdirectories @file{obj/} if you don't like
13936 surprises.
13938 If an @file{obj/} directory exists, @acronym{BSD} @command{make} enters it
13939 before reading the makefile.  Hence the makefile in the
13940 current directory is not read.
13942 @example
13943 $ @kbd{cat Makefile}
13944 all:
13945         echo Hello
13946 $ @kbd{cat obj/Makefile}
13947 all:
13948         echo World
13949 $ @kbd{make}      # GNU make
13950 echo Hello
13951 Hello
13952 $ @kbd{pmake}     # BSD make
13953 echo World
13954 World
13955 @end example
13957 @node make -k Status
13958 @section Exit Status of @code{make -k}
13959 @cindex @code{make -k}
13961 Do not rely on the exit status of @code{make -k}.  Some implementations
13962 reflect whether they encountered an error in their exit status; other
13963 implementations always succeed.
13965 @example
13966 $ @kbd{cat Makefile}
13967 all:
13968         false
13969 $ @kbd{make -k; echo exit status: $?}    # GNU make
13970 false
13971 make: *** [all] Error 1
13972 exit status: 2
13973 $ @kbd{pmake -k; echo exit status: $?}   # BSD make
13974 false
13975 *** Error code 1 (continuing)
13976 exit status: 0
13977 @end example
13979 @node VPATH and Make
13980 @section @code{VPATH} and Make
13981 @cindex @code{VPATH}
13983 Posix does not specify the semantics of @code{VPATH}.  Typically,
13984 @command{make} supports @code{VPATH}, but its implementation is not
13985 consistent.
13987 Autoconf and Automake support makefiles whose usages of @code{VPATH} are
13988 portable to recent-enough popular implementations of @command{make}, but
13989 to keep the resulting makefiles portable, a package's makefile
13990 prototypes must take the following issues into account.  These issues
13991 are complicated and are often poorly understood, and installers who use
13992 @code{VPATH} should expect to find many bugs in this area.  If you use
13993 @code{VPATH}, the simplest way to avoid these portability bugs is to
13994 stick with @acronym{GNU} @command{make}, since it is the most
13995 commonly-used @command{make} among Autoconf users.
13997 Here are some known issues with some @code{VPATH}
13998 implementations.
14000 @menu
14001 * VPATH and Double-colon::      Problems with @samp{::} on ancient hosts
14002 * $< in Explicit Rules::        @code{$<} does not work in ordinary rules
14003 * Automatic Rule Rewriting::    @code{VPATH} goes wild on Solaris
14004 * OSF/Tru64 Directory Magic::   @command{mkdir} goes wild on OSF/Tru64
14005 * Make Target Lookup::          More details about @code{VPATH} lookup
14006 @end menu
14008 @node VPATH and Double-colon
14009 @subsection @code{VPATH} and Double-colon Rules
14010 @cindex @code{VPATH} and double-colon rules
14011 @cindex double-colon rules and @code{VPATH}
14013 With ancient versions of Sun @command{make},
14014 any assignment to @code{VPATH} causes @command{make} to execute only
14015 the first set of double-colon rules.
14016 However, this problem is no longer of practical concern.
14018 @node $< in Explicit Rules
14019 @subsection @code{$<} Not Supported in Explicit Rules
14020 @cindex explicit rules, @code{$<}, and @code{VPATH}
14021 @cindex @code{$<}, explicit rules, and @code{VPATH}
14022 @cindex @code{VPATH}, explicit rules, and @code{$<}
14024 Using @code{$<} in explicit rules is not portable.
14025 The prerequisite file must be named explicitly in the rule.  If you want
14026 to find the prerequisite via a @code{VPATH} search, you have to code the
14027 whole thing manually.  @xref{Build Directories}.
14029 @node Automatic Rule Rewriting
14030 @subsection Automatic Rule Rewriting
14031 @cindex @code{VPATH} and automatic rule rewriting
14032 @cindex automatic rule rewriting and @code{VPATH}
14034 Some @command{make} implementations, such as Solaris @command{make} and
14035 OSF1/Tru64 @command{make}, search for prerequisites in @code{VPATH} and
14036 then rewrite each occurrence as a plain word in the rule.
14037 For instance:
14039 @example
14040 # This isn't portable to GNU make.
14041 VPATH = ../pkg/src
14042 f.c: if.c
14043         cp if.c f.c
14044 @end example
14046 @noindent
14047 executes @code{cp ../pkg/src/if.c f.c} if @file{if.c} is
14048 found in @file{../pkg/src}.
14050 However, this rule leads to real problems in practice.  For example, if
14051 the source directory contains an ordinary file named @file{test} that is
14052 used in a dependency, Solaris @command{make} rewrites commands like
14053 @samp{if test -r foo; @dots{}} to @samp{if ../pkg/src/test -r foo;
14054 @dots{}}, which is typically undesirable.  To avoid this problem,
14055 portable makefiles should never mention a source file whose name is that
14056 of a shell keyword like @file{until} or a shell command like
14057 @command{cat} or @command{gcc} or @command{test}.
14059 Because of these problems @acronym{GNU} @command{make} and many other
14060 @command{make} implementations do not rewrite commands, so portable
14061 makefiles should
14062 search @code{VPATH} manually.  It is tempting to write this:
14064 @smallexample
14065 # This isn't portable to Solaris make.
14066 VPATH = ../pkg/src
14067 f.c: if.c
14068         cp `test -f if.c || echo $(VPATH)/`if.c f.c
14069 @end smallexample
14071 @noindent
14072 However, the ``prerequisite rewriting'' still applies here.  So if
14073 @file{if.c} is in @file{../pkg/src}, Solaris @command{make} and OSF1/Tru64
14074 @command{make} executes
14076 @smallexample
14077 cp `test -f ../pkg/src/if.c || echo ../pkg/src/`if.c f.c
14078 @end smallexample
14080 @noindent
14081 which reduces to
14083 @example
14084 cp if.c f.c
14085 @end example
14087 @noindent
14088 and thus fails.  Oops.
14090 A simple workaround, and good practice anyway, is to use @samp{$?} and
14091 @samp{$@@} when possible:
14093 @smallexample
14094 VPATH = ../pkg/src
14095 f.c: if.c
14096         cp $? $@@
14097 @end smallexample
14099 @noindent
14100 but this does not generalize well to commands with multiple
14101 prerequisites.  A more general workaround is to rewrite the rule so that
14102 the prerequisite @file{if.c} never appears as a plain word.  For
14103 example, these three rules would be safe, assuming @file{if.c} is in
14104 @file{../pkg/src} and the other files are in the working directory:
14106 @smallexample
14107 VPATH = ../pkg/src
14108 f.c: if.c f1.c
14109         cat `test -f ./if.c || echo $(VPATH)/`if.c f1.c >$@@
14110 g.c: if.c g1.c
14111         cat `test -f 'if.c' || echo $(VPATH)/`if.c g1.c >$@@
14112 h.c: if.c h1.c
14113         cat `test -f "if.c" || echo $(VPATH)/`if.c h1.c >$@@
14114 @end smallexample
14116 Things get worse when your prerequisites are in a macro.
14118 @example
14119 VPATH = ../pkg/src
14120 HEADERS = f.h g.h h.h
14121 install-HEADERS: $(HEADERS)
14122         for i in $(HEADERS); do \
14123           $(INSTALL) -m 644 \
14124             `test -f $$i || echo $(VPATH)/`$$i \
14125             $(DESTDIR)$(includedir)/$$i; \
14126         done
14127 @end example
14129 The above @code{install-HEADERS} rule is not Solaris-proof because @code{for
14130 i in $(HEADERS);} is expanded to @code{for i in f.h g.h h.h;}
14131 where @code{f.h} and @code{g.h} are plain words and are hence
14132 subject to @code{VPATH} adjustments.
14134 If the three files are in @file{../pkg/src}, the rule is run as:
14136 @example
14137 for i in ../pkg/src/f.h ../pkg/src/g.h h.h; do \
14138   install -m 644 \
14139      `test -f $i || echo ../pkg/src/`$i \
14140      /usr/local/include/$i; \
14141 done
14142 @end example
14144 where the two first @command{install} calls fail.  For instance,
14145 consider the @code{f.h} installation:
14147 @example
14148 install -m 644 \
14149   `test -f ../pkg/src/f.h || \
14150     echo ../pkg/src/ \
14151   `../pkg/src/f.h \
14152   /usr/local/include/../pkg/src/f.h;
14153 @end example
14155 @noindent
14156 It reduces to:
14158 @example
14159 install -m 644 \
14160   ../pkg/src/f.h \
14161   /usr/local/include/../pkg/src/f.h;
14162 @end example
14164 Note that the manual @code{VPATH} search did not cause any problems here;
14165 however this command installs @file{f.h} in an incorrect directory.
14167 Trying to quote @code{$(HEADERS)} in some way, as we did for
14168 @code{foo.c} a few makefiles ago, does not help:
14170 @example
14171 install-HEADERS: $(HEADERS)
14172         headers='$(HEADERS)'; \
14173         for i in $$headers; do \
14174           $(INSTALL) -m 644 \
14175             `test -f $$i || echo $(VPATH)/`$$i \
14176             $(DESTDIR)$(includedir)/$$i; \
14177         done
14178 @end example
14180 Now, @code{headers='$(HEADERS)'} macroexpands to:
14182 @example
14183 headers='f.h g.h h.h'
14184 @end example
14186 @noindent
14187 but @code{g.h} is still a plain word.  (As an aside, the idiom
14188 @code{headers='$(HEADERS)'; for i in $$headers;} is a good
14189 idea if @code{$(HEADERS)} can be empty, because some shells diagnose a
14190 syntax error on @code{for i in;}.)
14192 One workaround is to strip this unwanted @file{../pkg/src/} prefix manually:
14194 @example
14195 VPATH = ../pkg/src
14196 HEADERS = f.h g.h h.h
14197 install-HEADERS: $(HEADERS)
14198         headers='$(HEADERS)'; \
14199         for i in $$headers; do \
14200           i=`expr "$$i" : '$(VPATH)/\(.*\)'`;
14201           $(INSTALL) -m 644 \
14202             `test -f $$i || echo $(VPATH)/`$$i \
14203             $(DESTDIR)$(includedir)/$$i; \
14204         done
14205 @end example
14207 Automake does something similar.  However the above hack works only if
14208 the files listed in @code{HEADERS} are in the current directory or a
14209 subdirectory; they should not be in an enclosing directory.  If we had
14210 @code{HEADERS = ../f.h}, the above fragment would fail in a VPATH
14211 build with OSF1/Tru64 @command{make}.  The reason is that not only does
14212 OSF1/Tru64 @command{make} rewrite dependencies, but it also simplifies
14213 them.  Hence @code{../f.h} becomes @code{../pkg/f.h} instead of
14214 @code{../pkg/src/../f.h}.  This obviously defeats any attempt to strip
14215 a leading @file{../pkg/src/} component.
14217 The following example makes the behavior of OSF1/Tru64 @command{make}
14218 more apparent.
14220 @example
14221 $ @kbd{cat Makefile}
14222 VPATH = sub
14223 all: ../foo
14224         echo ../foo
14225 $ @kbd{ls}
14226 Makefile foo
14227 $ @kbd{make}
14228 echo foo
14230 @end example
14232 @noindent
14233 Dependency @file{../foo} was found in @file{sub/../foo}, but OSF1/Tru64
14234 @command{make} simplified it as @file{foo}.  (Note that the @file{sub/}
14235 directory does not even exist, this just means that the simplification
14236 occurred before the file was checked for.)
14238 For the record here is how SunOS 4 @command{make} behaves on this
14239 example.
14241 @smallexample
14242 $ @kbd{make}
14243 make: Fatal error: Don't know how to make target `../foo'
14244 $ @kbd{mkdir sub}
14245 $ @kbd{make}
14246 echo sub/../foo
14247 sub/../foo
14248 @end smallexample
14251 @node OSF/Tru64 Directory Magic
14252 @subsection OSF/Tru64 @command{make} Creates Prerequisite Directories Magically
14253 @cindex @code{VPATH} and prerequisite directories
14254 @cindex prerequisite directories and @code{VPATH}
14256 When a prerequisite is a subdirectory of @code{VPATH}, Tru64
14257 @command{make} creates it in the current directory.
14259 @example
14260 $ @kbd{mkdir -p foo/bar build}
14261 $ @kbd{cd build}
14262 $ @kbd{cat >Makefile <<END
14263 VPATH = ..
14264 all: foo/bar
14265 END}
14266 $ @kbd{make}
14267 mkdir foo
14268 mkdir foo/bar
14269 @end example
14271 This can yield unexpected results if a rule uses a manual @code{VPATH}
14272 search as presented before.
14274 @example
14275 VPATH = ..
14276 all : foo/bar
14277         command `test -d foo/bar || echo ../`foo/bar
14278 @end example
14280 The above @command{command} is run on the empty @file{foo/bar}
14281 directory that was created in the current directory.
14283 @node Make Target Lookup
14284 @subsection Make Target Lookup
14285 @cindex @code{VPATH}, resolving target pathnames
14287 @acronym{GNU} @command{make} uses a complex algorithm to decide when it
14288 should use files found via a @code{VPATH} search.  @xref{Search
14289 Algorithm, , How Directory Searches are Performed, make, The @acronym{GNU} Make
14290 Manual}.
14292 If a target needs to be rebuilt, @acronym{GNU} @command{make} discards the
14293 file name found during the @code{VPATH} search for this target, and
14294 builds the file locally using the file name given in the makefile.
14295 If a target does not need to be rebuilt, @acronym{GNU} @command{make} uses the
14296 file name found during the @code{VPATH} search.
14298 Other @command{make} implementations, like Net@acronym{BSD} @command{make}, are
14299 easier to describe: the file name found during the @code{VPATH} search
14300 is used whether the target needs to be rebuilt or not.  Therefore
14301 new files are created locally, but existing files are updated at their
14302 @code{VPATH} location.
14304 Open@acronym{BSD} and Free@acronym{BSD} @command{make}, however,
14305 never perform a
14306 @code{VPATH} search for a dependency that has an explicit rule.
14307 This is extremely annoying.
14309 When attempting a @code{VPATH} build for an autoconfiscated package
14310 (e.g., @code{mkdir build && cd build && ../configure}), this means
14311 @acronym{GNU}
14312 @command{make} builds everything locally in the @file{build}
14313 directory, while @acronym{BSD} @command{make} builds new files locally and
14314 updates existing files in the source directory.
14316 @example
14317 $ @kbd{cat Makefile}
14318 VPATH = ..
14319 all: foo.x bar.x
14320 foo.x bar.x: newer.x
14321         @@echo Building $@@
14322 $ @kbd{touch ../bar.x}
14323 $ @kbd{touch ../newer.x}
14324 $ @kbd{make}        # GNU make
14325 Building foo.x
14326 Building bar.x
14327 $ @kbd{pmake}       # NetBSD make
14328 Building foo.x
14329 Building ../bar.x
14330 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14331 Building foo.x
14332 Building bar.x
14333 $ @kbd{tmake}       # Tru64 make
14334 Building foo.x
14335 Building bar.x
14336 $ @kbd{touch ../bar.x}
14337 $ @kbd{make}        # GNU make
14338 Building foo.x
14339 $ @kbd{pmake}       # NetBSD make
14340 Building foo.x
14341 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14342 Building foo.x
14343 Building bar.x
14344 $ @kbd{tmake}       # Tru64 make
14345 Building foo.x
14346 Building bar.x
14347 @end example
14349 Note how Net@acronym{BSD} @command{make} updates @file{../bar.x} in its
14350 VPATH location, and how Free@acronym{BSD}, Open@acronym{BSD}, and Tru64
14351 @command{make} always
14352 update @file{bar.x}, even when @file{../bar.x} is up to date.
14354 Another point worth mentioning is that once @acronym{GNU} @command{make} has
14355 decided to ignore a @code{VPATH} file name (e.g., it ignored
14356 @file{../bar.x} in the above example) it continues to ignore it when
14357 the target occurs as a prerequisite of another rule.
14359 The following example shows that @acronym{GNU} @command{make} does not look up
14360 @file{bar.x} in @code{VPATH} before performing the @code{.x.y} rule,
14361 because it ignored the @code{VPATH} result of @file{bar.x} while running
14362 the @code{bar.x: newer.x} rule.
14364 @example
14365 $ @kbd{cat Makefile}
14366 VPATH = ..
14367 all: bar.y
14368 bar.x: newer.x
14369         @@echo Building $@@
14370 .SUFFIXES: .x .y
14371 .x.y:
14372         cp $< $@@
14373 $ @kbd{touch ../bar.x}
14374 $ @kbd{touch ../newer.x}
14375 $ @kbd{make}        # GNU make
14376 Building bar.x
14377 cp bar.x bar.y
14378 cp: cannot stat `bar.x': No such file or directory
14379 make: *** [bar.y] Error 1
14380 $ @kbd{pmake}       # NetBSD make
14381 Building ../bar.x
14382 cp ../bar.x bar.y
14383 $ @kbd{rm bar.y}
14384 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14385 echo Building bar.x
14386 cp bar.x bar.y
14387 cp: cannot stat `bar.x': No such file or directory
14388 *** Error code 1
14389 $ @kbd{tmake}       # Tru64 make
14390 Building bar.x
14391 cp: bar.x: No such file or directory
14392 *** Exit 1
14393 @end example
14395 Note that if you drop away the command from the @code{bar.x: newer.x}
14396 rule, @acronym{GNU} @command{make} magically starts to work: it
14397 knows that @code{bar.x} hasn't been updated, therefore it doesn't
14398 discard the result from @code{VPATH} (@file{../bar.x}) in succeeding
14399 uses.  Tru64 also works, but Free@acronym{BSD} and Open@acronym{BSD}
14400 still don't.
14402 @example
14403 $ @kbd{cat Makefile}
14404 VPATH = ..
14405 all: bar.y
14406 bar.x: newer.x
14407 .SUFFIXES: .x .y
14408 .x.y:
14409         cp $< $@@
14410 $ @kbd{touch ../bar.x}
14411 $ @kbd{touch ../newer.x}
14412 $ @kbd{make}        # GNU make
14413 cp ../bar.x bar.y
14414 $ @kbd{rm bar.y}
14415 $ @kbd{pmake}       # NetBSD make
14416 cp ../bar.x bar.y
14417 $ @kbd{rm bar.y}
14418 $ @kbd{fmake}       # FreeBSD make, OpenBSD make
14419 cp bar.x bar.y
14420 cp: cannot stat `bar.x': No such file or directory
14421 *** Error code 1
14422 $ @kbd{tmake}       # Tru64 make
14423 cp ../bar.x bar.y
14424 @end example
14426 It seems the sole solution that would please every @command{make}
14427 implementation is to never rely on @code{VPATH} searches for targets.
14428 In other words, @code{VPATH} should be reserved to unbuilt sources.
14431 @node Single Suffix Rules
14432 @section Single Suffix Rules and Separated Dependencies
14433 @cindex Single Suffix Inference Rule
14434 @cindex Rule, Single Suffix Inference
14435 A @dfn{Single Suffix Rule} is basically a usual suffix (inference) rule
14436 (@samp{.from.to:}), but which @emph{destination} suffix is empty
14437 (@samp{.from:}).
14439 @cindex Separated Dependencies
14440 @dfn{Separated dependencies} simply refers to listing the prerequisite
14441 of a target, without defining a rule.  Usually one can list on the one
14442 hand side, the rules, and on the other hand side, the dependencies.
14444 Solaris @command{make} does not support separated dependencies for
14445 targets defined by single suffix rules:
14447 @example
14448 $ @kbd{cat Makefile}
14449 .SUFFIXES: .in
14450 foo: foo.in
14451 .in:
14452         cp $< $@@
14453 $ @kbd{touch foo.in}
14454 $ @kbd{make}
14455 $ @kbd{ls}
14456 Makefile  foo.in
14457 @end example
14459 @noindent
14460 while @acronym{GNU} Make does:
14462 @example
14463 $ @kbd{gmake}
14464 cp foo.in foo
14465 $ @kbd{ls}
14466 Makefile  foo       foo.in
14467 @end example
14469 Note it works without the @samp{foo: foo.in} dependency.
14471 @example
14472 $ @kbd{cat Makefile}
14473 .SUFFIXES: .in
14474 .in:
14475         cp $< $@@
14476 $ @kbd{make foo}
14477 cp foo.in foo
14478 @end example
14480 @noindent
14481 and it works with double suffix inference rules:
14483 @example
14484 $ @kbd{cat Makefile}
14485 foo.out: foo.in
14486 .SUFFIXES: .in .out
14487 .in.out:
14488         cp $< $@@
14489 $ @kbd{make}
14490 cp foo.in foo.out
14491 @end example
14493 As a result, in such a case, you have to write target rules.
14495 @node Timestamps and Make
14496 @section Timestamp Resolution and Make
14497 @cindex timestamp resolution
14498 Traditionally, file timestamps had 1-second resolution, and
14499 @command{make} used those timestamps to determine whether one file was
14500 newer than the other.  However, many modern file systems have
14501 timestamps with 1-nanosecond resolution.  Some @command{make}
14502 implementations look at the entire timestamp; others ignore the
14503 fractional part, which can lead to incorrect results.  Normally this
14504 is not a problem, but in some extreme cases you may need to use tricks
14505 like @samp{sleep 1} to work around timestamp truncation bugs.
14507 Commands like @samp{cp -p} and @samp{touch -r} typically do not copy
14508 file timestamps to their full resolutions (@pxref{Limitations of Usual
14509 Tools}).  Hence you should be wary of rules like this:
14511 @example
14512 dest: src
14513         cp -p src dest
14514 @end example
14516 as @file{dest} often appears to be older than @file{src} after the
14517 timestamp is truncated, and this can cause @command{make} to do
14518 needless rework the next time it is invoked.  To work around this
14519 problem, you can use a timestamp file, e.g.:
14521 @example
14522 dest-stamp: src
14523         cp -p src dest
14524         date >dest-stamp
14525 @end example
14530 @c ======================================== Portable C and C++ Programming
14532 @node Portable C and C++
14533 @chapter Portable C and C++ Programming
14534 @cindex Portable C and C++ programming
14536 C and C++ programs often use low-level features of the underlying
14537 system, and therefore are often more difficult to make portable to other
14538 platforms.
14540 Several standards have been developed to help make your programs more
14541 portable.  If you write programs with these standards in mind, you can
14542 have greater confidence that your programs work on a wide variety
14543 of systems.  @xref{Standards, , Language Standards Supported by GCC,
14544 gcc, Using the GNU Compiler Collection (GCC)}, for a list of C-related
14545 standards.  Many programs also assume the
14546 @uref{http://www.opengroup.org/susv3, Posix standard}.
14548 Some old code is written to be portable to K&R C, which predates any C
14549 standard.  K&R C compilers are no longer of practical interest, though,
14550 and the rest of section assumes at least C89, the first C standard.
14552 Program portability is a huge topic, and this section can only briefly
14553 introduce common pitfalls.  @xref{System Portability, , Portability
14554 between System Types, standards, @acronym{GNU} Coding Standards}, for
14555 more information.
14557 @menu
14558 * Varieties of Unportability::  How to make your programs unportable
14559 * Integer Overflow::            When integers get too large
14560 * Null Pointers::               Properties of null pointers
14561 * Buffer Overruns::             Subscript errors and the like
14562 * Floating Point Portability::  Portable floating-point arithmetic
14563 * Exiting Portably::            Exiting and the exit status
14564 @end menu
14566 @node Varieties of Unportability
14567 @section Varieties of Unportability
14568 @cindex portability
14570 Autoconf tests and ordinary programs often need to test what is allowed
14571 on a system, and therefore they may need to deliberately exceed the
14572 boundaries of what the standards allow, if only to see whether an
14573 optional feature is present.  When you write such a program, you should
14574 keep in mind the difference between constraints, unspecified behavior,
14575 and undefined behavior.
14577 In C, a @dfn{constraint} is a rule that the compiler must enforce.  An
14578 example constraint is that C programs must not declare a bit-field with
14579 negative width.  Tests can therefore reliably assume that programs with
14580 negative-width bit-fields are rejected by a compiler that conforms
14581 to the standard.
14583 @dfn{Unspecified behavior} is valid behavior, where the standard allows
14584 multiple possibilities.  For example, the order of evaluation of
14585 function arguments is unspecified.  Some unspecified behavior is
14586 @dfn{implementation-defined}, i.e., documented by the implementation,
14587 but since Autoconf tests cannot read the documentation they cannot
14588 distinguish between implementation-defined and other unspecified
14589 behavior.  It is common for Autoconf tests to probe implementations to
14590 determine otherwise-unspecified behavior.
14592 @dfn{Undefined behavior} is invalid behavior, where the standard allows
14593 the implementation to do anything it pleases.  For example,
14594 dereferencing a null pointer leads to undefined behavior.  If possible,
14595 test programs should avoid undefined behavior, since a program with
14596 undefined behavior might succeed on a test that should fail.
14598 The above rules apply to programs that are intended to conform to the
14599 standard.  However, strictly-conforming programs are quite rare, since
14600 the standards are so limiting.  A major goal of Autoconf is to support
14601 programs that use implementation features not described by the standard,
14602 and it is fairly common for test programs to violate the above rules, if
14603 the programs work well enough in practice.
14605 @node Integer Overflow
14606 @section Integer Overflow
14607 @cindex overflow, arithmetic
14609 In C, signed integer overflow leads to undefined behavior.  However,
14610 many programs and Autoconf tests assume that signed integer overflow after
14611 addition, subtraction, or multiplication silently
14612 wraps around modulo a power of two, using two's complement arithmetic,
14613 so long as you cast the resulting value
14614 to an integer type or store it into an integer variable.  Such programs
14615 are portable to the vast majority of modern platforms.  However, signed
14616 integer division is not always harmless: for example, on CPUs of the
14617 i386 family, dividing @code{INT_MIN} by @code{-1} yields a SIGFPE signal
14618 which by default terminates the program.  Worse, taking the remainder
14619 of these two values typically yields the same signal on these CPUs,
14620 even though the C standard requires @code{INT_MIN % -1} to yield zero
14621 because the expression does not overflow.
14623 GCC users might consider using the
14624 @option{-ftrapv} option if they are worried about porting their code to
14625 the rare platforms where signed integer overflow does not wrap around
14626 after addition, subtraction, or multiplication.
14628 Unsigned integer overflow reliably wraps around modulo the word size.
14629 This is guaranteed by the C standard and is portable in practice.
14631 @node Null Pointers
14632 @section Properties of Null Pointers
14633 @cindex null pointers
14635 Most modern hosts reliably fail when you attempt to dereference a null
14636 pointer.
14638 On almost all modern hosts, null pointers use an all-bits-zero internal
14639 representation, so you can reliably use @code{memset} with 0 to set all
14640 the pointers in an array to null values.
14642 If @code{p} is a null pointer to an object type, the C expression
14643 @code{p + 0} always evaluates to @code{p} on modern hosts, even though
14644 the standard says that it has undefined behavior.
14646 @node Buffer Overruns
14647 @section Buffer Overruns and Subscript Errors
14648 @cindex buffer overruns
14650 Buffer overruns and subscript errors are the most common dangerous
14651 errors in C programs.  They result in undefined behavior because storing
14652 outside an array typically modifies storage that is used by some other
14653 object, and most modern systems lack runtime checks to catch these
14654 errors.  Programs should not rely on buffer overruns being caught.
14656 There is one exception to the usual rule that a portable program cannot
14657 address outside an array.  In C, it is valid to compute the address just
14658 past an object, e.g., @code{&a[N]} where @code{a} has @code{N} elements,
14659 so long as you do not dereference the resulting pointer.  But it is not
14660 valid to compute the address just before an object, e.g., @code{&a[-1]};
14661 nor is it valid to compute two past the end, e.g., @code{&a[N+1]}.  On
14662 most platforms @code{&a[-1] < &a[0] && &a[N] < &a[N+1]}, but this is not
14663 reliable in general, and it is usually easy enough to avoid the
14664 potential portability problem, e.g., by allocating an extra unused array
14665 element at the start or end.
14667 @uref{http://valgrind.org/, Valgrind} can catch many overruns.  GCC
14668 users might also consider using the @option{-fmudflap} option to catch
14669 overruns.
14671 Buffer overruns are usually caused by off-by-one errors, but there are
14672 more subtle ways to get them.
14674 Using @code{int} values to index into an array or compute array sizes
14675 causes problems on typical 64-bit hosts where an array index might
14676 be @math{2^31} or larger.
14678 If you add or multiply two numbers to calculate an array size, e.g.,
14679 @code{malloc (x * sizeof y + z)}, havoc ensues if the addition or
14680 multiplication overflows.
14682 Many implementations of the @code{alloca} function silently misbehave
14683 and can generate buffer overflows if given sizes that are too large.
14684 The size limits are implementation dependent, but are at least 4000
14685 bytes on all platforms that we know about.
14687 The standard functions @code{asctime}, @code{asctime_r}, @code{ctime},
14688 @code{ctime_r}, and @code{gets} are prone to buffer overflows, and
14689 portable code should not use them unless the inputs are known to be
14690 within certain limits.  The time-related functions can overflow their
14691 buffers if given timestamps out of range (e.g., a year less than -999
14692 or greater than 9999).  Time-related buffer overflows cannot happen with
14693 recent-enough versions of the GNU C library, but are possible with other
14694 implementations.  The @code{gets} function is the worst, since it almost
14695 invariably overflows its buffer when presented with an input line larger
14696 than the buffer.
14698 @node Floating Point Portability
14699 @section Floating Point Portability
14700 @cindex floating point
14702 Almost all modern systems use IEEE-754 floating point, and it is safe to
14703 assume IEEE-754 in most portable code these days.  For more information,
14704 please see David Goldberg's classic paper
14705 @uref{http://www.validlab.com/goldberg/paper.pdf, What Every Computer
14706 Scientist Should Know About Floating-Point Arithmetic}.
14708 @node Exiting Portably
14709 @section Exiting Portably
14710 @cindex exiting portably
14712 A C or C++ program can exit with status @var{N} by returning
14713 @var{N} from the @code{main} function.  Portable programs are supposed
14714 to exit either with status 0 or @code{EXIT_SUCCESS} to succeed, or with
14715 status @code{EXIT_FAILURE} to fail, but in practice it is portable to
14716 fail by exiting with status 1, and test programs that assume Posix can
14717 fail by exiting with status values from 1 through 255.  Programs on
14718 SunOS 2.0 (1985) through 3.5.2 (1988) incorrectly exited with zero
14719 status when @code{main} returned nonzero, but ancient systems like these
14720 are no longer of practical concern.
14722 A program can also exit with status @var{N} by passing @var{N} to the
14723 @code{exit} function, and a program can fail by calling the @code{abort}
14724 function.  If a program is specialized to just some platforms, it can fail
14725 by calling functions specific to those platforms, e.g., @code{_exit}
14726 (Posix) and @code{_Exit} (C99).  However, like other functions, an exit
14727 function should be declared, typically by including a header.  For
14728 example, if a C program calls @code{exit}, it should include @file{stdlib.h}
14729 either directly or via the default includes (@pxref{Default Includes}).
14731 A program can fail due to undefined behavior such as dereferencing a null
14732 pointer, but this is not recommended as undefined behavior allows an
14733 implementation to do whatever it pleases and this includes exiting
14734 successfully.
14737 @c ================================================== Manual Configuration
14739 @node Manual Configuration
14740 @chapter Manual Configuration
14742 A few kinds of features can't be guessed automatically by running test
14743 programs.  For example, the details of the object-file format, or
14744 special options that need to be passed to the compiler or linker.  You
14745 can check for such features using ad-hoc means, such as having
14746 @command{configure} check the output of the @code{uname} program, or
14747 looking for libraries that are unique to particular systems.  However,
14748 Autoconf provides a uniform method for handling unguessable features.
14750 @menu
14751 * Specifying Names::            Specifying the system type
14752 * Canonicalizing::              Getting the canonical system type
14753 * Using System Type::           What to do with the system type
14754 @end menu
14756 @node Specifying Names
14757 @section Specifying the System Type
14758 @cindex System type
14760 Like other @acronym{GNU} @command{configure} scripts, Autoconf-generated
14761 @command{configure} scripts can make decisions based on a canonical name
14762 for the system type, which has the form:
14763 @samp{@var{cpu}-@var{vendor}-@var{os}}, where @var{os} can be
14764 @samp{@var{system}} or @samp{@var{kernel}-@var{system}}
14766 @command{configure} can usually guess the canonical name for the type of
14767 system it's running on.  To do so it runs a script called
14768 @command{config.guess}, which infers the name using the @code{uname}
14769 command or symbols predefined by the C preprocessor.
14771 Alternately, the user can specify the system type with command line
14772 arguments to @command{configure}.  Doing so is necessary when
14773 cross-compiling.  In the most complex case of cross-compiling, three
14774 system types are involved.  The options to specify them are:
14776 @table @option
14777 @item --build=@var{build-type}
14778 the type of system on which the package is being configured and
14779 compiled.  It defaults to the result of running @command{config.guess}.
14781 @item --host=@var{host-type}
14782 the type of system on which the package runs.  By default it is the
14783 same as the build machine.  Specifying it enables the cross-compilation
14784 mode.
14786 @item --target=@var{target-type}
14787 the type of system for which any compiler tools in the package
14788 produce code (rarely needed).  By default, it is the same as host.
14789 @end table
14791 If you mean to override the result of @command{config.guess}, use
14792 @option{--build}, not @option{--host}, since the latter enables
14793 cross-compilation.  For historical reasons, passing @option{--host} also
14794 changes the build type.  Therefore, whenever you specify @option{--host},
14795 be sure to specify @option{--build} too; this will be fixed in the
14796 future.  So, to enter cross-compilation mode, use a command like this
14798 @example
14799 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
14800 @end example
14802 @noindent
14803 Note that if you do not specify @option{--host}, @command{configure}
14804 fails if it can't run the code generated by the specified compiler.  For
14805 example, configuring as follows fails:
14807 @example
14808 ./configure CC=m68k-coff-gcc
14809 @end example
14811 In the future, when cross-compiling Autoconf will @emph{not}
14812 accept tools (compilers, linkers, assemblers) whose name is not
14813 prefixed with the host type.  The only case when this may be
14814 useful is when you really are not cross-compiling, but only
14815 building for a least-common-denominator architecture: an example
14816 is building for @code{i386-pc-linux-gnu} while running on an
14817 @code{i686-pc-linux-gnu} architecture.  In this case, some particular
14818 pairs might be similar enough to let you get away with the system
14819 compilers, but in general the compiler might make bogus assumptions
14820 on the host: if you know what you are doing, please create symbolic
14821 links from the host compiler to the build compiler.
14823 @cindex @command{config.sub}
14824 @command{configure} recognizes short aliases for many system types; for
14825 example, @samp{decstation} can be used instead of
14826 @samp{mips-dec-ultrix4.2}.  @command{configure} runs a script called
14827 @command{config.sub} to canonicalize system type aliases.
14829 This section deliberately omits the description of the obsolete
14830 interface; see @ref{Hosts and Cross-Compilation}.
14833 @node Canonicalizing
14834 @section Getting the Canonical System Type
14835 @cindex System type
14836 @cindex Canonical system type
14838 The following macros make the system type available to @command{configure}
14839 scripts.
14841 @ovindex build_alias
14842 @ovindex host_alias
14843 @ovindex target_alias
14845 The variables @samp{build_alias}, @samp{host_alias}, and
14846 @samp{target_alias} are always exactly the arguments of @option{--build},
14847 @option{--host}, and @option{--target}; in particular, they are left empty
14848 if the user did not use them, even if the corresponding
14849 @code{AC_CANONICAL} macro was run.  Any configure script may use these
14850 variables anywhere.  These are the variables that should be used when in
14851 interaction with the user.
14853 If you need to recognize some special environments based on their system
14854 type, run the following macros to get canonical system names.  These
14855 variables are not set before the macro call.
14857 If you use these macros, you must distribute @command{config.guess} and
14858 @command{config.sub} along with your source code.  @xref{Output}, for
14859 information about the @code{AC_CONFIG_AUX_DIR} macro which you can use
14860 to control in which directory @command{configure} looks for those scripts.
14863 @defmac AC_CANONICAL_BUILD
14864 @acindex{CANONICAL_BUILD}
14865 @ovindex build
14866 @ovindex build_cpu
14867 @ovindex build_vendor
14868 @ovindex build_os
14869 Compute the canonical build-system type variable, @code{build}, and its
14870 three individual parts @code{build_cpu}, @code{build_vendor}, and
14871 @code{build_os}.
14873 If @option{--build} was specified, then @code{build} is the
14874 canonicalization of @code{build_alias} by @command{config.sub},
14875 otherwise it is determined by the shell script @command{config.guess}.
14876 @end defmac
14878 @defmac AC_CANONICAL_HOST
14879 @acindex{CANONICAL_HOST}
14880 @ovindex host
14881 @ovindex host_cpu
14882 @ovindex host_vendor
14883 @ovindex host_os
14884 Compute the canonical host-system type variable, @code{host}, and its
14885 three individual parts @code{host_cpu}, @code{host_vendor}, and
14886 @code{host_os}.
14888 If @option{--host} was specified, then @code{host} is the
14889 canonicalization of @code{host_alias} by @command{config.sub},
14890 otherwise it defaults to @code{build}.
14891 @end defmac
14893 @defmac AC_CANONICAL_TARGET
14894 @acindex{CANONICAL_TARGET}
14895 @ovindex target
14896 @ovindex target_cpu
14897 @ovindex target_vendor
14898 @ovindex target_os
14899 Compute the canonical target-system type variable, @code{target}, and its
14900 three individual parts @code{target_cpu}, @code{target_vendor}, and
14901 @code{target_os}.
14903 If @option{--target} was specified, then @code{target} is the
14904 canonicalization of @code{target_alias} by @command{config.sub},
14905 otherwise it defaults to @code{host}.
14906 @end defmac
14908 Note that there can be artifacts due to the backward compatibility
14909 code.  See @xref{Hosts and Cross-Compilation}, for more.
14911 @node Using System Type
14912 @section Using the System Type
14914 In @file{configure.ac} the system type is generally used by one or more
14915 @code{case} statements to select system-specifics.  Shell wildcards can
14916 be used to match a group of system types.
14918 For example, an extra assembler code object file could be chosen, giving
14919 access to a CPU cycle counter register.  @code{$(CYCLE_OBJ)} in the
14920 following would be used in a makefile to add the object to a
14921 program or library.
14923 @example
14924 case $host in
14925   alpha*-*-*) CYCLE_OBJ=rpcc.o ;;
14926   i?86-*-*)   CYCLE_OBJ=rdtsc.o ;;
14927   *)          CYCLE_OBJ= ;;
14928 esac
14929 AC_SUBST([CYCLE_OBJ])
14930 @end example
14932 @code{AC_CONFIG_LINKS} (@pxref{Configuration Links}) is another good way
14933 to select variant source files, for example optimized code for some
14934 CPUs.  The configured CPU type doesn't always indicate exact CPU types,
14935 so some runtime capability checks may be necessary too.
14937 @example
14938 case $host in
14939   alpha*-*-*)   AC_CONFIG_LINKS([dither.c:alpha/dither.c]) ;;
14940   powerpc*-*-*) AC_CONFIG_LINKS([dither.c:powerpc/dither.c]) ;;
14941   *-*-*)        AC_CONFIG_LINKS([dither.c:generic/dither.c]) ;;
14942 esac
14943 @end example
14945 The host system type can also be used to find cross-compilation tools
14946 with @code{AC_CHECK_TOOL} (@pxref{Generic Programs}).
14948 The above examples all show @samp{$host}, since this is where the code
14949 is going to run.  Only rarely is it necessary to test @samp{$build}
14950 (which is where the build is being done).
14952 Whenever you're tempted to use @samp{$host} it's worth considering
14953 whether some sort of probe would be better.  New system types come along
14954 periodically or previously missing features are added.  Well-written
14955 probes can adapt themselves to such things, but hard-coded lists of
14956 names can't.  Here are some guidelines,
14958 @itemize @bullet
14959 @item
14960 Availability of libraries and library functions should always be checked
14961 by probing.
14962 @item
14963 Variant behavior of system calls is best identified with runtime tests
14964 if possible, but bug workarounds or obscure difficulties might have to
14965 be driven from @samp{$host}.
14966 @item
14967 Assembler code is inevitably highly CPU-specific and is best selected
14968 according to @samp{$host_cpu}.
14969 @item
14970 Assembler variations like underscore prefix on globals or ELF versus
14971 COFF type directives are however best determined by probing, perhaps
14972 even examining the compiler output.
14973 @end itemize
14975 @samp{$target} is for use by a package creating a compiler or similar.
14976 For ordinary packages it's meaningless and should not be used.  It
14977 indicates what the created compiler should generate code for, if it can
14978 cross-compile.  @samp{$target} generally selects various hard-coded CPU
14979 and system conventions, since usually the compiler or tools under
14980 construction themselves determine how the target works.
14983 @c ===================================================== Site Configuration.
14985 @node Site Configuration
14986 @chapter Site Configuration
14988 @command{configure} scripts support several kinds of local configuration
14989 decisions.  There are ways for users to specify where external software
14990 packages are, include or exclude optional features, install programs
14991 under modified names, and set default values for @command{configure}
14992 options.
14994 @menu
14995 * Help Formatting::             Customizing @samp{configure --help}
14996 * External Software::           Working with other optional software
14997 * Package Options::             Selecting optional features
14998 * Pretty Help Strings::         Formatting help string
14999 * Site Details::                Configuring site details
15000 * Transforming Names::          Changing program names when installing
15001 * Site Defaults::               Giving @command{configure} local defaults
15002 @end menu
15004 @node Help Formatting
15005 @section Controlling Help Output
15007 Users consult @samp{configure --help} to learn of configuration
15008 decisions specific to your package.  By default, @command{configure}
15009 breaks this output into sections for each type of option; within each
15010 section, help strings appear in the order @file{configure.ac} defines
15011 them:
15013 @example
15014 Optional Features:
15015   @dots{}
15016   --enable-bar            include bar
15018 Optional Packages:
15019   @dots{}
15020   --with-foo              use foo
15021 @end example
15023 @defmac AC_PRESERVE_HELP_ORDER
15024 @acindex{PRESERVE_HELP_ORDER}
15026 Request an alternate @option{--help} format, in which options of all
15027 types appear together, in the order defined.  Call this macro before any
15028 @code{AC_ARG_ENABLE} or @code{AC_ARG_WITH}.
15030 @example
15031 Optional Features and Packages:
15032   @dots{}
15033   --enable-bar            include bar
15034   --with-foo              use foo
15035 @end example
15037 @end defmac
15039 @node External Software
15040 @section Working With External Software
15041 @cindex External software
15043 Some packages require, or can optionally use, other software packages
15044 that are already installed.  The user can give @command{configure}
15045 command line options to specify which such external software to use.
15046 The options have one of these forms:
15048 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
15049 @c awful.
15050 @example
15051 --with-@var{package}[=@var{arg}]
15052 --without-@var{package}
15053 @end example
15055 For example, @option{--with-gnu-ld} means work with the @acronym{GNU} linker
15056 instead of some other linker.  @option{--with-x} means work with The X
15057 Window System.
15059 The user can give an argument by following the package name with
15060 @samp{=} and the argument.  Giving an argument of @samp{no} is for
15061 packages that are used by default; it says to @emph{not} use the
15062 package.  An argument that is neither @samp{yes} nor @samp{no} could
15063 include a name or number of a version of the other package, to specify
15064 more precisely which other package this program is supposed to work
15065 with.  If no argument is given, it defaults to @samp{yes}.
15066 @option{--without-@var{package}} is equivalent to
15067 @option{--with-@var{package}=no}.
15069 @command{configure} scripts do not complain about
15070 @option{--with-@var{package}} options that they do not support.  This
15071 behavior permits configuring a source tree containing multiple packages
15072 with a top-level @command{configure} script when the packages support
15073 different options, without spurious error messages about options that
15074 some of the packages support.  An unfortunate side effect is that option
15075 spelling errors are not diagnosed.  No better approach to this problem
15076 has been suggested so far.
15078 For each external software package that may be used, @file{configure.ac}
15079 should call @code{AC_ARG_WITH} to detect whether the @command{configure}
15080 user asked to use it.  Whether each package is used or not by default,
15081 and which arguments are valid, is up to you.
15083 @defmac AC_ARG_WITH (@var{package}, @var{help-string}, @ovar{action-if-given}, @ovar{action-if-not-given})
15084 @acindex{ARG_WITH}
15085 If the user gave @command{configure} the option @option{--with-@var{package}}
15086 or @option{--without-@var{package}}, run shell commands
15087 @var{action-if-given}.  If neither option was given, run shell commands
15088 @var{action-if-not-given}.  The name @var{package} indicates another
15089 software package that this program should work with.  It should consist
15090 only of alphanumeric characters and dashes.
15092 The option's argument is available to the shell commands
15093 @var{action-if-given} in the shell variable @code{withval}, which is
15094 actually just the value of the shell variable @code{with_@var{package}},
15095 with any @option{-} characters changed into @samp{_}.  You may use that
15096 variable instead, if you wish.
15098 The argument @var{help-string} is a description of the option that
15099 looks like this:
15100 @example
15101   --with-readline         support fancy command line editing
15102 @end example
15104 @noindent
15105 @var{help-string} may be more than one line long, if more detail is
15106 needed.  Just make sure the columns line up in @samp{configure
15107 --help}.  Avoid tabs in the help string.  You'll need to enclose the
15108 help string in @samp{[} and @samp{]} in order to produce the leading
15109 blanks.
15111 You should format your @var{help-string} with the macro
15112 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
15114 The following example shows how to use the @code{AC_ARG_WITH} macro in
15115 a common situation.  You want to let the user decide whether to enable
15116 support for an external library (e.g., the readline library); if the user
15117 specified neither @option{--with-readline} nor @option{--without-readline},
15118 you want to enable support for readline only if the library is available
15119 on the system.
15121 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
15122 @example
15123 AC_ARG_WITH([readline],
15124   [AS_HELP_STRING([--with-readline],
15125     [support fancy command line editing @@<:@@default=check@@:>@@])],
15126   [],
15127   [with_readline=check])
15129 LIBREADLINE=
15130 AS_IF([test "x$with_readline" != xno],
15131   [AC_CHECK_LIB([readline], [main],
15132     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
15133      AC_DEFINE([HAVE_LIBREADLINE], [1],
15134                [Define if you have libreadline])
15135     ],
15136     [if test "x$with_readline" != xcheck; then
15137        AC_MSG_FAILURE(
15138          [--with-readline was given, but test for readline failed])
15139      fi
15140     ], -lncurses)])
15141 @end example
15143 The next example shows how to use @code{AC_ARG_WITH} to give the user the
15144 possibility to enable support for the readline library, in case it is still
15145 experimental and not well tested, and is therefore disabled by default.
15147 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
15148 @example
15149 AC_ARG_WITH([readline],
15150   [AS_HELP_STRING([--with-readline],
15151     [enable experimental support for readline])],
15152   [],
15153   [with_readline=no])
15155 LIBREADLINE=
15156 AS_IF([test "x$with_readline" != xno],
15157   [AC_CHECK_LIB([readline], [main],
15158     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
15159      AC_DEFINE([HAVE_LIBREADLINE], [1],
15160                [Define if you have libreadline])
15161     ],
15162     [AC_MSG_FAILURE(
15163        [--with-readline was given, but test for readline failed])],
15164     [-lncurses])])
15165 @end example
15167 The last example shows how to use @code{AC_ARG_WITH} to give the user the
15168 possibility to disable support for the readline library, given that it is
15169 an important feature and that it should be enabled by default.
15171 @c FIXME: Remove AS_IF when the problem of AC_REQUIRE within `if' is solved.
15172 @example
15173 AC_ARG_WITH([readline],
15174   [AS_HELP_STRING([--without-readline],
15175     [disable support for readline])],
15176   [],
15177   [with_readline=yes])
15179 LIBREADLINE=
15180 AS_IF([test "x$with_readline" != xno],
15181   [AC_CHECK_LIB([readline], [main],
15182     [AC_SUBST([LIBREADLINE], ["-lreadline -lncurses"])
15183      AC_DEFINE([HAVE_LIBREADLINE], [1],
15184                [Define if you have libreadline])
15185     ],
15186     [AC_MSG_FAILURE(
15187        [readline test failed (--without-readline to disable)])],
15188     [-lncurses])])
15189 @end example
15191 These three examples can be easily adapted to the case where
15192 @code{AC_ARG_ENABLE} should be preferred to @code{AC_ARG_WITH} (see
15193 @ref{Package Options}).
15194 @end defmac
15196 @defmac AC_WITH (@var{package}, @var{action-if-given}, @ovar{action-if-not-given})
15197 @acindex{WITH}
15198 This is an obsolete version of @code{AC_ARG_WITH} that does not
15199 support providing a help string.
15200 @end defmac
15202 @node Package Options
15203 @section Choosing Package Options
15204 @cindex Package options
15205 @cindex Options, package
15207 If a software package has optional compile-time features, the user can
15208 give @command{configure} command line options to specify whether to
15209 compile them.  The options have one of these forms:
15211 @c FIXME: Can't use @ovar here, Texinfo 4.0 goes lunatic and emits something
15212 @c awful.
15213 @example
15214 --enable-@var{feature}[=@var{arg}]
15215 --disable-@var{feature}
15216 @end example
15218 These options allow users to choose which optional features to build and
15219 install.  @option{--enable-@var{feature}} options should never make a
15220 feature behave differently or cause one feature to replace another.
15221 They should only cause parts of the program to be built rather than left
15222 out.
15224 The user can give an argument by following the feature name with
15225 @samp{=} and the argument.  Giving an argument of @samp{no} requests
15226 that the feature @emph{not} be made available.  A feature with an
15227 argument looks like @option{--enable-debug=stabs}.  If no argument is
15228 given, it defaults to @samp{yes}.  @option{--disable-@var{feature}} is
15229 equivalent to @option{--enable-@var{feature}=no}.
15231 @command{configure} scripts do not complain about
15232 @option{--enable-@var{feature}} options that they do not support.
15233 This behavior permits configuring a source tree containing multiple
15234 packages with a top-level @command{configure} script when the packages
15235 support different options, without spurious error messages about options
15236 that some of the packages support.
15237 An unfortunate side effect is that option spelling errors are not diagnosed.
15238 No better approach to this problem has been suggested so far.
15240 For each optional feature, @file{configure.ac} should call
15241 @code{AC_ARG_ENABLE} to detect whether the @command{configure} user asked
15242 to include it.  Whether each feature is included or not by default, and
15243 which arguments are valid, is up to you.
15245 @defmac AC_ARG_ENABLE (@var{feature}, @var{help-string}, @ovar{action-if-given}, @ovar{action-if-not-given})
15246 @acindex{ARG_ENABLE}
15247 If the user gave @command{configure} the option
15248 @option{--enable-@var{feature}} or @option{--disable-@var{feature}}, run
15249 shell commands @var{action-if-given}.  If neither option was given, run
15250 shell commands @var{action-if-not-given}.  The name @var{feature}
15251 indicates an optional user-level facility.  It should consist only of
15252 alphanumeric characters and dashes.
15254 The option's argument is available to the shell commands
15255 @var{action-if-given} in the shell variable @code{enableval}, which is
15256 actually just the value of the shell variable
15257 @code{enable_@var{feature}}, with any @option{-} characters changed into
15258 @samp{_}.  You may use that variable instead, if you wish.  The
15259 @var{help-string} argument is like that of @code{AC_ARG_WITH}
15260 (@pxref{External Software}).
15262 You should format your @var{help-string} with the macro
15263 @code{AS_HELP_STRING} (@pxref{Pretty Help Strings}).
15265 See the examples suggested with the definition of @code{AC_ARG_WITH}
15266 (@pxref{External Software}) to get an idea of possible applications of
15267 @code{AC_ARG_ENABLE}.
15268 @end defmac
15270 @defmac AC_ENABLE (@var{feature}, @var{action-if-given}, @ovar{action-if-not-given})
15271 @acindex{ENABLE}
15272 This is an obsolete version of @code{AC_ARG_ENABLE} that does not
15273 support providing a help string.
15274 @end defmac
15277 @node Pretty Help Strings
15278 @section Making Your Help Strings Look Pretty
15279 @cindex Help strings
15281 Properly formatting the @samp{help strings} which are used in
15282 @code{AC_ARG_WITH} (@pxref{External Software}) and @code{AC_ARG_ENABLE}
15283 (@pxref{Package Options}) can be challenging.  Specifically, you want
15284 your own @samp{help strings} to line up in the appropriate columns of
15285 @samp{configure --help} just like the standard Autoconf @samp{help
15286 strings} do.  This is the purpose of the @code{AS_HELP_STRING} macro.
15288 @defmac AS_HELP_STRING (@var{left-hand-side}, @var{right-hand-side})
15289 @acindex{HELP_STRING}
15291 Expands into an help string that looks pretty when the user executes
15292 @samp{configure --help}.  It is typically used in @code{AC_ARG_WITH}
15293 (@pxref{External Software}) or @code{AC_ARG_ENABLE} (@pxref{Package
15294 Options}).  The following example makes this clearer.
15296 @example
15297 AC_ARG_WITH([foo],
15298   [AS_HELP_STRING([--with-foo],
15299      [use foo (default is no)])],
15300   [use_foo=$withval],
15301   [use_foo=no])
15302 @end example
15304 The second argument of @code{AS_HELP_STRING} is
15305 not a literal, and should not be double quoted.
15306 @xref{Autoconf Language}, for a more detailed explanation.
15307 Then the last few lines of @samp{configure --help} appear like
15308 this:
15310 @example
15311 --enable and --with options recognized:
15312   --with-foo              use foo (default is no)
15313 @end example
15315 The @code{AS_HELP_STRING} macro is particularly helpful when the
15316 @var{left-hand-side} and/or @var{right-hand-side} are composed of macro
15317 arguments, as shown in the following example.
15319 @example
15320 AC_DEFUN([MY_ARG_WITH],
15321   [AC_ARG_WITH([$1],
15322      [AS_HELP_STRING([--with-$1], [use $1 (default is $2)])],
15323      [use_[]$1=$withval],
15324      [use_[]$1=$2])])
15325 @end example
15326 @end defmac
15329 @node Site Details
15330 @section Configuring Site Details
15331 @cindex Site details
15333 Some software packages require complex site-specific information.  Some
15334 examples are host names to use for certain services, company names, and
15335 email addresses to contact.  Since some configuration scripts generated
15336 by Metaconfig ask for such information interactively, people sometimes
15337 wonder how to get that information in Autoconf-generated configuration
15338 scripts, which aren't interactive.
15340 Such site configuration information should be put in a file that is
15341 edited @emph{only by users}, not by programs.  The location of the file
15342 can either be based on the @code{prefix} variable, or be a standard
15343 location such as the user's home directory.  It could even be specified
15344 by an environment variable.  The programs should examine that file at
15345 runtime, rather than at compile time.  Runtime configuration is more
15346 convenient for users and makes the configuration process simpler than
15347 getting the information while configuring.  @xref{Directory Variables, ,
15348 Variables for Installation Directories, standards, @acronym{GNU} Coding
15349 Standards}, for more information on where to put data files.
15351 @node Transforming Names
15352 @section Transforming Program Names When Installing
15353 @cindex Transforming program names
15354 @cindex Program names, transforming
15356 Autoconf supports changing the names of programs when installing them.
15357 In order to use these transformations, @file{configure.ac} must call the
15358 macro @code{AC_ARG_PROGRAM}.
15360 @defmac AC_ARG_PROGRAM
15361 @acindex{ARG_PROGRAM}
15362 @ovindex program_transform_name
15363 Place in output variable @code{program_transform_name} a sequence of
15364 @code{sed} commands for changing the names of installed programs.
15366 If any of the options described below are given to @command{configure},
15367 program names are transformed accordingly.  Otherwise, if
15368 @code{AC_CANONICAL_TARGET} has been called and a @option{--target} value
15369 is given, the target type followed by a dash is used as a prefix.
15370 Otherwise, no program name transformation is done.
15371 @end defmac
15373 @menu
15374 * Transformation Options::      @command{configure} options to transform names
15375 * Transformation Examples::     Sample uses of transforming names
15376 * Transformation Rules::        Makefile uses of transforming names
15377 @end menu
15379 @node Transformation Options
15380 @subsection Transformation Options
15382 You can specify name transformations by giving @command{configure} these
15383 command line options:
15385 @table @option
15386 @item --program-prefix=@var{prefix}
15387 prepend @var{prefix} to the names;
15389 @item --program-suffix=@var{suffix}
15390 append @var{suffix} to the names;
15392 @item --program-transform-name=@var{expression}
15393 perform @code{sed} substitution @var{expression} on the names.
15394 @end table
15396 @node Transformation Examples
15397 @subsection Transformation Examples
15399 These transformations are useful with programs that can be part of a
15400 cross-compilation development environment.  For example, a
15401 cross-assembler running on a Sun 4 configured with
15402 @option{--target=i960-vxworks} is normally installed as
15403 @file{i960-vxworks-as}, rather than @file{as}, which could be confused
15404 with a native Sun 4 assembler.
15406 You can force a program name to begin with @file{g}, if you don't want
15407 @acronym{GNU} programs installed on your system to shadow other programs with
15408 the same name.  For example, if you configure @acronym{GNU} @code{diff} with
15409 @option{--program-prefix=g}, then when you run @samp{make install} it is
15410 installed as @file{/usr/local/bin/gdiff}.
15412 As a more sophisticated example, you could use
15414 @example
15415 --program-transform-name='s/^/g/; s/^gg/g/; s/^gless/less/'
15416 @end example
15417 @noindent
15419 to prepend @samp{g} to most of the program names in a source tree,
15420 excepting those like @code{gdb} that already have one and those like
15421 @code{less} and @code{lesskey} that aren't @acronym{GNU} programs.  (That is
15422 assuming that you have a source tree containing those programs that is
15423 set up to use this feature.)
15425 One way to install multiple versions of some programs simultaneously is
15426 to append a version number to the name of one or both.  For example, if
15427 you want to keep Autoconf version 1 around for awhile, you can configure
15428 Autoconf version 2 using @option{--program-suffix=2} to install the
15429 programs as @file{/usr/local/bin/autoconf2},
15430 @file{/usr/local/bin/autoheader2}, etc.  Nevertheless, pay attention
15431 that only the binaries are renamed, therefore you'd have problems with
15432 the library files which might overlap.
15434 @node Transformation Rules
15435 @subsection Transformation Rules
15437 Here is how to use the variable @code{program_transform_name} in a
15438 @file{Makefile.in}:
15440 @example
15441 PROGRAMS = cp ls rm
15442 transform = @@program_transform_name@@
15443 install:
15444         for p in $(PROGRAMS); do \
15445           $(INSTALL_PROGRAM) $$p $(DESTDIR)$(bindir)/`echo $$p | \
15446                                               sed '$(transform)'`; \
15447         done
15449 uninstall:
15450         for p in $(PROGRAMS); do \
15451           rm -f $(DESTDIR)$(bindir)/`echo $$p | sed '$(transform)'`; \
15452         done
15453 @end example
15455 It is guaranteed that @code{program_transform_name} is never empty, and
15456 that there are no useless separators.  Therefore you may safely embed
15457 @code{program_transform_name} within a sed program using @samp{;}:
15459 @example
15460 transform = @@program_transform_name@@
15461 transform_exe = s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/
15462 @end example
15464 Whether to do the transformations on documentation files (Texinfo or
15465 @code{man}) is a tricky question; there seems to be no perfect answer,
15466 due to the several reasons for name transforming.  Documentation is not
15467 usually particular to a specific architecture, and Texinfo files do not
15468 conflict with system documentation.  But they might conflict with
15469 earlier versions of the same files, and @code{man} pages sometimes do
15470 conflict with system documentation.  As a compromise, it is probably
15471 best to do name transformations on @code{man} pages but not on Texinfo
15472 manuals.
15474 @node Site Defaults
15475 @section Setting Site Defaults
15476 @cindex Site defaults
15478 Autoconf-generated @command{configure} scripts allow your site to provide
15479 default values for some configuration values.  You do this by creating
15480 site- and system-wide initialization files.
15482 @evindex CONFIG_SITE
15483 If the environment variable @code{CONFIG_SITE} is set, @command{configure}
15484 uses its value as the name of a shell script to read.  Otherwise, it
15485 reads the shell script @file{@var{prefix}/share/config.site} if it exists,
15486 then @file{@var{prefix}/etc/config.site} if it exists.  Thus,
15487 settings in machine-specific files override those in machine-independent
15488 ones in case of conflict.
15490 Site files can be arbitrary shell scripts, but only certain kinds of
15491 code are really appropriate to be in them.  Because @command{configure}
15492 reads any cache file after it has read any site files, a site file can
15493 define a default cache file to be shared between all Autoconf-generated
15494 @command{configure} scripts run on that system (@pxref{Cache Files}).  If
15495 you set a default cache file in a site file, it is a good idea to also
15496 set the output variable @code{CC} in that site file, because the cache
15497 file is only valid for a particular compiler, but many systems have
15498 several available.
15500 You can examine or override the value set by a command line option to
15501 @command{configure} in a site file; options set shell variables that have
15502 the same names as the options, with any dashes turned into underscores.
15503 The exceptions are that @option{--without-} and @option{--disable-} options
15504 are like giving the corresponding @option{--with-} or @option{--enable-}
15505 option and the value @samp{no}.  Thus, @option{--cache-file=localcache}
15506 sets the variable @code{cache_file} to the value @samp{localcache};
15507 @option{--enable-warnings=no} or @option{--disable-warnings} sets the variable
15508 @code{enable_warnings} to the value @samp{no}; @option{--prefix=/usr} sets the
15509 variable @code{prefix} to the value @samp{/usr}; etc.
15511 Site files are also good places to set default values for other output
15512 variables, such as @code{CFLAGS}, if you need to give them non-default
15513 values: anything you would normally do, repetitively, on the command
15514 line.  If you use non-default values for @var{prefix} or
15515 @var{exec_prefix} (wherever you locate the site file), you can set them
15516 in the site file if you specify it with the @code{CONFIG_SITE}
15517 environment variable.
15519 You can set some cache values in the site file itself.  Doing this is
15520 useful if you are cross-compiling, where it is impossible to check features
15521 that require running a test program.  You could ``prime the cache'' by
15522 setting those values correctly for that system in
15523 @file{@var{prefix}/etc/config.site}.  To find out the names of the cache
15524 variables you need to set, look for shell variables with @samp{_cv_} in
15525 their names in the affected @command{configure} scripts, or in the Autoconf
15526 M4 source code for those macros.
15528 The cache file is careful to not override any variables set in the site
15529 files.  Similarly, you should not override command-line options in the
15530 site files.  Your code should check that variables such as @code{prefix}
15531 and @code{cache_file} have their default values (as set near the top of
15532 @command{configure}) before changing them.
15534 Here is a sample file @file{/usr/share/local/gnu/share/config.site}.  The
15535 command @samp{configure --prefix=/usr/share/local/gnu} would read this
15536 file (if @code{CONFIG_SITE} is not set to a different file).
15538 @example
15539 # config.site for configure
15541 # Change some defaults.
15542 test "$prefix" = NONE && prefix=/usr/share/local/gnu
15543 test "$exec_prefix" = NONE && exec_prefix=/usr/local/gnu
15544 test "$sharedstatedir" = '$prefix/com' && sharedstatedir=/var
15545 test "$localstatedir" = '$prefix/var' && localstatedir=/var
15547 # Give Autoconf 2.x generated configure scripts a shared default
15548 # cache file for feature test results, architecture-specific.
15549 if test "$cache_file" = /dev/null; then
15550   cache_file="$prefix/var/config.cache"
15551   # A cache file is only valid for one C compiler.
15552   CC=gcc
15554 @end example
15557 @c ============================================== Running configure Scripts.
15559 @node Running configure Scripts
15560 @chapter Running @command{configure} Scripts
15561 @cindex @command{configure}
15563 Below are instructions on how to configure a package that uses a
15564 @command{configure} script, suitable for inclusion as an @file{INSTALL}
15565 file in the package.  A plain-text version of @file{INSTALL} which you
15566 may use comes with Autoconf.
15568 @menu
15569 * Basic Installation::          Instructions for typical cases
15570 * Compilers and Options::       Selecting compilers and optimization
15571 * Multiple Architectures::      Compiling for multiple architectures at once
15572 * Installation Names::          Installing in different directories
15573 * Optional Features::           Selecting optional features
15574 * System Type::                 Specifying the system type
15575 * Sharing Defaults::            Setting site-wide defaults for @command{configure}
15576 * Defining Variables::          Specifying the compiler etc.
15577 * configure Invocation::        Changing how @command{configure} runs
15578 @end menu
15580 @set autoconf
15581 @include install.texi
15584 @c ============================================== Recreating a Configuration
15586 @node config.status Invocation
15587 @chapter Recreating a Configuration
15588 @cindex @command{config.status}
15590 The @command{configure} script creates a file named @file{config.status},
15591 which actually configures, @dfn{instantiates}, the template files.  It
15592 also records the configuration options that were specified when the
15593 package was last configured in case reconfiguring is needed.
15595 Synopsis:
15596 @example
15597 ./config.status @var{option}@dots{} [@var{file}@dots{}]
15598 @end example
15600 It configures the @var{files}; if none are specified, all the templates
15601 are instantiated.  The files must be specified without their
15602 dependencies, as in
15604 @example
15605 ./config.status foobar
15606 @end example
15608 @noindent
15611 @example
15612 ./config.status foobar:foo.in:bar.in
15613 @end example
15615 The supported options are:
15617 @table @option
15618 @item --help
15619 @itemx -h
15620 Print a summary of the command line options, the list of the template
15621 files, and exit.
15623 @item --version
15624 @itemx -V
15625 Print the version number of Autoconf and exit.
15627 @item --silent
15628 @itemx --quiet
15629 @itemx -q
15630 Do not print progress messages.
15632 @item --debug
15633 @itemx -d
15634 Don't remove the temporary files.
15636 @item --file=@var{file}[:@var{template}]
15637 Require that @var{file} be instantiated as if
15638 @samp{AC_CONFIG_FILES(@var{file}:@var{template})} was used.  Both
15639 @var{file} and @var{template} may be @samp{-} in which case the standard
15640 output and/or standard input, respectively, is used.  If a
15641 @var{template} file name is relative, it is first looked for in the build
15642 tree, and then in the source tree.  @xref{Configuration Actions}, for
15643 more details.
15645 This option and the following ones provide one way for separately
15646 distributed packages to share the values computed by @command{configure}.
15647 Doing so can be useful if some of the packages need a superset of the
15648 features that one of them, perhaps a common library, does.  These
15649 options allow a @file{config.status} file to create files other than the
15650 ones that its @file{configure.ac} specifies, so it can be used for a
15651 different package.
15653 @item --header=@var{file}[:@var{template}]
15654 Same as @option{--file} above, but with @samp{AC_CONFIG_HEADERS}.
15656 @item --recheck
15657 Ask @file{config.status} to update itself and exit (no instantiation).
15658 This option is useful if you change @command{configure}, so that the
15659 results of some tests might be different from the previous run.  The
15660 @option{--recheck} option reruns @command{configure} with the same arguments
15661 you used before, plus the @option{--no-create} option, which prevents
15662 @command{configure} from running @file{config.status} and creating
15663 @file{Makefile} and other files, and the @option{--no-recursion} option,
15664 which prevents @command{configure} from running other @command{configure}
15665 scripts in subdirectories.  (This is so other Make rules can
15666 run @file{config.status} when it changes; @pxref{Automatic Remaking},
15667 for an example).
15668 @end table
15670 @file{config.status} checks several optional environment variables that
15671 can alter its behavior:
15673 @defvar CONFIG_SHELL
15674 @evindex CONFIG_SHELL
15675 The shell with which to run @command{configure} for the @option{--recheck}
15676 option.  It must be Bourne-compatible.  The default is a shell that
15677 supports @code{LINENO} if available, and @file{/bin/sh} otherwise.
15678 Invoking @command{configure} by hand bypasses this setting, so you may
15679 need to use a command like @samp{CONFIG_SHELL=/bin/bash /bin/bash ./configure}
15680 to insure that the same shell is used everywhere.  The absolute name of the
15681 shell should be passed.
15682 @end defvar
15684 @defvar CONFIG_STATUS
15685 @evindex CONFIG_STATUS
15686 The file name to use for the shell script that records the
15687 configuration.  The default is @file{./config.status}.  This variable is
15688 useful when one package uses parts of another and the @command{configure}
15689 scripts shouldn't be merged because they are maintained separately.
15690 @end defvar
15692 You can use @file{./config.status} in your makefiles.  For example, in
15693 the dependencies given above (@pxref{Automatic Remaking}),
15694 @file{config.status} is run twice when @file{configure.ac} has changed.
15695 If that bothers you, you can make each run only regenerate the files for
15696 that rule:
15697 @example
15698 @group
15699 config.h: stamp-h
15700 stamp-h: config.h.in config.status
15701         ./config.status config.h
15702         echo > stamp-h
15704 Makefile: Makefile.in config.status
15705         ./config.status Makefile
15706 @end group
15707 @end example
15709 The calling convention of @file{config.status} has changed; see
15710 @ref{Obsolete config.status Use}, for details.
15713 @c =================================================== Obsolete Constructs
15715 @node Obsolete Constructs
15716 @chapter Obsolete Constructs
15717 @cindex Obsolete constructs
15719 Autoconf changes, and throughout the years some constructs have been
15720 obsoleted.  Most of the changes involve the macros, but in some cases
15721 the tools themselves, or even some concepts, are now considered
15722 obsolete.
15724 You may completely skip this chapter if you are new to Autoconf.  Its
15725 intention is mainly to help maintainers updating their packages by
15726 understanding how to move to more modern constructs.
15728 @menu
15729 * Obsolete config.status Use::  Different calling convention
15730 * acconfig.h::                  Additional entries in @file{config.h.in}
15731 * autoupdate Invocation::       Automatic update of @file{configure.ac}
15732 * Obsolete Macros::             Backward compatibility macros
15733 * Autoconf 1::                  Tips for upgrading your files
15734 * Autoconf 2.13::               Some fresher tips
15735 @end menu
15737 @node Obsolete config.status Use
15738 @section Obsolete @file{config.status} Invocation
15740 @file{config.status} now supports arguments to specify the files to
15741 instantiate; see @ref{config.status Invocation}, for more details.
15742 Before, environment variables had to be used.
15744 @defvar CONFIG_COMMANDS
15745 @evindex CONFIG_COMMANDS
15746 The tags of the commands to execute.  The default is the arguments given
15747 to @code{AC_OUTPUT} and @code{AC_CONFIG_COMMANDS} in
15748 @file{configure.ac}.
15749 @end defvar
15751 @defvar CONFIG_FILES
15752 @evindex CONFIG_FILES
15753 The files in which to perform @samp{@@@var{variable}@@} substitutions.
15754 The default is the arguments given to @code{AC_OUTPUT} and
15755 @code{AC_CONFIG_FILES} in @file{configure.ac}.
15756 @end defvar
15758 @defvar CONFIG_HEADERS
15759 @evindex CONFIG_HEADERS
15760 The files in which to substitute C @code{#define} statements.  The
15761 default is the arguments given to @code{AC_CONFIG_HEADERS}; if that
15762 macro was not called, @file{config.status} ignores this variable.
15763 @end defvar
15765 @defvar CONFIG_LINKS
15766 @evindex CONFIG_LINKS
15767 The symbolic links to establish.  The default is the arguments given to
15768 @code{AC_CONFIG_LINKS}; if that macro was not called,
15769 @file{config.status} ignores this variable.
15770 @end defvar
15772 In @ref{config.status Invocation}, using this old interface, the example
15773 would be:
15775 @example
15776 @group
15777 config.h: stamp-h
15778 stamp-h: config.h.in config.status
15779         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_FILES= \
15780           CONFIG_HEADERS=config.h ./config.status
15781         echo > stamp-h
15783 Makefile: Makefile.in config.status
15784         CONFIG_COMMANDS= CONFIG_LINKS= CONFIG_HEADERS= \
15785           CONFIG_FILES=Makefile ./config.status
15786 @end group
15787 @end example
15789 @noindent
15790 (If @file{configure.ac} does not call @code{AC_CONFIG_HEADERS}, there is
15791 no need to set @code{CONFIG_HEADERS} in the @code{make} rules.  Equally
15792 for @code{CONFIG_COMMANDS}, etc.)
15795 @node acconfig.h
15796 @section @file{acconfig.h}
15798 @cindex @file{acconfig.h}
15799 @cindex @file{config.h.top}
15800 @cindex @file{config.h.bot}
15802 In order to produce @file{config.h.in}, @command{autoheader} needs to
15803 build or to find templates for each symbol.  Modern releases of Autoconf
15804 use @code{AH_VERBATIM} and @code{AH_TEMPLATE} (@pxref{Autoheader
15805 Macros}), but in older releases a file, @file{acconfig.h}, contained the
15806 list of needed templates.  @command{autoheader} copied comments and
15807 @code{#define} and @code{#undef} statements from @file{acconfig.h} in
15808 the current directory, if present.  This file used to be mandatory if
15809 you @code{AC_DEFINE} any additional symbols.
15811 Modern releases of Autoconf also provide @code{AH_TOP} and
15812 @code{AH_BOTTOM} if you need to prepend/append some information to
15813 @file{config.h.in}.  Ancient versions of Autoconf had a similar feature:
15814 if @file{./acconfig.h} contains the string @samp{@@TOP@@},
15815 @command{autoheader} copies the lines before the line containing
15816 @samp{@@TOP@@} into the top of the file that it generates.  Similarly,
15817 if @file{./acconfig.h} contains the string @samp{@@BOTTOM@@},
15818 @command{autoheader} copies the lines after that line to the end of the
15819 file it generates.  Either or both of those strings may be omitted.  An
15820 even older alternate way to produce the same effect in ancient versions
15821 of Autoconf is to create the files @file{@var{file}.top} (typically
15822 @file{config.h.top}) and/or @file{@var{file}.bot} in the current
15823 directory.  If they exist, @command{autoheader} copies them to the
15824 beginning and end, respectively, of its output.
15826 In former versions of Autoconf, the files used in preparing a software
15827 package for distribution were:
15828 @example
15829 @group
15830 configure.ac --.   .------> autoconf* -----> configure
15831                +---+
15832 [aclocal.m4] --+   `---.
15833 [acsite.m4] ---'       |
15834                        +--> [autoheader*] -> [config.h.in]
15835 [acconfig.h] ----.     |
15836                  +-----'
15837 [config.h.top] --+
15838 [config.h.bot] --'
15839 @end group
15840 @end example
15842 Using only the @code{AH_} macros, @file{configure.ac} should be
15843 self-contained, and should not depend upon @file{acconfig.h} etc.
15846 @node autoupdate Invocation
15847 @section Using @command{autoupdate} to Modernize @file{configure.ac}
15848 @cindex @command{autoupdate}
15850 The @command{autoupdate} program updates a @file{configure.ac} file that
15851 calls Autoconf macros by their old names to use the current macro names.
15852 In version 2 of Autoconf, most of the macros were renamed to use a more
15853 uniform and descriptive naming scheme.  @xref{Macro Names}, for a
15854 description of the new scheme.  Although the old names still work
15855 (@pxref{Obsolete Macros}, for a list of the old macros and the corresponding
15856 new names), you can make your @file{configure.ac} files more readable
15857 and make it easier to use the current Autoconf documentation if you
15858 update them to use the new macro names.
15860 @evindex SIMPLE_BACKUP_SUFFIX
15861 If given no arguments, @command{autoupdate} updates @file{configure.ac},
15862 backing up the original version with the suffix @file{~} (or the value
15863 of the environment variable @code{SIMPLE_BACKUP_SUFFIX}, if that is
15864 set).  If you give @command{autoupdate} an argument, it reads that file
15865 instead of @file{configure.ac} and writes the updated file to the
15866 standard output.
15868 @noindent
15869 @command{autoupdate} accepts the following options:
15871 @table @option
15872 @item --help
15873 @itemx -h
15874 Print a summary of the command line options and exit.
15876 @item --version
15877 @itemx -V
15878 Print the version number of Autoconf and exit.
15880 @item --verbose
15881 @itemx -v
15882 Report processing steps.
15884 @item --debug
15885 @itemx -d
15886 Don't remove the temporary files.
15888 @item --force
15889 @itemx -f
15890 Force the update even if the file has not changed.  Disregard the cache.
15892 @item --include=@var{dir}
15893 @itemx -I @var{dir}
15894 Also look for input files in @var{dir}.  Multiple invocations accumulate.
15895 Directories are browsed from last to first.
15896 @end table
15898 @node Obsolete Macros
15899 @section Obsolete Macros
15901 Several macros are obsoleted in Autoconf, for various reasons (typically
15902 they failed to quote properly, couldn't be extended for more recent
15903 issues, etc.).  They are still supported, but deprecated: their use
15904 should be avoided.
15906 During the jump from Autoconf version 1 to version 2, most of the
15907 macros were renamed to use a more uniform and descriptive naming scheme,
15908 but their signature did not change.  @xref{Macro Names}, for a
15909 description of the new naming scheme.  Below, if there is just the mapping
15910 from old names to new names for these macros, the reader is invited to
15911 refer to the definition of the new macro for the signature and the
15912 description.
15914 @defmac AC_ALLOCA
15915 @acindex{ALLOCA}
15916 @code{AC_FUNC_ALLOCA}
15917 @end defmac
15919 @defmac AC_ARG_ARRAY
15920 @acindex{ARG_ARRAY}
15921 removed because of limited usefulness
15922 @end defmac
15924 @defmac AC_C_CROSS
15925 @acindex{C_CROSS}
15926 This macro is obsolete; it does nothing.
15927 @end defmac
15929 @defmac AC_C_LONG_DOUBLE
15930 @acindex{C_LONG_DOUBLE}
15931 @cvindex HAVE_LONG_DOUBLE
15932 If the C compiler supports a working @code{long double} type with more
15933 range or precision than the @code{double} type, define
15934 @code{HAVE_LONG_DOUBLE}.
15936 You should use @code{AC_TYPE_LONG_DOUBLE} or
15937 @code{AC_TYPE_LONG_DOUBLE_WIDER} instead.  @xref{Particular Types}.
15938 @end defmac
15940 @defmac AC_CANONICAL_SYSTEM
15941 @acindex{CANONICAL_SYSTEM}
15942 Determine the system type and set output variables to the names of the
15943 canonical system types.  @xref{Canonicalizing}, for details about the
15944 variables this macro sets.
15946 The user is encouraged to use either @code{AC_CANONICAL_BUILD}, or
15947 @code{AC_CANONICAL_HOST}, or @code{AC_CANONICAL_TARGET}, depending on
15948 the needs.  Using @code{AC_CANONICAL_TARGET} is enough to run the two
15949 other macros.
15950 @end defmac
15952 @defmac AC_CHAR_UNSIGNED
15953 @acindex{CHAR_UNSIGNED}
15954 @code{AC_C_CHAR_UNSIGNED}
15955 @end defmac
15957 @defmac AC_CHECK_TYPE (@var{type}, @var{default})
15958 @acindex{CHECK_TYPE}
15959 Autoconf, up to 2.13, used to provide this version of
15960 @code{AC_CHECK_TYPE}, deprecated because of its flaws.  First, although
15961 it is a member of the @code{CHECK} clan, it does
15962 more than just checking.  Secondly, missing types are defined
15963 using @code{#define}, not @code{typedef}, and this can lead to
15964 problems in the case of pointer types.
15966 This use of @code{AC_CHECK_TYPE} is obsolete and discouraged; see
15967 @ref{Generic Types}, for the description of the current macro.
15969 If the type @var{type} is not defined, define it to be the C (or C++)
15970 builtin type @var{default}, e.g., @samp{short int} or @samp{unsigned int}.
15972 This macro is equivalent to:
15974 @example
15975 AC_CHECK_TYPE([@var{type}], [],
15976   [AC_DEFINE_UNQUOTED([@var{type}], [@var{default}],
15977      [Define to `@var{default}'
15978       if <sys/types.h> does not define.])])
15979 @end example
15981 In order to keep backward compatibility, the two versions of
15982 @code{AC_CHECK_TYPE} are implemented, selected by a simple heuristics:
15984 @enumerate
15985 @item
15986 If there are three or four arguments, the modern version is used.
15988 @item
15989 If the second argument appears to be a C or C++ type, then the
15990 obsolete version is used.  This happens if the argument is a C or C++
15991 @emph{builtin} type or a C identifier ending in @samp{_t}, optionally
15992 followed by one of @samp{[(* } and then by a string of zero or more
15993 characters taken from the set @samp{[]()* _a-zA-Z0-9}.
15995 @item
15996 If the second argument is spelled with the alphabet of valid C and C++
15997 types, the user is warned and the modern version is used.
15999 @item
16000 Otherwise, the modern version is used.
16001 @end enumerate
16003 @noindent
16004 You are encouraged either to use a valid builtin type, or to use the
16005 equivalent modern code (see above), or better yet, to use
16006 @code{AC_CHECK_TYPES} together with
16008 @example
16009 #if !HAVE_LOFF_T
16010 typedef loff_t off_t;
16011 #endif
16012 @end example
16013 @end defmac
16014 @c end of AC_CHECK_TYPE
16016 @defmac AC_CHECKING (@var{feature-description})
16017 @acindex{CHECKING}
16018 Same as @samp{AC_MSG_NOTICE([checking @var{feature-description}@dots{}]}.
16019 @end defmac
16021 @defmac AC_COMPILE_CHECK (@var{echo-text}, @var{includes}, @var{function-body}, @var{action-if-true}, @ovar{action-if-false})
16022 @acindex{COMPILE_CHECK}
16023 This is an obsolete version of @code{AC_TRY_COMPILE} itself replaced by
16024 @code{AC_COMPILE_IFELSE} (@pxref{Running the Compiler}), with the
16025 addition that it prints @samp{checking for @var{echo-text}} to the
16026 standard output first, if @var{echo-text} is non-empty.  Use
16027 @code{AC_MSG_CHECKING} and @code{AC_MSG_RESULT} instead to print
16028 messages (@pxref{Printing Messages}).
16029 @end defmac
16031 @defmac AC_CONST
16032 @acindex{CONST}
16033 @code{AC_C_CONST}
16034 @end defmac
16036 @defmac AC_CROSS_CHECK
16037 @acindex{CROSS_CHECK}
16038 Same as @code{AC_C_CROSS}, which is obsolete too, and does nothing
16039 @code{:-)}.
16040 @end defmac
16042 @defmac AC_CYGWIN
16043 @acindex{CYGWIN}
16044 Check for the Cygwin environment in which case the shell variable
16045 @code{CYGWIN} is set to @samp{yes}.  Don't use this macro, the dignified
16046 means to check the nature of the host is using
16047 @code{AC_CANONICAL_HOST}.  As a matter of fact this macro is defined as:
16049 @example
16050 AC_REQUIRE([AC_CANONICAL_HOST])[]dnl
16051 case $host_os in
16052   *cygwin* ) CYGWIN=yes;;
16053          * ) CYGWIN=no;;
16054 esac
16055 @end example
16057 Beware that the variable @code{CYGWIN} has a special meaning when
16058 running Cygwin, and should not be changed.  That's yet another reason
16059 not to use this macro.
16060 @end defmac
16062 @defmac AC_DECL_SYS_SIGLIST
16063 @acindex{DECL_SYS_SIGLIST}
16064 @cvindex SYS_SIGLIST_DECLARED
16065 Same as:
16067 @example
16068 AC_CHECK_DECLS([sys_siglist], [], [],
16069 [#include <signal.h>
16070 /* NetBSD declares sys_siglist in unistd.h.  */
16071 #if HAVE_UNISTD_H
16072 # include <unistd.h>
16073 #endif
16075 @end example
16076 @end defmac
16078 @defmac AC_DECL_YYTEXT
16079 @acindex{DECL_YYTEXT}
16080 Does nothing, now integrated in @code{AC_PROG_LEX}.
16081 @end defmac
16083 @defmac AC_DIR_HEADER
16084 @acindex{DIR_HEADER}
16085 @cvindex DIRENT
16086 @cvindex SYSNDIR
16087 @cvindex SYSDIR
16088 @cvindex NDIR
16089 Like calling @code{AC_FUNC_CLOSEDIR_VOID} and@code{AC_HEADER_DIRENT},
16090 but defines a different set of C preprocessor macros to indicate which
16091 header file is found:
16093 @multitable {@file{sys/ndir.h}} {Old Symbol} {@code{HAVE_SYS_NDIR_H}}
16094 @item Header            @tab Old Symbol     @tab New Symbol
16095 @item @file{dirent.h}   @tab @code{DIRENT}  @tab @code{HAVE_DIRENT_H}
16096 @item @file{sys/ndir.h} @tab @code{SYSNDIR} @tab @code{HAVE_SYS_NDIR_H}
16097 @item @file{sys/dir.h}  @tab @code{SYSDIR}  @tab @code{HAVE_SYS_DIR_H}
16098 @item @file{ndir.h}     @tab @code{NDIR}    @tab @code{HAVE_NDIR_H}
16099 @end multitable
16100 @end defmac
16102 @defmac AC_DYNIX_SEQ
16103 @acindex{DYNIX_SEQ}
16104 If on DYNIX/ptx, add @option{-lseq} to output variable
16105 @code{LIBS}.  This macro used to be defined as
16107 @example
16108 AC_CHECK_LIB([seq], [getmntent], [LIBS="-lseq $LIBS"])
16109 @end example
16111 @noindent
16112 now it is just @code{AC_FUNC_GETMNTENT}.
16113 @end defmac
16115 @defmac AC_EXEEXT
16116 @acindex{EXEEXT}
16117 @ovindex EXEEXT
16118 Defined the output variable @code{EXEEXT} based on the output of the
16119 compiler, which is now done automatically.  Typically set to empty
16120 string if Posix and @samp{.exe} if a @acronym{DOS} variant.
16121 @end defmac
16123 @defmac AC_EMXOS2
16124 @acindex{EMXOS2}
16125 Similar to @code{AC_CYGWIN} but checks for the EMX environment on OS/2
16126 and sets @code{EMXOS2}.
16127 @end defmac
16129 @defmac AC_ERROR
16130 @acindex{ERROR}
16131 @code{AC_MSG_ERROR}
16132 @end defmac
16134 @defmac AC_FIND_X
16135 @acindex{FIND_X}
16136 @code{AC_PATH_X}
16137 @end defmac
16139 @defmac AC_FIND_XTRA
16140 @acindex{FIND_XTRA}
16141 @code{AC_PATH_XTRA}
16142 @end defmac
16144 @defmac AC_FOREACH
16145 @acindex{FOREACH}
16146 @code{m4_foreach_w}
16147 @end defmac
16149 @defmac AC_FUNC_CHECK
16150 @acindex{FUNC_CHECK}
16151 @code{AC_CHECK_FUNC}
16152 @end defmac
16154 @defmac AC_FUNC_WAIT3
16155 @acindex{FUNC_WAIT3}
16156 @cvindex HAVE_WAIT3
16157 If @code{wait3} is found and fills in the contents of its third argument
16158 (a @samp{struct rusage *}), which HP-UX does not do, define
16159 @code{HAVE_WAIT3}.
16161 These days portable programs should use @code{waitpid}, not
16162 @code{wait3}, as @code{wait3} has been removed from Posix.
16163 @end defmac
16165 @defmac AC_GCC_TRADITIONAL
16166 @acindex{GCC_TRADITIONAL}
16167 @code{AC_PROG_GCC_TRADITIONAL}
16168 @end defmac
16170 @defmac AC_GETGROUPS_T
16171 @acindex{GETGROUPS_T}
16172 @code{AC_TYPE_GETGROUPS}
16173 @end defmac
16175 @defmac AC_GETLOADAVG
16176 @acindex{GETLOADAVG}
16177 @code{AC_FUNC_GETLOADAVG}
16178 @end defmac
16180 @defmac AC_HAVE_FUNCS
16181 @acindex{HAVE_FUNCS}
16182 @code{AC_CHECK_FUNCS}
16183 @end defmac
16185 @defmac AC_HAVE_HEADERS
16186 @acindex{HAVE_HEADERS}
16187 @code{AC_CHECK_HEADERS}
16188 @end defmac
16190 @defmac AC_HAVE_LIBRARY (@var{library}, @ovar{action-if-found}, @ovar{action-if-not-found}, @ovar{other-libraries})
16191 @acindex{HAVE_LIBRARY}
16192 This macro is equivalent to calling @code{AC_CHECK_LIB} with a
16193 @var{function} argument of @code{main}.  In addition, @var{library} can
16194 be written as any of @samp{foo}, @option{-lfoo}, or @samp{libfoo.a}.  In
16195 all of those cases, the compiler is passed @option{-lfoo}.  However,
16196 @var{library} cannot be a shell variable; it must be a literal name.
16197 @end defmac
16199 @defmac AC_HAVE_POUNDBANG
16200 @acindex{HAVE_POUNDBANG}
16201 @code{AC_SYS_INTERPRETER} (different calling convention)
16202 @end defmac
16204 @defmac AC_HEADER_CHECK
16205 @acindex{HEADER_CHECK}
16206 @code{AC_CHECK_HEADER}
16207 @end defmac
16209 @defmac AC_HEADER_EGREP
16210 @acindex{HEADER_EGREP}
16211 @code{AC_EGREP_HEADER}
16212 @end defmac
16214 @defmac AC_HELP_STRING
16215 @acindex{HELP_STRING}
16216 @code{AS_HELP_STRING}
16217 @end defmac
16219 @defmac AC_INIT (@var{unique-file-in-source-dir})
16220 @acindex{INIT}
16221 Formerly @code{AC_INIT} used to have a single argument, and was
16222 equivalent to:
16224 @example
16225 AC_INIT
16226 AC_CONFIG_SRCDIR(@var{unique-file-in-source-dir})
16227 @end example
16228 @end defmac
16230 @defmac AC_INLINE
16231 @acindex{INLINE}
16232 @code{AC_C_INLINE}
16233 @end defmac
16235 @defmac AC_INT_16_BITS
16236 @acindex{INT_16_BITS}
16237 @cvindex INT_16_BITS
16238 If the C type @code{int} is 16 bits wide, define @code{INT_16_BITS}.
16239 Use @samp{AC_CHECK_SIZEOF(int)} instead.
16240 @end defmac
16242 @defmac AC_IRIX_SUN
16243 @acindex{IRIX_SUN}
16244 If on @sc{irix} (Silicon Graphics Unix), add @option{-lsun} to output
16245 @code{LIBS}.  If you were using it to get @code{getmntent}, use
16246 @code{AC_FUNC_GETMNTENT} instead.  If you used it for the NIS versions
16247 of the password and group functions, use @samp{AC_CHECK_LIB(sun,
16248 getpwnam)}.  Up to Autoconf 2.13, it used to be
16250 @example
16251 AC_CHECK_LIB([sun], [getmntent], [LIBS="-lsun $LIBS"])
16252 @end example
16254 @noindent
16255 now it is defined as
16257 @example
16258 AC_FUNC_GETMNTENT
16259 AC_CHECK_LIB([sun], [getpwnam])
16260 @end example
16261 @end defmac
16263 @defmac AC_LANG_C
16264 @acindex{LANG_C}
16265 Same as @samp{AC_LANG([C])}.
16266 @end defmac
16268 @defmac AC_LANG_CPLUSPLUS
16269 @acindex{LANG_CPLUSPLUS}
16270 Same as @samp{AC_LANG([C++])}.
16271 @end defmac
16273 @defmac AC_LANG_FORTRAN77
16274 @acindex{LANG_FORTRAN77}
16275 Same as @samp{AC_LANG([Fortran 77])}.
16276 @end defmac
16278 @defmac AC_LANG_RESTORE
16279 @acindex{LANG_RESTORE}
16280 Select the @var{language} that is saved on the top of the stack, as set
16281 by @code{AC_LANG_SAVE}, remove it from the stack, and call
16282 @code{AC_LANG(@var{language})}.
16283 @end defmac
16285 @defmac AC_LANG_SAVE
16286 @acindex{LANG_SAVE}
16287 Remember the current language (as set by @code{AC_LANG}) on a stack.
16288 The current language does not change.  @code{AC_LANG_PUSH} is preferred.
16289 @end defmac
16291 @defmac AC_LINK_FILES (@var{source}@dots{}, @var{dest}@dots{})
16292 @acindex{LINK_FILES}
16293 This is an obsolete version of @code{AC_CONFIG_LINKS}.  An updated
16294 version of:
16296 @example
16297 AC_LINK_FILES(config/$machine.h config/$obj_format.h,
16298               host.h            object.h)
16299 @end example
16301 @noindent
16304 @example
16305 AC_CONFIG_LINKS([host.h:config/$machine.h
16306                 object.h:config/$obj_format.h])
16307 @end example
16308 @end defmac
16310 @defmac AC_LN_S
16311 @acindex{LN_S}
16312 @code{AC_PROG_LN_S}
16313 @end defmac
16315 @defmac AC_LONG_64_BITS
16316 @acindex{LONG_64_BITS}
16317 @cvindex LONG_64_BITS
16318 Define @code{LONG_64_BITS} if the C type @code{long int} is 64 bits wide.
16319 Use the generic macro @samp{AC_CHECK_SIZEOF([long int])} instead.
16320 @end defmac
16322 @defmac AC_LONG_DOUBLE
16323 @acindex{LONG_DOUBLE}
16324 If the C compiler supports a working @code{long double} type with more
16325 range or precision than the @code{double} type, define
16326 @code{HAVE_LONG_DOUBLE}.
16328 You should use @code{AC_TYPE_LONG_DOUBLE} or
16329 @code{AC_TYPE_LONG_DOUBLE_WIDER} instead.  @xref{Particular Types}.
16330 @end defmac
16332 @defmac AC_LONG_FILE_NAMES
16333 @acindex{LONG_FILE_NAMES}
16334 @code{AC_SYS_LONG_FILE_NAMES}
16335 @end defmac
16337 @defmac AC_MAJOR_HEADER
16338 @acindex{MAJOR_HEADER}
16339 @code{AC_HEADER_MAJOR}
16340 @end defmac
16342 @defmac AC_MEMORY_H
16343 @acindex{MEMORY_H}
16344 @cvindex NEED_MEMORY_H
16345 Used to define @code{NEED_MEMORY_H} if the @code{mem} functions were
16346 defined in @file{memory.h}.  Today it is equivalent to
16347 @samp{AC_CHECK_HEADERS([memory.h])}.  Adjust your code to depend upon
16348 @code{HAVE_MEMORY_H}, not @code{NEED_MEMORY_H}; see @ref{Standard
16349 Symbols}.
16350 @end defmac
16352 @defmac AC_MINGW32
16353 @acindex{MINGW32}
16354 Similar to @code{AC_CYGWIN} but checks for the MinGW compiler
16355 environment and sets @code{MINGW32}.
16356 @end defmac
16358 @defmac AC_MINUS_C_MINUS_O
16359 @acindex{MINUS_C_MINUS_O}
16360 @code{AC_PROG_CC_C_O}
16361 @end defmac
16363 @defmac AC_MMAP
16364 @acindex{MMAP}
16365 @code{AC_FUNC_MMAP}
16366 @end defmac
16368 @defmac AC_MODE_T
16369 @acindex{MODE_T}
16370 @code{AC_TYPE_MODE_T}
16371 @end defmac
16373 @defmac AC_OBJEXT
16374 @acindex{OBJEXT}
16375 @ovindex OBJEXT
16376 Defined the output variable @code{OBJEXT} based on the output of the
16377 compiler, after .c files have been excluded.  Typically set to @samp{o}
16378 if Posix, @samp{obj} if a @acronym{DOS} variant.
16379 Now the compiler checking macros handle
16380 this automatically.
16381 @end defmac
16383 @defmac AC_OBSOLETE (@var{this-macro-name}, @ovar{suggestion})
16384 @acindex{OBSOLETE}
16385 Make M4 print a message to the standard error output warning that
16386 @var{this-macro-name} is obsolete, and giving the file and line number
16387 where it was called.  @var{this-macro-name} should be the name of the
16388 macro that is calling @code{AC_OBSOLETE}.  If @var{suggestion} is given,
16389 it is printed at the end of the warning message; for example, it can be
16390 a suggestion for what to use instead of @var{this-macro-name}.
16392 For instance
16394 @example
16395 AC_OBSOLETE([$0], [; use AC_CHECK_HEADERS(unistd.h) instead])dnl
16396 @end example
16398 You are encouraged to use @code{AU_DEFUN} instead, since it gives better
16399 services to the user.
16400 @end defmac
16402 @defmac AC_OFF_T
16403 @acindex{OFF_T}
16404 @code{AC_TYPE_OFF_T}
16405 @end defmac
16407 @defmac AC_OUTPUT (@ovar{file}@dots{}, @ovar{extra-cmds}, @ovar{init-cmds})
16408 @acindex{OUTPUT}
16409 The use of @code{AC_OUTPUT} with argument is deprecated.  This obsoleted
16410 interface is equivalent to:
16412 @example
16413 @group
16414 AC_CONFIG_FILES(@var{file}@dots{})
16415 AC_CONFIG_COMMANDS([default],
16416                    @var{extra-cmds}, @var{init-cmds})
16417 AC_OUTPUT
16418 @end group
16419 @end example
16420 @end defmac
16422 @defmac AC_OUTPUT_COMMANDS (@var{extra-cmds}, @ovar{init-cmds})
16423 @acindex{OUTPUT_COMMANDS}
16424 Specify additional shell commands to run at the end of
16425 @file{config.status}, and shell commands to initialize any variables
16426 from @command{configure}.  This macro may be called multiple times.  It is
16427 obsolete, replaced by @code{AC_CONFIG_COMMANDS}.
16429 Here is an unrealistic example:
16431 @example
16432 fubar=27
16433 AC_OUTPUT_COMMANDS([echo this is extra $fubar, and so on.],
16434                    [fubar=$fubar])
16435 AC_OUTPUT_COMMANDS([echo this is another, extra, bit],
16436                    [echo init bit])
16437 @end example
16439 Aside from the fact that @code{AC_CONFIG_COMMANDS} requires an
16440 additional key, an important difference is that
16441 @code{AC_OUTPUT_COMMANDS} is quoting its arguments twice, unlike
16442 @code{AC_CONFIG_COMMANDS}.  This means that @code{AC_CONFIG_COMMANDS}
16443 can safely be given macro calls as arguments:
16445 @example
16446 AC_CONFIG_COMMANDS(foo, [my_FOO()])
16447 @end example
16449 @noindent
16450 Conversely, where one level of quoting was enough for literal strings
16451 with @code{AC_OUTPUT_COMMANDS}, you need two with
16452 @code{AC_CONFIG_COMMANDS}.  The following lines are equivalent:
16454 @example
16455 @group
16456 AC_OUTPUT_COMMANDS([echo "Square brackets: []"])
16457 AC_CONFIG_COMMANDS([default], [[echo "Square brackets: []"]])
16458 @end group
16459 @end example
16460 @end defmac
16462 @defmac AC_PID_T
16463 @acindex{PID_T}
16464 @code{AC_TYPE_PID_T}
16465 @end defmac
16467 @defmac AC_PREFIX
16468 @acindex{PREFIX}
16469 @code{AC_PREFIX_PROGRAM}
16470 @end defmac
16472 @defmac AC_PROGRAMS_CHECK
16473 @acindex{PROGRAMS_CHECK}
16474 @code{AC_CHECK_PROGS}
16475 @end defmac
16477 @defmac AC_PROGRAMS_PATH
16478 @acindex{PROGRAMS_PATH}
16479 @code{AC_PATH_PROGS}
16480 @end defmac
16482 @defmac AC_PROGRAM_CHECK
16483 @acindex{PROGRAM_CHECK}
16484 @code{AC_CHECK_PROG}
16485 @end defmac
16487 @defmac AC_PROGRAM_EGREP
16488 @acindex{PROGRAM_EGREP}
16489 @code{AC_EGREP_CPP}
16490 @end defmac
16492 @defmac AC_PROGRAM_PATH
16493 @acindex{PROGRAM_PATH}
16494 @code{AC_PATH_PROG}
16495 @end defmac
16497 @defmac AC_REMOTE_TAPE
16498 @acindex{REMOTE_TAPE}
16499 removed because of limited usefulness
16500 @end defmac
16502 @defmac AC_RESTARTABLE_SYSCALLS
16503 @acindex{RESTARTABLE_SYSCALLS}
16504 @code{AC_SYS_RESTARTABLE_SYSCALLS}
16505 @end defmac
16507 @defmac AC_RETSIGTYPE
16508 @acindex{RETSIGTYPE}
16509 @code{AC_TYPE_SIGNAL}
16510 @end defmac
16512 @defmac AC_RSH
16513 @acindex{RSH}
16514 removed because of limited usefulness
16515 @end defmac
16517 @defmac AC_SCO_INTL
16518 @acindex{SCO_INTL}
16519 @ovindex LIBS
16520 If on SCO Unix, add @option{-lintl} to output variable @code{LIBS}.  This
16521 macro used to do this:
16523 @example
16524 AC_CHECK_LIB([intl], [strftime], [LIBS="-lintl $LIBS"])
16525 @end example
16527 @noindent
16528 Now it just calls @code{AC_FUNC_STRFTIME} instead.
16529 @end defmac
16531 @defmac AC_SETVBUF_REVERSED
16532 @acindex{SETVBUF_REVERSED}
16533 @code{AC_FUNC_SETVBUF_REVERSED}
16534 @end defmac
16536 @defmac AC_SET_MAKE
16537 @acindex{SET_MAKE}
16538 @code{AC_PROG_MAKE_SET}
16539 @end defmac
16541 @defmac AC_SIZEOF_TYPE
16542 @acindex{SIZEOF_TYPE}
16543 @code{AC_CHECK_SIZEOF}
16544 @end defmac
16546 @defmac AC_SIZE_T
16547 @acindex{SIZE_T}
16548 @code{AC_TYPE_SIZE_T}
16549 @end defmac
16551 @defmac AC_STAT_MACROS_BROKEN
16552 @acindex{STAT_MACROS_BROKEN}
16553 @code{AC_HEADER_STAT}
16554 @end defmac
16556 @defmac AC_STDC_HEADERS
16557 @acindex{STDC_HEADERS}
16558 @code{AC_HEADER_STDC}
16559 @end defmac
16561 @defmac AC_STRCOLL
16562 @acindex{STRCOLL}
16563 @code{AC_FUNC_STRCOLL}
16564 @end defmac
16566 @defmac AC_ST_BLKSIZE
16567 @acindex{ST_BLKSIZE}
16568 @code{AC_CHECK_MEMBERS}
16569 @end defmac
16571 @defmac AC_ST_BLOCKS
16572 @acindex{ST_BLOCKS}
16573 @code{AC_STRUCT_ST_BLOCKS}
16574 @end defmac
16576 @defmac AC_ST_RDEV
16577 @acindex{ST_RDEV}
16578 @code{AC_CHECK_MEMBERS}
16579 @end defmac
16581 @defmac AC_SYS_RESTARTABLE_SYSCALLS
16582 @acindex{SYS_RESTARTABLE_SYSCALLS}
16583 @cvindex HAVE_RESTARTABLE_SYSCALLS
16584 If the system automatically restarts a system call that is interrupted
16585 by a signal, define @code{HAVE_RESTARTABLE_SYSCALLS}.  This macro does
16586 not check whether system calls are restarted in general---it checks whether a
16587 signal handler installed with @code{signal} (but not @code{sigaction})
16588 causes system calls to be restarted.  It does not check whether system calls
16589 can be restarted when interrupted by signals that have no handler.
16591 These days portable programs should use @code{sigaction} with
16592 @code{SA_RESTART} if they want restartable system calls.  They should
16593 not rely on @code{HAVE_RESTARTABLE_SYSCALLS}, since nowadays whether a
16594 system call is restartable is a dynamic issue, not a configuration-time
16595 issue.
16596 @end defmac
16598 @defmac AC_SYS_SIGLIST_DECLARED
16599 @acindex{SYS_SIGLIST_DECLARED}
16600 @code{AC_DECL_SYS_SIGLIST}
16601 @end defmac
16603 @defmac AC_TEST_CPP
16604 @acindex{TEST_CPP}
16605 @code{AC_TRY_CPP}, replaced by @code{AC_PREPROC_IFELSE}.
16606 @end defmac
16608 @defmac AC_TEST_PROGRAM
16609 @acindex{TEST_PROGRAM}
16610 @code{AC_TRY_RUN}, replaced by @code{AC_RUN_IFELSE}.
16611 @end defmac
16613 @defmac AC_TIMEZONE
16614 @acindex{TIMEZONE}
16615 @code{AC_STRUCT_TIMEZONE}
16616 @end defmac
16618 @defmac AC_TIME_WITH_SYS_TIME
16619 @acindex{TIME_WITH_SYS_TIME}
16620 @code{AC_HEADER_TIME}
16621 @end defmac
16623 @defmac AC_TRY_COMPILE (@var{includes}, @var{function-body}, @ovar{action-if-true}, @ovar{action-if-false})
16624 @acindex{TRY_COMPILE}
16625 Same as:
16627 @example
16628 AC_COMPILE_IFELSE(
16629   [AC_LANG_PROGRAM([[@var{includes}]],
16630      [[@var{function-body}]])],
16631   [@var{action-if-true}],
16632   [@var{action-if-false}])
16633 @end example
16635 @noindent
16636 @xref{Running the Compiler}.
16638 This macro double quotes both @var{includes} and @var{function-body}.
16640 For C and C++, @var{includes} is any @code{#include} statements needed
16641 by the code in @var{function-body} (@var{includes} is ignored if
16642 the currently selected language is Fortran or Fortran 77).  The compiler
16643 and compilation flags are determined by the current language
16644 (@pxref{Language Choice}).
16645 @end defmac
16647 @defmac AC_TRY_CPP (@var{input}, @ovar{action-if-true}, @ovar{action-if-false})
16648 @acindex{TRY_CPP}
16649 Same as:
16651 @example
16652 AC_PREPROC_IFELSE(
16653   [AC_LANG_SOURCE([[@var{input}]])],
16654   [@var{action-if-true}],
16655   [@var{action-if-false}])
16656 @end example
16658 @noindent
16659 @xref{Running the Preprocessor}.
16661 This macro double quotes the @var{input}.
16662 @end defmac
16664 @defmac AC_TRY_LINK (@var{includes}, @var{function-body}, @ovar{action-if-true}, @ovar{action-if-false})
16665 @acindex{TRY_LINK}
16666 Same as:
16668 @example
16669 AC_LINK_IFELSE(
16670   [AC_LANG_PROGRAM([[@var{includes}]],
16671      [[@var{function-body}]])],
16672   [@var{action-if-true}],
16673   [@var{action-if-false}])
16674 @end example
16676 @noindent
16677 @xref{Running the Compiler}.
16679 This macro double quotes both @var{includes} and @var{function-body}.
16681 Depending on the current language (@pxref{Language Choice}), create a
16682 test program to see whether a function whose body consists of
16683 @var{function-body} can be compiled and linked.  If the file compiles
16684 and links successfully, run shell commands @var{action-if-found},
16685 otherwise run @var{action-if-not-found}.
16687 This macro double quotes both @var{includes} and @var{function-body}.
16689 For C and C++, @var{includes} is any @code{#include} statements needed
16690 by the code in @var{function-body} (@var{includes} is ignored if
16691 the currently selected language is Fortran or Fortran 77).  The compiler
16692 and compilation flags are determined by the current language
16693 (@pxref{Language Choice}), and in addition @code{LDFLAGS} and
16694 @code{LIBS} are used for linking.
16695 @end defmac
16697 @defmac AC_TRY_LINK_FUNC (@var{function}, @ovar{action-if-found}, @ovar{action-if-not-found})
16698 @acindex{TRY_LINK_FUNC}
16699 This macro is equivalent to
16700 @samp{AC_LINK_IFELSE([AC_LANG_CALL([], [@var{function}])],
16701 [@var{action-if-found}], [@var{action-if-not-found}])}.
16702 @end defmac
16704 @defmac AC_TRY_RUN (@var{program}, @ovar{action-if-true}, @ovar{action-if-false}, @ovar{action-if-cross-compiling})
16705 @acindex{TRY_RUN}
16706 Same as:
16708 @example
16709 AC_RUN_IFELSE(
16710   [AC_LANG_SOURCE([[@var{program}]])],
16711   [@var{action-if-true}],
16712   [@var{action-if-false}],
16713   [@var{action-if-cross-compiling}])
16714 @end example
16716 @noindent
16717 @xref{Runtime}.
16718 @end defmac
16720 @defmac AC_UID_T
16721 @acindex{UID_T}
16722 @code{AC_TYPE_UID_T}
16723 @end defmac
16725 @defmac AC_UNISTD_H
16726 @acindex{UNISTD_H}
16727 Same as @samp{AC_CHECK_HEADERS([unistd.h])}.
16728 @end defmac
16730 @defmac AC_USG
16731 @acindex{USG}
16732 @cvindex USG
16733 Define @code{USG} if the @acronym{BSD} string functions are defined in
16734 @file{strings.h}.  You should no longer depend upon @code{USG}, but on
16735 @code{HAVE_STRING_H}; see @ref{Standard Symbols}.
16736 @end defmac
16738 @defmac AC_UTIME_NULL
16739 @acindex{UTIME_NULL}
16740 @code{AC_FUNC_UTIME_NULL}
16741 @end defmac
16743 @defmac AC_VALIDATE_CACHED_SYSTEM_TUPLE (@ovar{cmd})
16744 @acindex{VALIDATE_CACHED_SYSTEM_TUPLE}
16745 If the cache file is inconsistent with the current host, target and
16746 build system types, it used to execute @var{cmd} or print a default
16747 error message.  This is now handled by default.
16748 @end defmac
16750 @defmac AC_VERBOSE (@var{result-description})
16751 @acindex{VERBOSE}
16752 @code{AC_MSG_RESULT}.
16753 @end defmac
16755 @defmac AC_VFORK
16756 @acindex{VFORK}
16757 @code{AC_FUNC_VFORK}
16758 @end defmac
16760 @defmac AC_VPRINTF
16761 @acindex{VPRINTF}
16762 @code{AC_FUNC_VPRINTF}
16763 @end defmac
16765 @defmac AC_WAIT3
16766 @acindex{WAIT3}
16767 @code{AC_FUNC_WAIT3}
16768 @end defmac
16770 @defmac AC_WARN
16771 @acindex{WARN}
16772 @code{AC_MSG_WARN}
16773 @end defmac
16775 @defmac AC_WORDS_BIGENDIAN
16776 @acindex{WORDS_BIGENDIAN}
16777 @code{AC_C_BIGENDIAN}
16778 @end defmac
16780 @defmac AC_XENIX_DIR
16781 @acindex{XENIX_DIR}
16782 @ovindex LIBS
16783 This macro used to add @option{-lx} to output variable @code{LIBS} if on
16784 Xenix.  Also, if @file{dirent.h} is being checked for, added
16785 @option{-ldir} to @code{LIBS}.  Now it is merely an alias of
16786 @code{AC_HEADER_DIRENT} instead, plus some code to detect whether
16787 running @sc{xenix} on which you should not depend:
16789 @example
16790 AC_MSG_CHECKING([for Xenix])
16791 AC_EGREP_CPP([yes],
16792 [#if defined M_XENIX && !defined M_UNIX
16793   yes
16794 #endif],
16795              [AC_MSG_RESULT([yes]); XENIX=yes],
16796              [AC_MSG_RESULT([no]); XENIX=])
16797 @end example
16798 @end defmac
16800 @defmac AC_YYTEXT_POINTER
16801 @acindex{YYTEXT_POINTER}
16802 @code{AC_DECL_YYTEXT}
16803 @end defmac
16805 @node Autoconf 1
16806 @section Upgrading From Version 1
16807 @cindex Upgrading autoconf
16808 @cindex Autoconf upgrading
16810 Autoconf version 2 is mostly backward compatible with version 1.
16811 However, it introduces better ways to do some things, and doesn't
16812 support some of the ugly things in version 1.  So, depending on how
16813 sophisticated your @file{configure.ac} files are, you might have to do
16814 some manual work in order to upgrade to version 2.  This chapter points
16815 out some problems to watch for when upgrading.  Also, perhaps your
16816 @command{configure} scripts could benefit from some of the new features in
16817 version 2; the changes are summarized in the file @file{NEWS} in the
16818 Autoconf distribution.
16820 @menu
16821 * Changed File Names::          Files you might rename
16822 * Changed Makefiles::           New things to put in @file{Makefile.in}
16823 * Changed Macros::              Macro calls you might replace
16824 * Changed Results::             Changes in how to check test results
16825 * Changed Macro Writing::       Better ways to write your own macros
16826 @end menu
16828 @node Changed File Names
16829 @subsection Changed File Names
16831 If you have an @file{aclocal.m4} installed with Autoconf (as opposed to
16832 in a particular package's source directory), you must rename it to
16833 @file{acsite.m4}.  @xref{autoconf Invocation}.
16835 If you distribute @file{install.sh} with your package, rename it to
16836 @file{install-sh} so @code{make} builtin rules don't inadvertently
16837 create a file called @file{install} from it.  @code{AC_PROG_INSTALL}
16838 looks for the script under both names, but it is best to use the new name.
16840 If you were using @file{config.h.top}, @file{config.h.bot}, or
16841 @file{acconfig.h}, you still can, but you have less clutter if you
16842 use the @code{AH_} macros.  @xref{Autoheader Macros}.
16844 @node Changed Makefiles
16845 @subsection Changed Makefiles
16847 Add @samp{@@CFLAGS@@}, @samp{@@CPPFLAGS@@}, and @samp{@@LDFLAGS@@} in
16848 your @file{Makefile.in} files, so they can take advantage of the values
16849 of those variables in the environment when @command{configure} is run.
16850 Doing this isn't necessary, but it's a convenience for users.
16852 Also add @samp{@@configure_input@@} in a comment to each input file for
16853 @code{AC_OUTPUT}, so that the output files contain a comment saying
16854 they were produced by @command{configure}.  Automatically selecting the
16855 right comment syntax for all the kinds of files that people call
16856 @code{AC_OUTPUT} on became too much work.
16858 Add @file{config.log} and @file{config.cache} to the list of files you
16859 remove in @code{distclean} targets.
16861 If you have the following in @file{Makefile.in}:
16863 @example
16864 prefix = /usr/local
16865 exec_prefix = $(prefix)
16866 @end example
16868 @noindent
16869 you must change it to:
16871 @example
16872 prefix = @@prefix@@
16873 exec_prefix = @@exec_prefix@@
16874 @end example
16876 @noindent
16877 The old behavior of replacing those variables without @samp{@@}
16878 characters around them has been removed.
16880 @node Changed Macros
16881 @subsection Changed Macros
16883 Many of the macros were renamed in Autoconf version 2.  You can still
16884 use the old names, but the new ones are clearer, and it's easier to find
16885 the documentation for them.  @xref{Obsolete Macros}, for a table showing the
16886 new names for the old macros.  Use the @command{autoupdate} program to
16887 convert your @file{configure.ac} to using the new macro names.
16888 @xref{autoupdate Invocation}.
16890 Some macros have been superseded by similar ones that do the job better,
16891 but are not call-compatible.  If you get warnings about calling obsolete
16892 macros while running @command{autoconf}, you may safely ignore them, but
16893 your @command{configure} script generally works better if you follow
16894 the advice that is printed about what to replace the obsolete macros with.  In
16895 particular, the mechanism for reporting the results of tests has
16896 changed.  If you were using @command{echo} or @code{AC_VERBOSE} (perhaps
16897 via @code{AC_COMPILE_CHECK}), your @command{configure} script's output
16898 looks better if you switch to @code{AC_MSG_CHECKING} and
16899 @code{AC_MSG_RESULT}.  @xref{Printing Messages}.  Those macros work best
16900 in conjunction with cache variables.  @xref{Caching Results}.
16904 @node Changed Results
16905 @subsection Changed Results
16907 If you were checking the results of previous tests by examining the
16908 shell variable @code{DEFS}, you need to switch to checking the values of
16909 the cache variables for those tests.  @code{DEFS} no longer exists while
16910 @command{configure} is running; it is only created when generating output
16911 files.  This difference from version 1 is because properly quoting the
16912 contents of that variable turned out to be too cumbersome and
16913 inefficient to do every time @code{AC_DEFINE} is called.  @xref{Cache
16914 Variable Names}.
16916 For example, here is a @file{configure.ac} fragment written for Autoconf
16917 version 1:
16919 @example
16920 AC_HAVE_FUNCS(syslog)
16921 case "$DEFS" in
16922 *-DHAVE_SYSLOG*) ;;
16923 *) # syslog is not in the default libraries.  See if it's in some other.
16924   saved_LIBS="$LIBS"
16925   for lib in bsd socket inet; do
16926     AC_CHECKING(for syslog in -l$lib)
16927     LIBS="-l$lib $saved_LIBS"
16928     AC_HAVE_FUNCS(syslog)
16929     case "$DEFS" in
16930     *-DHAVE_SYSLOG*) break ;;
16931     *) ;;
16932     esac
16933     LIBS="$saved_LIBS"
16934   done ;;
16935 esac
16936 @end example
16938 Here is a way to write it for version 2:
16940 @example
16941 AC_CHECK_FUNCS([syslog])
16942 if test $ac_cv_func_syslog = no; then
16943   # syslog is not in the default libraries.  See if it's in some other.
16944   for lib in bsd socket inet; do
16945     AC_CHECK_LIB([$lib], [syslog], [AC_DEFINE([HAVE_SYSLOG])
16946       LIBS="-l$lib $LIBS"; break])
16947   done
16949 @end example
16951 If you were working around bugs in @code{AC_DEFINE_UNQUOTED} by adding
16952 backslashes before quotes, you need to remove them.  It now works
16953 predictably, and does not treat quotes (except back quotes) specially.
16954 @xref{Setting Output Variables}.
16956 All of the Boolean shell variables set by Autoconf macros now use
16957 @samp{yes} for the true value.  Most of them use @samp{no} for false,
16958 though for backward compatibility some use the empty string instead.  If
16959 you were relying on a shell variable being set to something like 1 or
16960 @samp{t} for true, you need to change your tests.
16962 @node Changed Macro Writing
16963 @subsection Changed Macro Writing
16965 When defining your own macros, you should now use @code{AC_DEFUN}
16966 instead of @code{define}.  @code{AC_DEFUN} automatically calls
16967 @code{AC_PROVIDE} and ensures that macros called via @code{AC_REQUIRE}
16968 do not interrupt other macros, to prevent nested @samp{checking@dots{}}
16969 messages on the screen.  There's no actual harm in continuing to use the
16970 older way, but it's less convenient and attractive.  @xref{Macro
16971 Definitions}.
16973 You probably looked at the macros that came with Autoconf as a guide for
16974 how to do things.  It would be a good idea to take a look at the new
16975 versions of them, as the style is somewhat improved and they take
16976 advantage of some new features.
16978 If you were doing tricky things with undocumented Autoconf internals
16979 (macros, variables, diversions), check whether you need to change
16980 anything to account for changes that have been made.  Perhaps you can
16981 even use an officially supported technique in version 2 instead of
16982 kludging.  Or perhaps not.
16984 To speed up your locally written feature tests, add caching to them.
16985 See whether any of your tests are of general enough usefulness to
16986 encapsulate them into macros that you can share.
16989 @node Autoconf 2.13
16990 @section Upgrading From Version 2.13
16991 @cindex Upgrading autoconf
16992 @cindex Autoconf upgrading
16994 The introduction of the previous section (@pxref{Autoconf 1}) perfectly
16995 suits this section@enddots{}
16997 @quotation
16998 Autoconf version 2.50 is mostly backward compatible with version 2.13.
16999 However, it introduces better ways to do some things, and doesn't
17000 support some of the ugly things in version 2.13.  So, depending on how
17001 sophisticated your @file{configure.ac} files are, you might have to do
17002 some manual work in order to upgrade to version 2.50.  This chapter
17003 points out some problems to watch for when upgrading.  Also, perhaps
17004 your @command{configure} scripts could benefit from some of the new
17005 features in version 2.50; the changes are summarized in the file
17006 @file{NEWS} in the Autoconf distribution.
17007 @end quotation
17009 @menu
17010 * Changed Quotation::           Broken code which used to work
17011 * New Macros::                  Interaction with foreign macros
17012 * Hosts and Cross-Compilation::  Bugward compatibility kludges
17013 * AC_LIBOBJ vs LIBOBJS::        LIBOBJS is a forbidden token
17014 * AC_FOO_IFELSE vs AC_TRY_FOO::  A more generic scheme for testing sources
17015 @end menu
17017 @node Changed Quotation
17018 @subsection Changed Quotation
17020 The most important changes are invisible to you: the implementation of
17021 most macros have completely changed.  This allowed more factorization of
17022 the code, better error messages, a higher uniformity of the user's
17023 interface etc.  Unfortunately, as a side effect, some construct which
17024 used to (miraculously) work might break starting with Autoconf 2.50.
17025 The most common culprit is bad quotation.
17027 For instance, in the following example, the message is not properly
17028 quoted:
17030 @example
17031 AC_INIT
17032 AC_CHECK_HEADERS(foo.h, ,
17033   AC_MSG_ERROR(cannot find foo.h, bailing out))
17034 AC_OUTPUT
17035 @end example
17037 @noindent
17038 Autoconf 2.13 simply ignores it:
17040 @example
17041 $ @kbd{autoconf-2.13; ./configure --silent}
17042 creating cache ./config.cache
17043 configure: error: cannot find foo.h
17045 @end example
17047 @noindent
17048 while Autoconf 2.50 produces a broken @file{configure}:
17050 @example
17051 $ @kbd{autoconf-2.50; ./configure --silent}
17052 configure: error: cannot find foo.h
17053 ./configure: exit: bad non-numeric arg `bailing'
17054 ./configure: exit: bad non-numeric arg `bailing'
17056 @end example
17058 The message needs to be quoted, and the @code{AC_MSG_ERROR} invocation
17059 too!
17061 @example
17062 AC_INIT([Example], [1.0], [bug-example@@example.org])
17063 AC_CHECK_HEADERS([foo.h], [],
17064   [AC_MSG_ERROR([cannot find foo.h, bailing out])])
17065 AC_OUTPUT
17066 @end example
17068 Many many (and many more) Autoconf macros were lacking proper quotation,
17069 including no less than@dots{} @code{AC_DEFUN} itself!
17071 @example
17072 $ @kbd{cat configure.in}
17073 AC_DEFUN([AC_PROG_INSTALL],
17074 [# My own much better version
17076 AC_INIT
17077 AC_PROG_INSTALL
17078 AC_OUTPUT
17079 $ @kbd{autoconf-2.13}
17080 autoconf: Undefined macros:
17081 ***BUG in Autoconf--please report*** AC_FD_MSG
17082 ***BUG in Autoconf--please report*** AC_EPI
17083 configure.in:1:AC_DEFUN([AC_PROG_INSTALL],
17084 configure.in:5:AC_PROG_INSTALL
17085 $ @kbd{autoconf-2.50}
17087 @end example
17090 @node New Macros
17091 @subsection New Macros
17093 @cindex undefined macro
17094 @cindex @code{_m4_divert_diversion}
17096 While Autoconf was relatively dormant in the late 1990s, Automake
17097 provided Autoconf-like macros for a while.  Starting with Autoconf 2.50
17098 in 2001, Autoconf provided
17099 versions of these macros, integrated in the @code{AC_} namespace,
17100 instead of @code{AM_}.  But in order to ease the upgrading via
17101 @command{autoupdate}, bindings to such @code{AM_} macros are provided.
17103 Unfortunately older versions of Automake (e.g., Automake 1.4)
17104 did not quote the names of these macros.
17105 Therefore, when @command{m4} finds something like
17106 @samp{AC_DEFUN(AM_TYPE_PTRDIFF_T, @dots{})} in @file{aclocal.m4},
17107 @code{AM_TYPE_PTRDIFF_T} is
17108 expanded, replaced with its Autoconf definition.
17110 Fortunately Autoconf catches pre-@code{AC_INIT} expansions, and
17111 complains, in its own words:
17113 @example
17114 $ @kbd{cat configure.ac}
17115 AC_INIT([Example], [1.0], [bug-example@@example.org])
17116 AM_TYPE_PTRDIFF_T
17117 $ @kbd{aclocal-1.4}
17118 $ @kbd{autoconf}
17119 aclocal.m4:17: error: m4_defn: undefined macro: _m4_divert_diversion
17120 aclocal.m4:17: the top level
17121 autom4te: m4 failed with exit status: 1
17123 @end example
17125 Modern versions of Automake no longer define most of these
17126 macros, and properly quote the names of the remaining macros.
17127 If you must use an old Automake, do not depend upon macros from Automake
17128 as it is simply not its job
17129 to provide macros (but the one it requires itself):
17131 @example
17132 $ @kbd{cat configure.ac}
17133 AC_INIT([Example], [1.0], [bug-example@@example.org])
17134 AM_TYPE_PTRDIFF_T
17135 $ @kbd{rm aclocal.m4}
17136 $ @kbd{autoupdate}
17137 autoupdate: `configure.ac' is updated
17138 $ @kbd{cat configure.ac}
17139 AC_INIT([Example], [1.0], [bug-example@@example.org])
17140 AC_CHECK_TYPES([ptrdiff_t])
17141 $ @kbd{aclocal-1.4}
17142 $ @kbd{autoconf}
17144 @end example
17147 @node Hosts and Cross-Compilation
17148 @subsection Hosts and Cross-Compilation
17149 @cindex Cross compilation
17151 Based on the experience of compiler writers, and after long public
17152 debates, many aspects of the cross-compilation chain have changed:
17154 @itemize @minus
17155 @item
17156 the relationship between the build, host, and target architecture types,
17158 @item
17159 the command line interface for specifying them to @command{configure},
17161 @item
17162 the variables defined in @command{configure},
17164 @item
17165 the enabling of cross-compilation mode.
17166 @end itemize
17168 @sp 1
17170 The relationship between build, host, and target have been cleaned up:
17171 the chain of default is now simply: target defaults to host, host to
17172 build, and build to the result of @command{config.guess}.  Nevertheless,
17173 in order to ease the transition from 2.13 to 2.50, the following
17174 transition scheme is implemented.  @emph{Do not rely on it}, as it will
17175 be completely disabled in a couple of releases (we cannot keep it, as it
17176 proves to cause more problems than it cures).
17178 They all default to the result of running @command{config.guess}, unless
17179 you specify either @option{--build} or @option{--host}.  In this case,
17180 the default becomes the system type you specified.  If you specify both,
17181 and they're different, @command{configure} enters cross compilation
17182 mode, so it doesn't run any tests that require execution.
17184 Hint: if you mean to override the result of @command{config.guess},
17185 prefer @option{--build} over @option{--host}.  In the future,
17186 @option{--host} will not override the name of the build system type.
17187 Whenever you specify @option{--host}, be sure to specify @option{--build}
17188 too.
17190 @sp 1
17192 For backward compatibility, @command{configure} accepts a system
17193 type as an option by itself.  Such an option overrides the
17194 defaults for build, host, and target system types.  The following
17195 configure statement configures a cross toolchain that runs on
17196 Net@acronym{BSD}/alpha but generates code for @acronym{GNU} Hurd/sparc,
17197 which is also the build platform.
17199 @example
17200 ./configure --host=alpha-netbsd sparc-gnu
17201 @end example
17203 @sp 1
17205 In Autoconf 2.13 and before, the variables @code{build}, @code{host},
17206 and @code{target} had a different semantics before and after the
17207 invocation of @code{AC_CANONICAL_BUILD} etc.  Now, the argument of
17208 @option{--build} is strictly copied into @code{build_alias}, and is left
17209 empty otherwise.  After the @code{AC_CANONICAL_BUILD}, @code{build} is
17210 set to the canonicalized build type.  To ease the transition, before,
17211 its contents is the same as that of @code{build_alias}.  Do @emph{not}
17212 rely on this broken feature.
17214 For consistency with the backward compatibility scheme exposed above,
17215 when @option{--host} is specified but @option{--build} isn't, the build
17216 system is assumed to be the same as @option{--host}, and
17217 @samp{build_alias} is set to that value.  Eventually, this
17218 historically incorrect behavior will go away.
17220 @sp 1
17222 The former scheme to enable cross-compilation proved to cause more harm
17223 than good, in particular, it used to be triggered too easily, leaving
17224 regular end users puzzled in front of cryptic error messages.
17225 @command{configure} could even enter cross-compilation mode only
17226 because the compiler was not functional.  This is mainly because
17227 @command{configure} used to try to detect cross-compilation, instead of
17228 waiting for an explicit flag from the user.
17230 Now, @command{configure} enters cross-compilation mode if and only if
17231 @option{--host} is passed.
17233 That's the short documentation.  To ease the transition between 2.13 and
17234 its successors, a more complicated scheme is implemented.  @emph{Do not
17235 rely on the following}, as it will be removed in the near future.
17237 If you specify @option{--host}, but not @option{--build}, when
17238 @command{configure} performs the first compiler test it tries to run
17239 an executable produced by the compiler.  If the execution fails, it
17240 enters cross-compilation mode.  This is fragile.  Moreover, by the time
17241 the compiler test is performed, it may be too late to modify the
17242 build-system type: other tests may have already been performed.
17243 Therefore, whenever you specify @option{--host}, be sure to specify
17244 @option{--build} too.
17246 @example
17247 ./configure --build=i686-pc-linux-gnu --host=m68k-coff
17248 @end example
17250 @noindent
17251 enters cross-compilation mode.  The former interface, which
17252 consisted in setting the compiler to a cross-compiler without informing
17253 @command{configure} is obsolete.  For instance, @command{configure}
17254 fails if it can't run the code generated by the specified compiler if you
17255 configure as follows:
17257 @example
17258 ./configure CC=m68k-coff-gcc
17259 @end example
17262 @node AC_LIBOBJ vs LIBOBJS
17263 @subsection @code{AC_LIBOBJ} vs.@: @code{LIBOBJS}
17265 Up to Autoconf 2.13, the replacement of functions was triggered via the
17266 variable @code{LIBOBJS}.  Since Autoconf 2.50, the macro
17267 @code{AC_LIBOBJ} should be used instead (@pxref{Generic Functions}).
17268 Starting at Autoconf 2.53, the use of @code{LIBOBJS} is an error.
17270 This change is mandated by the unification of the @acronym{GNU} Build System
17271 components.  In particular, the various fragile techniques used to parse
17272 a @file{configure.ac} are all replaced with the use of traces.  As a
17273 consequence, any action must be traceable, which obsoletes critical
17274 variable assignments.  Fortunately, @code{LIBOBJS} was the only problem,
17275 and it can even be handled gracefully (read, ``without your having to
17276 change something'').
17278 There were two typical uses of @code{LIBOBJS}: asking for a replacement
17279 function, and adjusting @code{LIBOBJS} for Automake and/or Libtool.
17281 @sp 1
17283 As for function replacement, the fix is immediate: use
17284 @code{AC_LIBOBJ}.  For instance:
17286 @example
17287 LIBOBJS="$LIBOBJS fnmatch.o"
17288 LIBOBJS="$LIBOBJS malloc.$ac_objext"
17289 @end example
17291 @noindent
17292 should be replaced with:
17294 @example
17295 AC_LIBOBJ([fnmatch])
17296 AC_LIBOBJ([malloc])
17297 @end example
17299 @sp 1
17301 @ovindex LIBOBJDIR
17302 When used with Automake 1.10 or newer, a suitable value for
17303 @code{LIBOBJDIR} is set so that the @code{LIBOBJS} and @code{LTLIBOBJS}
17304 can be referenced from any @file{Makefile.am}.  Even without Automake,
17305 arranging for @code{LIBOBJDIR} to be set correctly enables
17306 referencing @code{LIBOBJS} and @code{LTLIBOBJS} in another directory.
17307 The @code{LIBOJBDIR} feature is experimental.
17310 @node AC_FOO_IFELSE vs AC_TRY_FOO
17311 @subsection @code{AC_FOO_IFELSE} vs.@: @code{AC_TRY_FOO}
17313 Since Autoconf 2.50, internal codes uses @code{AC_PREPROC_IFELSE},
17314 @code{AC_COMPILE_IFELSE}, @code{AC_LINK_IFELSE}, and
17315 @code{AC_RUN_IFELSE} on one hand and @code{AC_LANG_SOURCES},
17316 and @code{AC_LANG_PROGRAM} on the other hand instead of the deprecated
17317 @code{AC_TRY_CPP}, @code{AC_TRY_COMPILE}, @code{AC_TRY_LINK}, and
17318 @code{AC_TRY_RUN}.  The motivations where:
17319 @itemize @minus
17320 @item
17321 a more consistent interface: @code{AC_TRY_COMPILE} etc.@: were double
17322 quoting their arguments;
17324 @item
17325 the combinatoric explosion is solved by decomposing on the one hand the
17326 generation of sources, and on the other hand executing the program;
17328 @item
17329 this scheme helps supporting more languages than plain C and C++.
17330 @end itemize
17332 In addition to the change of syntax, the philosophy has changed too:
17333 while emphasis was put on speed at the expense of accuracy, today's
17334 Autoconf promotes accuracy of the testing framework at, ahem@dots{}, the
17335 expense of speed.
17338 As a perfect example of what is @emph{not} to be done, here is how to
17339 find out whether a header file contains a particular declaration, such
17340 as a typedef, a structure, a structure member, or a function.  Use
17341 @code{AC_EGREP_HEADER} instead of running @code{grep} directly on the
17342 header file; on some systems the symbol might be defined in another
17343 header file that the file you are checking includes.
17345 As a (bad) example, here is how you should not check for C preprocessor
17346 symbols, either defined by header files or predefined by the C
17347 preprocessor: using @code{AC_EGREP_CPP}:
17349 @example
17350 @group
17351 AC_EGREP_CPP(yes,
17352 [#ifdef _AIX
17353   yes
17354 #endif
17355 ], is_aix=yes, is_aix=no)
17356 @end group
17357 @end example
17359 The above example, properly written would (i) use
17360 @code{AC_LANG_PROGRAM}, and (ii) run the compiler:
17362 @example
17363 @group
17364 AC_COMPILE_IFELSE([AC_LANG_PROGRAM(
17365 [[#if !defined _AIX
17366  error: This isn't AIX!
17367 #endif
17368 ]])],
17369                    [is_aix=yes],
17370                    [is_aix=no])
17371 @end group
17372 @end example
17375 @c ============================= Generating Test Suites with Autotest
17377 @node Using Autotest
17378 @chapter Generating Test Suites with Autotest
17380 @cindex Autotest
17382 @display
17383 @strong{N.B.: This section describes an experimental feature which will
17384 be part of Autoconf in a forthcoming release.  Although we believe
17385 Autotest is stabilizing, this documentation describes an interface which
17386 might change in the future: do not depend upon Autotest without
17387 subscribing to the Autoconf mailing lists.}
17388 @end display
17390 It is paradoxical that portable projects depend on nonportable tools
17391 to run their test suite.  Autoconf by itself is the paragon of this
17392 problem: although it aims at perfectly portability, up to 2.13 its
17393 test suite was using Deja@acronym{GNU}, a rich and complex testing
17394 framework, but which is far from being standard on Posix systems.
17395 Worse yet, it was likely to be missing on the most fragile platforms,
17396 the very platforms that are most likely to torture Autoconf and
17397 exhibit deficiencies.
17399 To circumvent this problem, many package maintainers have developed their
17400 own testing framework, based on simple shell scripts whose sole outputs
17401 are exit status values describing whether the test succeeded.  Most of
17402 these tests share common patterns, and this can result in lots of
17403 duplicated code and tedious maintenance.
17405 Following exactly the same reasoning that yielded to the inception of
17406 Autoconf, Autotest provides a test suite generation framework, based on
17407 M4 macros building a portable shell script.  The suite itself is
17408 equipped with automatic logging and tracing facilities which greatly
17409 diminish the interaction with bug reporters, and simple timing reports.
17411 Autoconf itself has been using Autotest for years, and we do attest that
17412 it has considerably improved the strength of the test suite and the
17413 quality of bug reports.  Other projects are known to use some generation
17414 of Autotest, such as Bison, Free Recode, Free Wdiff, @acronym{GNU} Tar, each of
17415 them with different needs, and this usage has validated Autotest as a general
17416 testing framework.
17418 Nonetheless, compared to Deja@acronym{GNU}, Autotest is inadequate for
17419 interactive tool testing, which is probably its main limitation.
17421 @menu
17422 * Using an Autotest Test Suite::  Autotest and the user
17423 * Writing testsuite.at::        Autotest macros
17424 * testsuite Invocation::        Running @command{testsuite} scripts
17425 * Making testsuite Scripts::    Using autom4te to create @command{testsuite}
17426 @end menu
17428 @node Using an Autotest Test Suite
17429 @section Using an Autotest Test Suite
17431 @menu
17432 * testsuite Scripts::           The concepts of Autotest
17433 * Autotest Logs::               Their contents
17434 @end menu
17436 @node testsuite Scripts
17437 @subsection @command{testsuite} Scripts
17439 @cindex @command{testsuite}
17441 Generating testing or validation suites using Autotest is rather easy.
17442 The whole validation suite is held in a file to be processed through
17443 @command{autom4te}, itself using @acronym{GNU} M4 under the scene, to
17444 produce a stand-alone Bourne shell script which then gets distributed.
17445 Neither @command{autom4te} nor @acronym{GNU} M4 are needed at
17446 the installer's end.
17448 @cindex test group
17449 Each test of the validation suite should be part of some test group.  A
17450 @dfn{test group} is a sequence of interwoven tests that ought to be
17451 executed together, usually because one test in the group creates data
17452 files than a later test in the same group needs to read.  Complex test
17453 groups make later debugging more tedious.  It is much better to
17454 keep only a few tests per test group.  Ideally there is only one test
17455 per test group.
17457 For all but the simplest packages, some file such as @file{testsuite.at}
17458 does not fully hold all test sources, as these are often easier to
17459 maintain in separate files.  Each of these separate files holds a single
17460 test group, or a sequence of test groups all addressing some common
17461 functionality in the package.  In such cases, @file{testsuite.at}
17462 merely initializes the validation suite, and sometimes does elementary
17463 health checking, before listing include statements for all other test
17464 files.  The special file @file{package.m4}, containing the
17465 identification of the package, is automatically included if found.
17467 A convenient alternative consists in moving all the global issues
17468 (local Autotest macros, elementary health checking, and @code{AT_INIT}
17469 invocation) into the file @code{local.at}, and making
17470 @file{testsuite.at} be a simple list of @code{m4_include} of sub test
17471 suites.  In such case, generating the whole test suite or pieces of it
17472 is only a matter of choosing the @command{autom4te} command line
17473 arguments.
17475 The validation scripts that Autotest produces are by convention called
17476 @command{testsuite}.  When run, @command{testsuite} executes each test
17477 group in turn, producing only one summary line per test to say if that
17478 particular test succeeded or failed.  At end of all tests, summarizing
17479 counters get printed.  One debugging directory is left for each test
17480 group which failed, if any: such directories are named
17481 @file{testsuite.dir/@var{nn}}, where @var{nn} is the sequence number of
17482 the test group, and they include:
17484 @itemize @bullet
17485 @item a debugging script named @file{run} which reruns the test in
17486 @dfn{debug mode} (@pxref{testsuite Invocation}).  The automatic generation
17487 of debugging scripts has the purpose of easing the chase for bugs.
17489 @item all the files created with @code{AT_DATA}
17491 @item a log of the run, named @file{testsuite.log}
17492 @end itemize
17494 In the ideal situation, none of the tests fail, and consequently no
17495 debugging directory is left behind for validation.
17497 It often happens in practice that individual tests in the validation
17498 suite need to get information coming out of the configuration process.
17499 Some of this information, common for all validation suites, is provided
17500 through the file @file{atconfig}, automatically created by
17501 @code{AC_CONFIG_TESTDIR}.  For configuration informations which your
17502 testing environment specifically needs, you might prepare an optional
17503 file named @file{atlocal.in}, instantiated by @code{AC_CONFIG_FILES}.
17504 The configuration process produces @file{atconfig} and @file{atlocal}
17505 out of these two input files, and these two produced files are
17506 automatically read by the @file{testsuite} script.
17508 Here is a diagram showing the relationship between files.
17510 @noindent
17511 Files used in preparing a software package for distribution:
17513 @example
17514                 [package.m4] -->.
17515                                  \
17516 subfile-1.at ->.  [local.at] ---->+
17517     ...         \                  \
17518 subfile-i.at ---->-- testsuite.at -->-- autom4te* -->testsuite
17519     ...         /
17520 subfile-n.at ->'
17521 @end example
17523 @noindent
17524 Files used in configuring a software package:
17526 @example
17527                                      .--> atconfig
17528                                     /
17529 [atlocal.in] -->  config.status* --<
17530                                     \
17531                                      `--> [atlocal]
17532 @end example
17534 @noindent
17535 Files created during the test suite execution:
17537 @example
17538 atconfig -->.                    .--> testsuite.log
17539              \                  /
17540               >-- testsuite* --<
17541              /                  \
17542 [atlocal] ->'                    `--> [testsuite.dir]
17543 @end example
17546 @node Autotest Logs
17547 @subsection Autotest Logs
17549 When run, the test suite creates a log file named after itself, e.g., a
17550 test suite named @command{testsuite} creates @file{testsuite.log}.  It
17551 contains a lot of information, usually more than maintainers actually
17552 need, but therefore most of the time it contains all that is needed:
17554 @table @asis
17555 @item command line arguments
17556 @c akim s/to consist in/to consist of/
17557 A bad but unfortunately widespread habit consists of
17558 setting environment variables before the command, such as in
17559 @samp{CC=my-home-grown-cc ./testsuite}.  The test suite does not
17560 know this change, hence (i) it cannot report it to you, and (ii)
17561 it cannot preserve the value of @code{CC} for subsequent runs.
17562 Autoconf faced exactly the same problem, and solved it by asking
17563 users to pass the variable definitions as command line arguments.
17564 Autotest requires this rule, too, but has no means to enforce it; the log
17565 then contains a trace of the variables that were changed by the user.
17567 @item @file{ChangeLog} excerpts
17568 The topmost lines of all the @file{ChangeLog} files found in the source
17569 hierarchy.  This is especially useful when bugs are reported against
17570 development versions of the package, since the version string does not
17571 provide sufficient information to know the exact state of the sources
17572 the user compiled.  Of course, this relies on the use of a
17573 @file{ChangeLog}.
17575 @item build machine
17576 Running a test suite in a cross-compile environment is not an easy task,
17577 since it would mean having the test suite run on a machine @var{build},
17578 while running programs on a machine @var{host}.  It is much simpler to
17579 run both the test suite and the programs on @var{host}, but then, from
17580 the point of view of the test suite, there remains a single environment,
17581 @var{host} = @var{build}.  The log contains relevant information on the
17582 state of the build machine, including some important environment
17583 variables.
17584 @c FIXME: How about having an M4sh macro to say `hey, log the value
17585 @c of `@dots{}'?  This would help both Autoconf and Autotest.
17587 @item tested programs
17588 The absolute file name and answers to @option{--version} of the tested
17589 programs (see @ref{Writing testsuite.at}, @code{AT_TESTED}).
17591 @item configuration log
17592 The contents of @file{config.log}, as created by @command{configure},
17593 are appended.  It contains the configuration flags and a detailed report
17594 on the configuration itself.
17595 @end table
17598 @node Writing testsuite.at
17599 @section Writing @file{testsuite.at}
17601 The @file{testsuite.at} is a Bourne shell script making use of special
17602 Autotest M4 macros.  It often contains a call to @code{AT_INIT} near
17603 its beginning followed by one call to @code{m4_include} per source file
17604 for tests.  Each such included file, or the remainder of
17605 @file{testsuite.at} if include files are not used, contain a sequence of
17606 test groups.  Each test group begins with a call to @code{AT_SETUP},
17607 then an arbitrary number of shell commands or calls to @code{AT_CHECK},
17608 and then completes with a call to @code{AT_CLEANUP}.
17610 @defmac AT_INIT (@ovar{name})
17611 @atindex{INIT}
17612 @c FIXME: Not clear, plus duplication of the information.
17613 Initialize Autotest.  Giving a @var{name} to the test suite is
17614 encouraged if your package includes several test suites.  In any case,
17615 the test suite always displays the package name and version.  It also
17616 inherits the package bug report address.
17617 @end defmac
17619 @defmac AT_COPYRIGHT (@var{copyright-notice})
17620 @atindex{COPYRIGHT}
17621 @cindex Copyright Notice
17622 State that, in addition to the Free Software Foundation's copyright on
17623 the Autotest macros, parts of your test suite are covered by
17624 @var{copyright-notice}.
17626 The @var{copyright-notice} shows up in both the head of
17627 @command{testsuite} and in @samp{testsuite --version}.
17628 @end defmac
17630 @defmac AT_TESTED (@var{executables})
17631 @atindex{TESTED}
17632 Log the file name and answer to @option{--version} of each program in
17633 space-separated list @var{executables}.  Several invocations register
17634 new executables, in other words, don't fear registering one program
17635 several times.
17636 @end defmac
17638 Autotest test suites rely on @env{PATH} to find the tested program.
17639 This avoids the need to generate absolute names of the various tools, and
17640 makes it possible to test installed programs.  Therefore, knowing which
17641 programs are being exercised is crucial to understanding problems in
17642 the test suite itself, or its occasional misuses.  It is a good idea to
17643 also subscribe foreign programs you depend upon, to avoid incompatible
17644 diagnostics.
17646 @sp 1
17648 @defmac AT_SETUP (@var{test-group-name})
17649 @atindex{SETUP}
17650 This macro starts a group of related tests, all to be executed in the
17651 same subshell.  It accepts a single argument, which holds a few words
17652 (no more than about 30 or 40 characters) quickly describing the purpose
17653 of the test group being started.
17654 @end defmac
17656 @defmac AT_KEYWORDS (@var{keywords})
17657 @atindex{KEYWORDS}
17658 Associate the space-separated list of @var{keywords} to the enclosing
17659 test group.  This makes it possible to run ``slices'' of the test suite.
17660 For instance, if some of your test groups exercise some @samp{foo}
17661 feature, then using @samp{AT_KEYWORDS(foo)} lets you run
17662 @samp{./testsuite -k foo} to run exclusively these test groups.  The
17663 @var{title} of the test group is automatically recorded to
17664 @code{AT_KEYWORDS}.
17666 Several invocations within a test group accumulate new keywords.  In
17667 other words, don't fear registering the same keyword several times in a
17668 test group.
17669 @end defmac
17671 @defmac AT_CAPTURE_FILE (@var{file})
17672 @atindex{CAPTURE_FILE}
17673 If the current test group fails, log the contents of @var{file}.
17674 Several identical calls within one test group have no additional effect.
17675 @end defmac
17677 @defmac AT_XFAIL_IF (@var{shell-condition})
17678 @atindex{XFAIL_IF}
17679 Determine whether the test is expected to fail because it is a known
17680 bug (for unsupported features, you should skip the test).
17681 @var{shell-condition} is a shell expression such as a @code{test}
17682 command; you can instantiate this macro many times from within the
17683 same test group, and one of the conditions is enough to turn
17684 the test into an expected failure.
17685 @end defmac
17687 @defmac AT_CLEANUP
17688 @atindex{CLEANUP}
17689 End the current test group.
17690 @end defmac
17692 @sp 1
17694 @defmac AT_DATA (@var{file}, @var{contents})
17695 @atindex{DATA}
17696 Initialize an input data @var{file} with given @var{contents}.  Of
17697 course, the @var{contents} have to be properly quoted between square
17698 brackets to protect against included commas or spurious M4
17699 expansion.  The contents ought to end with an end of line.
17700 @end defmac
17702 @defmac AT_CHECK (@var{commands}, @dvar{status, 0}, @dvar{stdout, }, @dvar{stderr, }, @ovar{run-if-fail}, @ovar{run-if-pass})
17703 @atindex{CHECK}
17704 Execute a test by performing given shell @var{commands}.  These commands
17705 should normally exit with @var{status}, while producing expected
17706 @var{stdout} and @var{stderr} contents.  If @var{commands} exit with
17707 status 77, then the whole test group is skipped.  Otherwise, if this test
17708 fails, run shell commands @var{run-if-fail} or, if this test passes, run shell
17709 commands @var{run-if-pass}.
17711 The @var{commands} @emph{must not} redirect the standard output, nor the
17712 standard error.
17714 If @var{status}, or @var{stdout}, or @var{stderr} is @samp{ignore}, then
17715 the corresponding value is not checked.
17717 The special value @samp{expout} for @var{stdout} means the expected
17718 output of the @var{commands} is the content of the file @file{expout}.
17719 If @var{stdout} is @samp{stdout}, then the standard output of the
17720 @var{commands} is available for further tests in the file @file{stdout}.
17721 Similarly for @var{stderr} with @samp{expout} and @samp{stderr}.
17722 @end defmac
17725 @node testsuite Invocation
17726 @section Running @command{testsuite} Scripts
17727 @cindex @command{testsuite}
17729 Autotest test suites support the following arguments:
17731 @table @option
17732 @item --help
17733 @itemx -h
17734 Display the list of options and exit successfully.
17736 @item --version
17737 @itemx -V
17738 Display the version of the test suite and exit successfully.
17740 @item --clean
17741 @itemx -c
17742 Remove all the files the test suite might have created and exit.  Meant
17743 for @code{clean} Make targets.
17745 @item --list
17746 @itemx -l
17747 List all the tests (or only the selection), including their possible
17748 keywords.
17749 @end table
17751 @sp 1
17753 By default all tests are performed (or described with
17754 @option{--list}) in the default environment first silently, then
17755 verbosely, but the environment, set of tests, and verbosity level can be
17756 tuned:
17758 @table @samp
17759 @item @var{variable}=@var{value}
17760 Set the environment @var{variable} to @var{value}.  Use this rather
17761 than @samp{FOO=foo ./testsuite} as debugging scripts would then run in a
17762 different environment.
17764 @cindex @code{AUTOTEST_PATH}
17765 The variable @code{AUTOTEST_PATH} specifies the testing path to prepend
17766 to @env{PATH}.  Relative directory names (not starting with
17767 @samp{/}) are considered to be relative to the top level of the
17768 package being built.  All directories are made absolute, first
17769 starting from the top level @emph{build} tree, then from the
17770 @emph{source} tree.  For instance @samp{./testsuite
17771 AUTOTEST_PATH=tests:bin} for a @file{/src/foo-1.0} source package built
17772 in @file{/tmp/foo} results in @samp{/tmp/foo/tests:/tmp/foo/bin} and
17773 then @samp{/src/foo-1.0/tests:/src/foo-1.0/bin} being prepended to
17774 @env{PATH}.
17776 @item @var{number}
17777 @itemx @var{number}-@var{number}
17778 @itemx @var{number}-
17779 @itemx -@var{number}
17780 Add the corresponding test groups, with obvious semantics, to the
17781 selection.
17783 @item --keywords=@var{keywords}
17784 @itemx -k @var{keywords}
17785 Add to the selection the test groups with title or keywords (arguments
17786 to @code{AT_SETUP} or @code{AT_KEYWORDS}) that match @emph{all} keywords
17787 of the comma separated list @var{keywords}, case-insensitively.  Use
17788 @samp{!} immediately before the keyword to invert the selection for this
17789 keyword.  By default, the keywords match whole words; enclose them in
17790 @samp{.*} to also match parts of words.
17792 For example, running
17794 @example
17795 @kbd{./testsuite -k 'autoupdate,.*FUNC.*'}
17796 @end example
17798 @noindent
17799 selects all tests tagged @samp{autoupdate} @emph{and} with tags
17800 containing @samp{FUNC} (as in @samp{AC_CHECK_FUNC}, @samp{AC_FUNC_FNMATCH},
17801 etc.), while
17803 @example
17804 @kbd{./testsuite -k '!autoupdate' -k '.*FUNC.*'}
17805 @end example
17807 @noindent
17808 selects all tests not tagged @samp{autoupdate} @emph{or} with tags
17809 containing @samp{FUNC}.
17811 @item --errexit
17812 @itemx -e
17813 If any test fails, immediately abort testing.  It implies
17814 @option{--debug}: post test group clean up, and top-level logging
17815 are inhibited.  This option is meant for the full test
17816 suite, it is not really useful for generated debugging scripts.
17818 @item --verbose
17819 @itemx -v
17820 Force more verbosity in the detailed output of what is being done.  This
17821 is the default for debugging scripts.
17823 @item --debug
17824 @itemx -d
17825 Do not remove the files after a test group was performed ---but they are
17826 still removed @emph{before}, therefore using this option is sane when
17827 running several test groups.  Create debugging scripts.  Do not
17828 overwrite the top-level
17829 log (in order to preserve supposedly existing full log file).  This is
17830 the default for debugging scripts, but it can also be useful to debug
17831 the testsuite itself.
17833 @item --trace
17834 @itemx -x
17835 Trigger shell tracing of the test groups.
17836 @end table
17839 @node Making testsuite Scripts
17840 @section Making @command{testsuite} Scripts
17842 For putting Autotest into movement, you need some configuration and
17843 makefile machinery.  We recommend, at least if your package uses deep or
17844 shallow hierarchies, that you use @file{tests/} as the name of the
17845 directory holding all your tests and their makefile.  Here is a
17846 check list of things to do.
17848 @itemize @minus
17850 @item
17851 @cindex @file{package.m4}
17852 Make sure to create the file @file{package.m4}, which defines the
17853 identity of the package.  It must define @code{AT_PACKAGE_STRING}, the
17854 full signature of the package, and @code{AT_PACKAGE_BUGREPORT}, the
17855 address to which bug reports should be sent.  For sake of completeness,
17856 we suggest that you also define @code{AT_PACKAGE_NAME},
17857 @code{AT_PACKAGE_TARNAME}, and @code{AT_PACKAGE_VERSION}.
17858 @xref{Initializing configure}, for a description of these variables.  We
17859 suggest the following makefile excerpt:
17861 @smallexample
17862 $(srcdir)/package.m4: $(top_srcdir)/configure.ac
17863         @{                                      \
17864           echo '# Signature of the current package.'; \
17865           echo 'm4_define([AT_PACKAGE_NAME],      [@@PACKAGE_NAME@@])'; \
17866           echo 'm4_define([AT_PACKAGE_TARNAME],   [@@PACKAGE_TARNAME@@])'; \
17867           echo 'm4_define([AT_PACKAGE_VERSION],   [@@PACKAGE_VERSION@@])'; \
17868           echo 'm4_define([AT_PACKAGE_STRING],    [@@PACKAGE_STRING@@])'; \
17869           echo 'm4_define([AT_PACKAGE_BUGREPORT], [@@PACKAGE_BUGREPORT@@])'; \
17870         @} >$(srcdir)/package.m4
17871 @end smallexample
17873 @noindent
17874 Be sure to distribute @file{package.m4} and to put it into the source
17875 hierarchy: the test suite ought to be shipped!
17877 @item
17878 Invoke @code{AC_CONFIG_TESTDIR}.
17880 @defmac AC_CONFIG_TESTDIR (@var{directory}, @dvar{test-path, directory})
17881 @acindex{CONFIG_TESTDIR}
17882 An Autotest test suite is to be configured in @var{directory}.  This
17883 macro requires the instantiation of @file{@var{directory}/atconfig} from
17884 @file{@var{directory}/atconfig.in}, and sets the default
17885 @code{AUTOTEST_PATH} to @var{test-path} (@pxref{testsuite Invocation}).
17886 @end defmac
17888 @item
17889 Still within @file{configure.ac}, as appropriate, ensure that some
17890 @code{AC_CONFIG_FILES} command includes substitution for
17891 @file{tests/atlocal}.
17893 @item
17894 The @file{tests/Makefile.in} should be modified so the validation in
17895 your package is triggered by @samp{make check}.  An example is provided
17896 below.
17897 @end itemize
17899 With Automake, here is a minimal example about how to link @samp{make
17900 check} with a validation suite.
17902 @example
17903 EXTRA_DIST = testsuite.at $(TESTSUITE) atlocal.in
17904 TESTSUITE = $(srcdir)/testsuite
17906 check-local: atconfig atlocal $(TESTSUITE)
17907         $(SHELL) $(TESTSUITE) $(TESTSUITEFLAGS)
17909 installcheck-local: atconfig atlocal $(TESTSUITE)
17910         $(SHELL) $(TESTSUITE) AUTOTEST_PATH="$(bindir)" \
17911           $(TESTSUITEFLAGS)
17913 AUTOTEST = $(AUTOM4TE) --language=autotest
17914 $(TESTSUITE): $(srcdir)/testsuite.at
17915         $(AUTOTEST) -I $(srcdir) -o $@@.tmp $@@.at
17916         mv $@@.tmp $@@
17917 @end example
17919 You might want to list explicitly the dependencies, i.e., the list of
17920 the files @file{testsuite.at} includes.
17922 With strict Autoconf, you might need to add lines inspired from the
17923 following:
17925 @example
17926 subdir = tests
17928 atconfig: $(top_builddir)/config.status
17929         cd $(top_builddir) && \
17930            $(SHELL) ./config.status $(subdir)/$@@
17932 atlocal: $(srcdir)/atlocal.in $(top_builddir)/config.status
17933         cd $(top_builddir) && \
17934            $(SHELL) ./config.status $(subdir)/$@@
17935 @end example
17937 @noindent
17938 and manage to have @file{atconfig.in} and @code{$(EXTRA_DIST)}
17939 distributed.
17941 With all this in place, and if you have not initialized @samp{TESTSUITEFLAGS}
17942 within your makefile, you can fine-tune test suite execution with this variable,
17943 for example:
17945 @example
17946 make check TESTSUITEFLAGS='-v -d -x 75 -k AC_PROG_CC CFLAGS=-g'
17947 @end example
17951 @c =============================== Frequent Autoconf Questions, with answers
17953 @node FAQ
17954 @chapter Frequent Autoconf Questions, with answers
17956 Several questions about Autoconf come up occasionally.  Here some of them
17957 are addressed.
17959 @menu
17960 * Distributing::                Distributing @command{configure} scripts
17961 * Why GNU m4::                  Why not use the standard M4?
17962 * Bootstrapping::               Autoconf and @acronym{GNU} M4 require each other?
17963 * Why Not Imake::               Why @acronym{GNU} uses @command{configure} instead of Imake
17964 * Defining Directories::        Passing @code{datadir} to program
17965 * autom4te.cache::              What is it?  Can I remove it?
17966 * Present But Cannot Be Compiled::  Compiler and Preprocessor Disagree
17967 @end menu
17969 @node Distributing
17970 @section Distributing @command{configure} Scripts
17971 @cindex License
17973 @display
17974 What are the restrictions on distributing @command{configure}
17975 scripts that Autoconf generates?  How does that affect my
17976 programs that use them?
17977 @end display
17979 There are no restrictions on how the configuration scripts that Autoconf
17980 produces may be distributed or used.  In Autoconf version 1, they were
17981 covered by the @acronym{GNU} General Public License.  We still encourage
17982 software authors to distribute their work under terms like those of the
17983 @acronym{GPL}, but doing so is not required to use Autoconf.
17985 Of the other files that might be used with @command{configure},
17986 @file{config.h.in} is under whatever copyright you use for your
17987 @file{configure.ac}.  @file{config.sub} and @file{config.guess} have an
17988 exception to the @acronym{GPL} when they are used with an Autoconf-generated
17989 @command{configure} script, which permits you to distribute them under the
17990 same terms as the rest of your package.  @file{install-sh} is from the X
17991 Consortium and is not copyrighted.
17993 @node Why GNU m4
17994 @section Why Require @acronym{GNU} M4?
17996 @display
17997 Why does Autoconf require @acronym{GNU} M4?
17998 @end display
18000 Many M4 implementations have hard-coded limitations on the size and
18001 number of macros that Autoconf exceeds.  They also lack several
18002 builtin macros that it would be difficult to get along without in a
18003 sophisticated application like Autoconf, including:
18005 @example
18006 m4_builtin
18007 m4_indir
18008 m4_bpatsubst
18009 __file__
18010 __line__
18011 @end example
18013 Autoconf requires version 1.4.4 or later of @acronym{GNU} M4.
18015 Since only software maintainers need to use Autoconf, and since @acronym{GNU}
18016 M4 is simple to configure and install, it seems reasonable to require
18017 @acronym{GNU} M4 to be installed also.  Many maintainers of @acronym{GNU} and
18018 other free software already have most of the @acronym{GNU} utilities
18019 installed, since they prefer them.
18021 @node Bootstrapping
18022 @section How Can I Bootstrap?
18023 @cindex Bootstrap
18025 @display
18026 If Autoconf requires @acronym{GNU} M4 and @acronym{GNU} M4 has an Autoconf
18027 @command{configure} script, how do I bootstrap?  It seems like a chicken
18028 and egg problem!
18029 @end display
18031 This is a misunderstanding.  Although @acronym{GNU} M4 does come with a
18032 @command{configure} script produced by Autoconf, Autoconf is not required
18033 in order to run the script and install @acronym{GNU} M4.  Autoconf is only
18034 required if you want to change the M4 @command{configure} script, which few
18035 people have to do (mainly its maintainer).
18037 @node Why Not Imake
18038 @section Why Not Imake?
18039 @cindex Imake
18041 @display
18042 Why not use Imake instead of @command{configure} scripts?
18043 @end display
18045 Several people have written addressing this question, so I include
18046 adaptations of their explanations here.
18048 The following answer is based on one written by Richard Pixley:
18050 @quotation
18051 Autoconf generated scripts frequently work on machines that it has
18052 never been set up to handle before.  That is, it does a good job of
18053 inferring a configuration for a new system.  Imake cannot do this.
18055 Imake uses a common database of host specific data.  For X11, this makes
18056 sense because the distribution is made as a collection of tools, by one
18057 central authority who has control over the database.
18059 @acronym{GNU} tools are not released this way.  Each @acronym{GNU} tool has a
18060 maintainer; these maintainers are scattered across the world.  Using a
18061 common database would be a maintenance nightmare.  Autoconf may appear
18062 to be this kind of database, but in fact it is not.  Instead of listing
18063 host dependencies, it lists program requirements.
18065 If you view the @acronym{GNU} suite as a collection of native tools, then the
18066 problems are similar.  But the @acronym{GNU} development tools can be
18067 configured as cross tools in almost any host+target permutation.  All of
18068 these configurations can be installed concurrently.  They can even be
18069 configured to share host independent files across hosts.  Imake doesn't
18070 address these issues.
18072 Imake templates are a form of standardization.  The @acronym{GNU} coding
18073 standards address the same issues without necessarily imposing the same
18074 restrictions.
18075 @end quotation
18078 Here is some further explanation, written by Per Bothner:
18080 @quotation
18081 One of the advantages of Imake is that it easy to generate large
18082 makefiles using the @samp{#include} and macro mechanisms of @command{cpp}.
18083 However, @code{cpp} is not programmable: it has limited conditional
18084 facilities, and no looping.  And @code{cpp} cannot inspect its
18085 environment.
18087 All of these problems are solved by using @code{sh} instead of
18088 @code{cpp}.  The shell is fully programmable, has macro substitution,
18089 can execute (or source) other shell scripts, and can inspect its
18090 environment.
18091 @end quotation
18094 Paul Eggert elaborates more:
18096 @quotation
18097 With Autoconf, installers need not assume that Imake itself is already
18098 installed and working well.  This may not seem like much of an advantage
18099 to people who are accustomed to Imake.  But on many hosts Imake is not
18100 installed or the default installation is not working well, and requiring
18101 Imake to install a package hinders the acceptance of that package on
18102 those hosts.  For example, the Imake template and configuration files
18103 might not be installed properly on a host, or the Imake build procedure
18104 might wrongly assume that all source files are in one big directory
18105 tree, or the Imake configuration might assume one compiler whereas the
18106 package or the installer needs to use another, or there might be a
18107 version mismatch between the Imake expected by the package and the Imake
18108 supported by the host.  These problems are much rarer with Autoconf,
18109 where each package comes with its own independent configuration
18110 processor.
18112 Also, Imake often suffers from unexpected interactions between
18113 @command{make} and the installer's C preprocessor.  The fundamental problem
18114 here is that the C preprocessor was designed to preprocess C programs,
18115 not makefiles.  This is much less of a problem with Autoconf,
18116 which uses the general-purpose preprocessor M4, and where the
18117 package's author (rather than the installer) does the preprocessing in a
18118 standard way.
18119 @end quotation
18122 Finally, Mark Eichin notes:
18124 @quotation
18125 Imake isn't all that extensible, either.  In order to add new features to
18126 Imake, you need to provide your own project template, and duplicate most
18127 of the features of the existing one.  This means that for a sophisticated
18128 project, using the vendor-provided Imake templates fails to provide any
18129 leverage---since they don't cover anything that your own project needs
18130 (unless it is an X11 program).
18132 On the other side, though:
18134 The one advantage that Imake has over @command{configure}:
18135 @file{Imakefile} files tend to be much shorter (likewise, less redundant)
18136 than @file{Makefile.in} files.  There is a fix to this, however---at least
18137 for the Kerberos V5 tree, we've modified things to call in common
18138 @file{post.in} and @file{pre.in} makefile fragments for the
18139 entire tree.  This means that a lot of common things don't have to be
18140 duplicated, even though they normally are in @command{configure} setups.
18141 @end quotation
18144 @node Defining Directories
18145 @section How Do I @code{#define} Installation Directories?
18147 @display
18148 My program needs library files, installed in @code{datadir} and
18149 similar.  If I use
18151 @example
18152 AC_DEFINE_UNQUOTED([DATADIR], [$datadir],
18153   [Define to the read-only architecture-independent
18154    data directory.])
18155 @end example
18157 @noindent
18158 I get
18160 @example
18161 #define DATADIR "$@{prefix@}/share"
18162 @end example
18163 @end display
18165 As already explained, this behavior is on purpose, mandated by the
18166 @acronym{GNU} Coding Standards, see @ref{Installation Directory
18167 Variables}.  There are several means to achieve a similar goal:
18169 @itemize @minus
18170 @item
18171 Do not use @code{AC_DEFINE} but use your makefile to pass the
18172 actual value of @code{datadir} via compilation flags.
18173 @xref{Installation Directory Variables}, for the details.
18175 @item
18176 This solution can be simplified when compiling a program: you may either
18177 extend the @code{CPPFLAGS}:
18179 @example
18180 CPPFLAGS = -DDATADIR=\"$(datadir)\" @@CPPFLAGS@@
18181 @end example
18183 @noindent
18184 or create a dedicated header file:
18186 @example
18187 DISTCLEANFILES = datadir.h
18188 datadir.h: Makefile
18189         echo '#define DATADIR "$(datadir)"' >$@@
18190 @end example
18192 @item
18193 Use @code{AC_DEFINE} but have @command{configure} compute the literal
18194 value of @code{datadir} and others.  Many people have wrapped macros to
18195 automate this task.  For instance, the macro @code{AC_DEFINE_DIR} from
18196 the @uref{http://autoconf-archive.cryp.to/, Autoconf Macro
18197 Archive}.
18199 This solution does not conform to the @acronym{GNU} Coding Standards.
18201 @item
18202 Note that all the previous solutions hard wire the absolute name of
18203 these directories in the executables, which is not a good property.  You
18204 may try to compute the names relative to @code{prefix}, and try to
18205 find @code{prefix} at runtime, this way your package is relocatable.
18206 Some macros are already available to address this issue: see
18207 @code{adl_COMPUTE_RELATIVE_PATHS} and
18208 @code{adl_COMPUTE_STANDARD_RELATIVE_PATHS} on the
18209 @uref{http://autoconf-archive.cryp.to/,
18210 Autoconf Macro Archive}.
18211 @end itemize
18214 @node autom4te.cache
18215 @section What is @file{autom4te.cache}?
18217 @display
18218 What is this directory @file{autom4te.cache}?  Can I safely remove it?
18219 @end display
18221 In the @acronym{GNU} Build System, @file{configure.ac} plays a central
18222 role and is read by many tools: @command{autoconf} to create
18223 @file{configure}, @command{autoheader} to create @file{config.h.in},
18224 @command{automake} to create @file{Makefile.in}, @command{autoscan} to
18225 check the completeness of @file{configure.ac}, @command{autoreconf} to
18226 check the @acronym{GNU} Build System components that are used.  To
18227 ``read @file{configure.ac}'' actually means to compile it with M4,
18228 which can be a long process for complex @file{configure.ac}.
18230 This is why all these tools, instead of running directly M4, invoke
18231 @command{autom4te} (@pxref{autom4te Invocation}) which, while answering to
18232 a specific demand, stores additional information in
18233 @file{autom4te.cache} for future runs.  For instance, if you run
18234 @command{autoconf}, behind the scenes, @command{autom4te} also
18235 stores information for the other tools, so that when you invoke
18236 @command{autoheader} or @command{automake} etc., reprocessing
18237 @file{configure.ac} is not needed.  The speed up is frequently of 30%,
18238 and is increasing with the size of @file{configure.ac}.
18240 But it is and remains being simply a cache: you can safely remove it.
18242 @sp 1
18244 @display
18245 Can I permanently get rid of it?
18246 @end display
18248 The creation of this cache can be disabled from
18249 @file{~/.autom4te.cfg}, see @ref{Customizing autom4te}, for more
18250 details.  You should be aware that disabling the cache slows down the
18251 Autoconf test suite by 40%.  The more @acronym{GNU} Build System
18252 components are used, the more the cache is useful; for instance
18253 running @samp{autoreconf -f} on the Core Utilities is twice slower without
18254 the cache @emph{although @option{--force} implies that the cache is
18255 not fully exploited}, and eight times slower than without
18256 @option{--force}.
18259 @node Present But Cannot Be Compiled
18260 @section Header Present But Cannot Be Compiled
18262 The most important guideline to bear in mind when checking for
18263 features is to mimic as much as possible the intended use.
18264 Unfortunately, old versions of @code{AC_CHECK_HEADER} and
18265 @code{AC_CHECK_HEADERS} failed to follow this idea, and called
18266 the preprocessor, instead of the compiler, to check for headers.  As a
18267 result, incompatibilities between headers went unnoticed during
18268 configuration, and maintainers finally had to deal with this issue
18269 elsewhere.
18271 As of Autoconf 2.56 both checks are performed, and @code{configure}
18272 complains loudly if the compiler and the preprocessor do not agree.
18273 For the time being the result used is that of the preprocessor, to give
18274 maintainers time to adjust their @file{configure.ac}, but in the
18275 future, only the compiler will be considered.
18277 Consider the following example:
18279 @smallexample
18280 $ @kbd{cat number.h}
18281 typedef int number;
18282 $ @kbd{cat pi.h}
18283 const number pi = 3;
18284 $ @kbd{cat configure.ac}
18285 AC_INIT([Example], [1.0], [bug-example@@example.org])
18286 AC_CHECK_HEADERS([pi.h])
18287 $ @kbd{autoconf -Wall}
18288 $ @kbd{./configure}
18289 checking for gcc... gcc
18290 checking for C compiler default output file name... a.out
18291 checking whether the C compiler works... yes
18292 checking whether we are cross compiling... no
18293 checking for suffix of executables...
18294 checking for suffix of object files... o
18295 checking whether we are using the GNU C compiler... yes
18296 checking whether gcc accepts -g... yes
18297 checking for gcc option to accept ISO C89... none needed
18298 checking how to run the C preprocessor... gcc -E
18299 checking for grep that handles long lines and -e... grep
18300 checking for egrep... grep -E
18301 checking for ANSI C header files... yes
18302 checking for sys/types.h... yes
18303 checking for sys/stat.h... yes
18304 checking for stdlib.h... yes
18305 checking for string.h... yes
18306 checking for memory.h... yes
18307 checking for strings.h... yes
18308 checking for inttypes.h... yes
18309 checking for stdint.h... yes
18310 checking for unistd.h... yes
18311 checking pi.h usability... no
18312 checking pi.h presence... yes
18313 configure: WARNING: pi.h: present but cannot be compiled
18314 configure: WARNING: pi.h:     check for missing prerequisite headers?
18315 configure: WARNING: pi.h: see the Autoconf documentation
18316 configure: WARNING: pi.h:     section "Present But Cannot Be Compiled"
18317 configure: WARNING: pi.h: proceeding with the preprocessor's result
18318 configure: WARNING: pi.h: in the future, the compiler will take precedence
18319 configure: WARNING:     ## -------------------------------------- ##
18320 configure: WARNING:     ## Report this to bug-example@@example.org ##
18321 configure: WARNING:     ## -------------------------------------- ##
18322 checking for pi.h... yes
18323 @end smallexample
18325 @noindent
18326 The proper way the handle this case is using the fourth argument
18327 (@pxref{Generic Headers}):
18329 @example
18330 $ @kbd{cat configure.ac}
18331 AC_INIT([Example], [1.0], [bug-example@@example.org])
18332 AC_CHECK_HEADERS([number.h pi.h], [], [],
18333 [[#if HAVE_NUMBER_H
18334 # include <number.h>
18335 #endif
18337 $ @kbd{autoconf -Wall}
18338 $ @kbd{./configure}
18339 checking for gcc... gcc
18340 checking for C compiler default output... a.out
18341 checking whether the C compiler works... yes
18342 checking whether we are cross compiling... no
18343 checking for suffix of executables...
18344 checking for suffix of object files... o
18345 checking whether we are using the GNU C compiler... yes
18346 checking whether gcc accepts -g... yes
18347 checking for gcc option to accept ANSI C... none needed
18348 checking for number.h... yes
18349 checking for pi.h... yes
18350 @end example
18352 See @ref{Particular Headers}, for a list of headers with their
18353 prerequisite.
18355 @c ===================================================== History of Autoconf.
18357 @node History
18358 @chapter History of Autoconf
18359 @cindex History of autoconf
18361 You may be wondering, Why was Autoconf originally written?  How did it
18362 get into its present form?  (Why does it look like gorilla spit?)  If
18363 you're not wondering, then this chapter contains no information useful
18364 to you, and you might as well skip it.  If you @emph{are} wondering,
18365 then let there be light@enddots{}
18367 @menu
18368 * Genesis::                     Prehistory and naming of @command{configure}
18369 * Exodus::                      The plagues of M4 and Perl
18370 * Leviticus::                   The priestly code of portability arrives
18371 * Numbers::                     Growth and contributors
18372 * Deuteronomy::                 Approaching the promises of easy configuration
18373 @end menu
18375 @node Genesis
18376 @section Genesis
18378 In June 1991 I was maintaining many of the @acronym{GNU} utilities for the
18379 Free Software Foundation.  As they were ported to more platforms and
18380 more programs were added, the number of @option{-D} options that users
18381 had to select in the makefile (around 20) became burdensome.
18382 Especially for me---I had to test each new release on a bunch of
18383 different systems.  So I wrote a little shell script to guess some of
18384 the correct settings for the fileutils package, and released it as part
18385 of fileutils 2.0.  That @command{configure} script worked well enough that
18386 the next month I adapted it (by hand) to create similar @command{configure}
18387 scripts for several other @acronym{GNU} utilities packages.  Brian Berliner
18388 also adapted one of my scripts for his @acronym{CVS} revision control system.
18390 Later that summer, I learned that Richard Stallman and Richard Pixley
18391 were developing similar scripts to use in the @acronym{GNU} compiler tools;
18392 so I adapted my @command{configure} scripts to support their evolving
18393 interface: using the file name @file{Makefile.in} as the templates;
18394 adding @samp{+srcdir}, the first option (of many); and creating
18395 @file{config.status} files.
18397 @node Exodus
18398 @section Exodus
18400 As I got feedback from users, I incorporated many improvements, using
18401 Emacs to search and replace, cut and paste, similar changes in each of
18402 the scripts.  As I adapted more @acronym{GNU} utilities packages to use
18403 @command{configure} scripts, updating them all by hand became impractical.
18404 Rich Murphey, the maintainer of the @acronym{GNU} graphics utilities, sent me
18405 mail saying that the @command{configure} scripts were great, and asking if
18406 I had a tool for generating them that I could send him.  No, I thought,
18407 but I should!  So I started to work out how to generate them.  And the
18408 journey from the slavery of hand-written @command{configure} scripts to the
18409 abundance and ease of Autoconf began.
18411 Cygnus @command{configure}, which was being developed at around that time,
18412 is table driven; it is meant to deal mainly with a discrete number of
18413 system types with a small number of mainly unguessable features (such as
18414 details of the object file format).  The automatic configuration system
18415 that Brian Fox had developed for Bash takes a similar approach.  For
18416 general use, it seems to me a hopeless cause to try to maintain an
18417 up-to-date database of which features each variant of each operating
18418 system has.  It's easier and more reliable to check for most features on
18419 the fly---especially on hybrid systems that people have hacked on
18420 locally or that have patches from vendors installed.
18422 I considered using an architecture similar to that of Cygnus
18423 @command{configure}, where there is a single @command{configure} script that
18424 reads pieces of @file{configure.in} when run.  But I didn't want to have
18425 to distribute all of the feature tests with every package, so I settled
18426 on having a different @command{configure} made from each
18427 @file{configure.in} by a preprocessor.  That approach also offered more
18428 control and flexibility.
18430 I looked briefly into using the Metaconfig package, by Larry Wall,
18431 Harlan Stenn, and Raphael Manfredi, but I decided not to for several
18432 reasons.  The @command{Configure} scripts it produces are interactive,
18433 which I find quite inconvenient; I didn't like the ways it checked for
18434 some features (such as library functions); I didn't know that it was
18435 still being maintained, and the @command{Configure} scripts I had
18436 seen didn't work on many modern systems (such as System V R4 and NeXT);
18437 it wasn't flexible in what it could do in response to a feature's
18438 presence or absence; I found it confusing to learn; and it was too big
18439 and complex for my needs (I didn't realize then how much Autoconf would
18440 eventually have to grow).
18442 I considered using Perl to generate my style of @command{configure}
18443 scripts, but decided that M4 was better suited to the job of simple
18444 textual substitutions: it gets in the way less, because output is
18445 implicit.  Plus, everyone already has it.  (Initially I didn't rely on
18446 the @acronym{GNU} extensions to M4.)  Also, some of my friends at the
18447 University of Maryland had recently been putting M4 front ends on
18448 several programs, including @code{tvtwm}, and I was interested in trying
18449 out a new language.
18451 @node Leviticus
18452 @section Leviticus
18454 Since my @command{configure} scripts determine the system's capabilities
18455 automatically, with no interactive user intervention, I decided to call
18456 the program that generates them Autoconfig.  But with a version number
18457 tacked on, that name would be too long for old Unix file systems,
18458 so I shortened it to Autoconf.
18460 In the fall of 1991 I called together a group of fellow questers after
18461 the Holy Grail of portability (er, that is, alpha testers) to give me
18462 feedback as I encapsulated pieces of my handwritten scripts in M4 macros
18463 and continued to add features and improve the techniques used in the
18464 checks.  Prominent among the testers were Fran@,{c}ois Pinard, who came up
18465 with the idea of making an Autoconf shell script to run M4
18466 and check for unresolved macro calls; Richard Pixley, who suggested
18467 running the compiler instead of searching the file system to find
18468 include files and symbols, for more accurate results; Karl Berry, who
18469 got Autoconf to configure @TeX{} and added the macro index to the
18470 documentation; and Ian Lance Taylor, who added support for creating a C
18471 header file as an alternative to putting @option{-D} options in a
18472 makefile, so he could use Autoconf for his @acronym{UUCP} package.
18473 The alpha testers cheerfully adjusted their files again and again as the
18474 names and calling conventions of the Autoconf macros changed from
18475 release to release.  They all contributed many specific checks, great
18476 ideas, and bug fixes.
18478 @node Numbers
18479 @section Numbers
18481 In July 1992, after months of alpha testing, I released Autoconf 1.0,
18482 and converted many @acronym{GNU} packages to use it.  I was surprised by how
18483 positive the reaction to it was.  More people started using it than I
18484 could keep track of, including people working on software that wasn't
18485 part of the @acronym{GNU} Project (such as TCL, FSP, and Kerberos V5).
18486 Autoconf continued to improve rapidly, as many people using the
18487 @command{configure} scripts reported problems they encountered.
18489 Autoconf turned out to be a good torture test for M4 implementations.
18490 Unix M4 started to dump core because of the length of the
18491 macros that Autoconf defined, and several bugs showed up in @acronym{GNU}
18492 M4 as well.  Eventually, we realized that we needed to use some
18493 features that only @acronym{GNU} M4 has.  4.3@acronym{BSD} M4, in
18494 particular, has an impoverished set of builtin macros; the System V
18495 version is better, but still doesn't provide everything we need.
18497 More development occurred as people put Autoconf under more stresses
18498 (and to uses I hadn't anticipated).  Karl Berry added checks for X11.
18499 david zuhn contributed C++ support.  Fran@,{c}ois Pinard made it diagnose
18500 invalid arguments.  Jim Blandy bravely coerced it into configuring
18501 @acronym{GNU} Emacs, laying the groundwork for several later improvements.
18502 Roland McGrath got it to configure the @acronym{GNU} C Library, wrote the
18503 @command{autoheader} script to automate the creation of C header file
18504 templates, and added a @option{--verbose} option to @command{configure}.
18505 Noah Friedman added the @option{--autoconf-dir} option and
18506 @code{AC_MACRODIR} environment variable.  (He also coined the term
18507 @dfn{autoconfiscate} to mean ``adapt a software package to use
18508 Autoconf''.)  Roland and Noah improved the quoting protection in
18509 @code{AC_DEFINE} and fixed many bugs, especially when I got sick of
18510 dealing with portability problems from February through June, 1993.
18512 @node Deuteronomy
18513 @section Deuteronomy
18515 A long wish list for major features had accumulated, and the effect of
18516 several years of patching by various people had left some residual
18517 cruft.  In April 1994, while working for Cygnus Support, I began a major
18518 revision of Autoconf.  I added most of the features of the Cygnus
18519 @command{configure} that Autoconf had lacked, largely by adapting the
18520 relevant parts of Cygnus @command{configure} with the help of david zuhn
18521 and Ken Raeburn.  These features include support for using
18522 @file{config.sub}, @file{config.guess}, @option{--host}, and
18523 @option{--target}; making links to files; and running @command{configure}
18524 scripts in subdirectories.  Adding these features enabled Ken to convert
18525 @acronym{GNU} @code{as}, and Rob Savoye to convert Deja@acronym{GNU}, to using
18526 Autoconf.
18528 I added more features in response to other peoples' requests.  Many
18529 people had asked for @command{configure} scripts to share the results of
18530 the checks between runs, because (particularly when configuring a large
18531 source tree, like Cygnus does) they were frustratingly slow.  Mike
18532 Haertel suggested adding site-specific initialization scripts.  People
18533 distributing software that had to unpack on MS-DOS asked for a way to
18534 override the @file{.in} extension on the file names, which produced file
18535 names like @file{config.h.in} containing two dots.  Jim Avera did an
18536 extensive examination of the problems with quoting in @code{AC_DEFINE}
18537 and @code{AC_SUBST}; his insights led to significant improvements.
18538 Richard Stallman asked that compiler output be sent to @file{config.log}
18539 instead of @file{/dev/null}, to help people debug the Emacs
18540 @command{configure} script.
18542 I made some other changes because of my dissatisfaction with the quality
18543 of the program.  I made the messages showing results of the checks less
18544 ambiguous, always printing a result.  I regularized the names of the
18545 macros and cleaned up coding style inconsistencies.  I added some
18546 auxiliary utilities that I had developed to help convert source code
18547 packages to use Autoconf.  With the help of Fran@,{c}ois Pinard, I made
18548 the macros not interrupt each others' messages.  (That feature revealed
18549 some performance bottlenecks in @acronym{GNU} M4, which he hastily
18550 corrected!)  I reorganized the documentation around problems people want
18551 to solve.  And I began a test suite, because experience had shown that
18552 Autoconf has a pronounced tendency to regress when we change it.
18554 Again, several alpha testers gave invaluable feedback, especially
18555 Fran@,{c}ois Pinard, Jim Meyering, Karl Berry, Rob Savoye, Ken Raeburn,
18556 and Mark Eichin.
18558 Finally, version 2.0 was ready.  And there was much rejoicing.  (And I
18559 have free time again.  I think.  Yeah, right.)
18562 @c ========================================================== Appendices
18564 @node Copying This Manual
18565 @appendix Copying This Manual
18566 @cindex License
18568 @menu
18569 * GNU Free Documentation License::  License for copying this manual
18570 @end menu
18572 @include fdl.texi
18574 @node Indices
18575 @appendix Indices
18577 @menu
18578 * Environment Variable Index::  Index of environment variables used
18579 * Output Variable Index::       Index of variables set in output files
18580 * Preprocessor Symbol Index::   Index of C preprocessor symbols defined
18581 * Autoconf Macro Index::        Index of Autoconf macros
18582 * M4 Macro Index::              Index of M4, M4sugar, and M4sh macros
18583 * Autotest Macro Index::        Index of Autotest macros
18584 * Program & Function Index::    Index of those with portability problems
18585 * Concept Index::               General index
18586 @end menu
18588 @node Environment Variable Index
18589 @appendixsec Environment Variable Index
18591 This is an alphabetical list of the environment variables that Autoconf
18592 checks.
18594 @printindex ev
18596 @node Output Variable Index
18597 @appendixsec Output Variable Index
18599 This is an alphabetical list of the variables that Autoconf can
18600 substitute into files that it creates, typically one or more
18601 makefiles.  @xref{Setting Output Variables}, for more information
18602 on how this is done.
18604 @printindex ov
18606 @node Preprocessor Symbol Index
18607 @appendixsec Preprocessor Symbol Index
18609 This is an alphabetical list of the C preprocessor symbols that the
18610 Autoconf macros define.  To work with Autoconf, C source code needs to
18611 use these names in @code{#if} directives.
18613 @printindex cv
18615 @node Autoconf Macro Index
18616 @appendixsec Autoconf Macro Index
18618 This is an alphabetical list of the Autoconf macros.
18619 @ifset shortindexflag
18620 To make the list easier to use, the macros are listed without their
18621 preceding @samp{AC_}.
18622 @end ifset
18624 @printindex AC
18626 @node M4 Macro Index
18627 @appendixsec M4 Macro Index
18629 This is an alphabetical list of the M4, M4sugar, and M4sh macros.
18630 @ifset shortindexflag
18631 To make the list easier to use, the macros are listed without their
18632 preceding @samp{m4_} or @samp{AS_}.
18633 @end ifset
18635 @printindex MS
18637 @node Autotest Macro Index
18638 @appendixsec Autotest Macro Index
18640 This is an alphabetical list of the Autotest macros.
18641 @ifset shortindexflag
18642 To make the list easier to use, the macros are listed without their
18643 preceding @samp{AT_}.
18644 @end ifset
18646 @printindex AT
18648 @node Program & Function Index
18649 @appendixsec Program and Function Index
18651 This is an alphabetical list of the programs and functions which
18652 portability is discussed in this document.
18654 @printindex pr
18656 @node Concept Index
18657 @appendixsec Concept Index
18659 This is an alphabetical list of the files, tools, and concepts
18660 introduced in this document.
18662 @printindex cp
18664 @bye
18666 @c  LocalWords:  texinfo setfilename autoconf texi settitle setchapternewpage
18667 @c  LocalWords:  setcontentsaftertitlepage finalout ARG ovar varname dvar acx
18668 @c  LocalWords:  makeinfo dvi defcodeindex ev ov CPP cv Autotest mv defindex fn
18669 @c  LocalWords:  shortindexflag iftex ifset acindex ACindex ifclear ahindex fu
18670 @c  LocalWords:  asindex MSindex atindex ATindex auindex hdrindex prindex FIXME
18671 @c  LocalWords:  msindex alloca fnindex Aaarg indices FSF's dircategory ifnames
18672 @c  LocalWords:  direntry autoscan autoreconf autoheader autoupdate config FDs
18673 @c  LocalWords:  testsuite titlepage Elliston Demaille vskip filll ifnottex hmm
18674 @c  LocalWords:  insertcopying Autoconf's detailmenu Automake Libtool Posix ois
18675 @c  LocalWords:  Systemology Checkpointing Changequote INTERCAL changequote dfn
18676 @c  LocalWords:  Quadrigraphs builtins Shellology acconfig Bugward LIBOBJ Imake
18677 @c  LocalWords:  LIBOBJS IFELSE cindex flushright Pinard Metaconfig uref Simons
18678 @c  LocalWords:  distclean uninstall noindent versioning Tromey dir
18679 @c  LocalWords:  SAMS samp aclocal acsite underquoted emph itemx prepend SUBST
18680 @c  LocalWords:  evindex automake Gettext autopoint gettext symlink libtoolize
18681 @c  LocalWords:  defmac INIT tarname ovindex cvindex BUGREPORT PREREQ asis PROG
18682 @c  LocalWords:  SRCDIR srcdir globbing afterwards cmds foos fooo foooo init cd
18683 @c  LocalWords:  builddir timestamp src Imakefile chmod defvar CFLAGS CPPFLAGS
18684 @c  LocalWords:  CXXFLAGS DEFS DHAVE defvarx FCFLAGS FFLAGS LDFLAGS bindir GCC
18685 @c  LocalWords:  datadir datarootdir docdir dvidir htmldir libdir ifnothtml kbd
18686 @c  LocalWords:  includedir infodir libexecdir localedir localstatedir mandir
18687 @c  LocalWords:  oldincludedir pdfdir PDF psdir PostScript sbindir sysconfdir
18688 @c  LocalWords:  sharedstatedir DDATADIR sed tmp pkgdatadir VPATH conf unistd
18689 @c  LocalWords:  undef endif builtin FUNCS ifndef STACKSEG getb GETB YMP fubar
18690 @c  LocalWords:  PRE dest SUBDIRS subdirs fi struct STDC stdlib stddef INTTYPES
18691 @c  LocalWords:  inttypes STDINT stdint AWK AIX Solaris NeXT env EGREP FGREP yy
18692 @c  LocalWords:  LEXLIB YYTEXT lfl nonportable Automake's LN RANLIB byacc INETD
18693 @c  LocalWords:  inetd prog PROGS progs ranlib lmp lXt lX nsl gethostbyname UX
18694 @c  LocalWords:  NextStep isinf isnan glibc IRIX sunmath lm lsunmath pre sizeof
18695 @c  LocalWords:  ld inline malloc OSF putenv setenv FreeBSD realloc SunOS MinGW
18696 @c  LocalWords:  snprintf vsnprintf sprintf vsprintf sscanf gcc strerror ifdef
18697 @c  LocalWords:  strnlen sysconf PAGESIZE unsetenv va fallback memcpy dst FUNC
18698 @c  LocalWords:  PowerPC GNUC libPW pragma Olibcalls CHOWN chown CLOSEDIR VFORK
18699 @c  LocalWords:  closedir FNMATCH fnmatch vfork FSEEKO LARGEFILE fseeko SVR sc
18700 @c  LocalWords:  largefile GETGROUPS getgroups GETLOADAVG DGUX UMAX NLIST KMEM
18701 @c  LocalWords:  GETLODAVG SETGID getloadavg nlist GETMNTENT irix
18702 @c  LocalWords:  getmntent UnixWare GETPGRP getpgid getpgrp Posix's pid LSTAT
18703 @c  LocalWords:  lstat rpl MEMCMP memcmp OpenStep MBRTOWC mbrtowc MKTIME mktime
18704 @c  LocalWords:  localtime MMAP mmap OBSTACK obstack obstacks ARGTYPES timeval
18705 @c  LocalWords:  SETPGRP setpgrp defmacx Hurd SETVBUF setvbuf STRCOLL strcoll
18706 @c  LocalWords:  STRTOD strtod DECL STRFTIME strftime SCO UTIME utime VPRINTF
18707 @c  LocalWords:  DOPRNT vprintf doprnt sp unfixable LIBSOURCE LIBSOURCES Eggert
18708 @c  LocalWords:  linux netinet ia Tru XFree DIRENT NDIR dirent ndir multitable
18709 @c  LocalWords:  NAMLEN strlen namlen MKDEV SYSMACROS makedev RESOLV resolv DNS
18710 @c  LocalWords:  inet structs NAMESER arpa NETDB netdb UTekV UTS autom GCC's kB
18711 @c  LocalWords:  STDBOOL BOOL stdbool conformant cplusplus bool Bool stdarg tm
18712 @c  LocalWords:  ctype strchr strrchr rindex bcopy memmove memchr WEXITSTATUS
18713 @c  LocalWords:  WIFEXITED TIOCGWINSZ GWINSZ termios preprocess preprocessable
18714 @c  LocalWords:  DECLS strdup calloc BLKSIZE blksize RDEV rdev TZNAME tzname pw
18715 @c  LocalWords:  passwd gecos pwd MBSTATE mbstate wchar RETSIGTYPE hup UID uid
18716 @c  LocalWords:  gid ptrdiff uintmax EXEEXT OBJEXT Ae Onolimit conftest AXP str
18717 @c  LocalWords:  ALIGNOF WERROR Werror cpp HP's WorkShop egcs un fied stdc CXX
18718 @c  LocalWords:  varargs BIGENDIAN Endianness SPARC endianness grep'ed CONST FC
18719 @c  LocalWords:  const STRINGIZE stringizing PARAMS unprotoize protos KCC cxx
18720 @c  LocalWords:  xlC aCC CXXCPP FREEFORM xlf FLIBS FCLIBS ish SRCEXT XTRA LFS
18721 @c  LocalWords:  ISC lcposix MINIX Minix conditionalized inlines hw dD confdefs
18722 @c  LocalWords:  fputs stdout PREPROC ar UFS HFS QNX realtime fstype STATVFS se
18723 @c  LocalWords:  statvfs STATFS statfs func machfile hdr lelf raboof DEFUN GTK
18724 @c  LocalWords:  GTKMM Grmph ified ine defn baz EOF qar Ahhh changecom algol io
18725 @c  LocalWords:  changeword quadrigraphs quadrigraph dnl SGI atoi overquoting
18726 @c  LocalWords:  Aas Wcross sep args namespace undefine bpatsubst popdef dquote
18727 @c  LocalWords:  bregexp Overquote overquotation meisch maisch meische maische
18728 @c  LocalWords:  miscian DIRNAME dirname MKDIR CATFILE XMKMF TRAVOLTA celsius
18729 @c  LocalWords:  EMX emxos Emacsen Korn DYNIX subshell posix Ksh ksh Pdksh Zsh
18730 @c  LocalWords:  pdksh zsh Allbery Lipe Kubota UWS zorglub stderr eval esac lfn
18731 @c  LocalWords:  drivespec Posixy DJGPP doschk prettybird LPT pfew Zsh's yu yaa
18732 @c  LocalWords:  yM uM aM firebird IP subdir misparses ok Unpatched abc bc zA
18733 @c  LocalWords:  CDPATH DUALCASE LINENO prepass Subshells lineno NULLCMD cmp wc
18734 @c  LocalWords:  MAILPATH scanset arg NetBSD Almquist printf expr cp
18735 @c  LocalWords:  Oliva awk Aaaaarg cmd regex xfoo GNV OpenVMS unwriteable te VM
18736 @c  LocalWords:  sparc Proulx SysV nbar nfoo maxdepth acdilrtu TWG mc
18737 @c  LocalWords:  mkdir exe uname OpenBSD Fileutils mktemp umask TMPDIR guid os
18738 @c  LocalWords:  fooXXXXXX Unicos parenthesization utimes hpux hppa unescaped
18739 @c  LocalWords:  pmake DOS's gmake ifoo DESTDIR autoconfiscated pc coff mips gg
18740 @c  LocalWords:  dec ultrix cpu wildcards rpcc rdtsc powerpc behaviour readline
18741 @c  LocalWords:  withval vxworks gless localcache usr LOFF loff CYGWIN Cygwin
18742 @c  LocalWords:  cygwin SIGLIST siglist SYSNDIR SYSDIR ptx lseq rusage elif MSC
18743 @c  LocalWords:  lfoo POUNDBANG lsun NIS getpwnam SYSCALLS RSH INTL lintl aix
18744 @c  LocalWords:  intl lx ldir syslog bsd EPI toolchain netbsd objext de KNR nn
18745 @c  LocalWords:  fication LTLIBOBJS Wdiff TESTDIR atconfig atlocal akim XFAIL
18746 @c  LocalWords:  ChangeLog prepended errexit smallexample TESTSUITEFLAGS GPL er
18747 @c  LocalWords:  installcheck autotest indir Pixley Bothner Eichin Kerberos adl
18748 @c  LocalWords:  DISTCLEANFILES preprocessor's fileutils Stallman Murphey Stenn
18749 @c  LocalWords:  Manfredi Autoconfig TCL FSP david zuhn Blandy MACRODIR Raeburn
18750 @c  LocalWords:  autoconfiscate Savoye Haertel Avera Meyering fdl appendixsec
18751 @c  LocalWords:  printindex american LIBOBJDIR LibdirTest ERLCFLAGS OBJCFLAGS
18752 @c  LocalWords:  VER Gnulib online xyes strcpy TYPEOF typeof OBJC objcc objc ln
18753 @c  LocalWords:  GOBJC OBJCCPP OTP ERLC erl valloc decr dumpdef errprint incr
18754 @c  LocalWords:  esyscmd len maketemp pushdef substr syscmd sysval translit txt
18755 @c  LocalWords:  sinclude foreach myvar tolower toupper uniq BASENAME STDIN
18756 @c  LocalWords:  Dynix descrips basename aname cname macroexpands xno xcheck
18757 @c  LocalWords:  LIBREADLINE lreadline lncurses libreadline
18759 @c Local Variables:
18760 @c fill-column: 72
18761 @c ispell-local-dictionary: "american"
18762 @c End: