This is autobook.info, produced by makeinfo version 4.7 from autobook.texi. INFO-DIR-SECTION GNU programming tools START-INFO-DIR-ENTRY * Autoconf, Automake, Libtool: (autobook). Using the GNU autotools. END-INFO-DIR-ENTRY This file documents GNU Autoconf, Automake and Libtool. Copyright (C) 1999, 2000 Gary V. Vaughan, Ben Elliston, Tom Tromey, Ian Lance Taylor Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided that the entire resulting derived work is distributed under the terms of a permission notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that this permission notice may be stated in a translation approved by the Foundation.  Indirect: autobook.info-1: 1034 autobook.info-2: 301108 autobook.info-3: 600643  Tag Table: (Indirect) Node: Top1034 Node: Introduction8776 Node: What this book is10381 Node: What the book is not11322 Node: Who should read this book12265 Node: How this book is organized13571 Node: History14990 Node: Unix Diversity15678 Node: First Configure Programs18312 Node: Configure Development21996 Node: Automake Development23884 Node: Libtool Development25833 Node: Microsoft Windows Development27901 Node: Invoking configure29284 Node: Configuring30791 Node: Files generated by configure41478 Node: The most useful Makefile targets44694 Node: Configuration Names45946 Node: Introducing Makefiles49899 Node: Targets and dependencies50670 Node: Makefile syntax52552 Node: Macros54174 Node: Suffix rules55425 Node: A Minimal GNU Autotools Project56064 Node: User-Provided Input Files57706 Node: Generated Output Files60607 Node: Maintaining Input Files66331 Node: Packaging Generated Files67993 Node: Documentation and ChangeLogs69938 Node: Writing configure.in72265 Node: What is Portability?73145 Node: Brief introduction to portable sh75463 Node: Ordering Tests77726 Node: What to check for81090 Node: Using Configuration Names86800 Node: Introducing GNU Automake89576 Node: General Automake principles91266 Node: Introduction to Primaries94341 Node: The easy primaries95463 Node: Programs and libraries98352 Ref: Programs and libraries-Footnote-1103334 Node: Frequently Asked Questions103380 Node: Multiple directories105835 Node: Testing107359 Ref: Testing-Footnote-1108946 Node: Bootstrapping109010 Ref: Bootstrapping-Footnote-1115092 Ref: Bootstrapping-Footnote-2115191 Node: A Small GNU Autotools Project115213 Ref: A Small GNU Autotools Project-Footnote-1116622 Node: GNU Autotools in Practice116668 Node: Project Directory Structure117636 Node: C Header Files119676 Ref: C Header Files-Footnote-1122377 Node: C++ Compilers122559 Ref: C++ Compilers-Footnote-1124730 Ref: C++ Compilers-Footnote-2124843 Node: Function Definitions124889 Node: Fallback Function Implementations125935 Ref: Fallback Function Implementations-Footnote-1129350 Ref: Fallback Function Implementations-Footnote-2129416 Node: K&R Compilers129486 Ref: K&R Compilers-Footnote-1137995 Node: A Simple Shell Builders Library138119 Node: Portability Infrastructure140003 Node: Error Management141000 Ref: Error Management-Footnote-1144869 Node: Memory Management144918 Node: Generalised List Data Type148342 Node: Library Implementation150523 Node: sic.c & sic.h151332 Node: builtin.c & builtin.h152635 Node: eval.c & eval.h153384 Node: syntax.c & syntax.h154702 Node: Beginnings of a configure.in for Small Project155887 Node: A Sample Shell Application167944 Node: sic_repl.c168744 Ref: sic_repl.c-Footnote-1170543 Node: sic_syntax.c170573 Node: sic_builtin.c172330 Node: sic.c & sic.h (again)176785 Node: Introducing GNU Libtool179928 Node: Creating libtool183227 Node: The Libtool Library187763 Ref: The Libtool Library-Footnote-1189606 Node: Position Independent Code189808 Ref: Position Independent Code-Footnote-1192225 Node: Creating Shared Libraries with libtool192497 Node: Creating Static Libraries with libtool197966 Ref: Creating Static Libraries with libtool-Footnote-1199813 Node: Creating Convenience Libraries with libtool200079 Node: Linking an Executable203430 Node: Linking a Library208782 Node: Inter-library Dependencies212228 Node: Using Convenience Libraries216522 Node: Executing Uninstalled Binaries220347 Node: Installing a Library221959 Ref: Installing a Library-Footnote-1229775 Node: Installing an Executable229855 Node: Uninstalling235439 Node: Using GNU Libtool236862 Node: Integration with configure.in238157 Ref: Integration with configure.in-Footnote-1240798 Node: Extra Configure Options240883 Ref: Extra Configure Options-Footnote-1247098 Node: Extra Macros for Libtool247244 Node: Integration with Makefile.am251227 Node: Creating Libtool Libraries with Automake251732 Node: Linking against Libtool Libraries with Automake259374 Node: Using libtoolize262517 Ref: Using libtoolize-Footnote-1265628 Ref: Using libtoolize-Footnote-2265794 Node: Library Versioning265834 Node: Convenience Libraries272517 Node: A Large GNU Autotools Project293047 Node: Using Libtool Libraries293970 Ref: Using Libtool Libraries-Footnote-1300987 Node: Removing --foreign301108 Ref: Removing --foreign-Footnote-1302241 Ref: Removing --foreign-Footnote-2302305 Node: Installing Header Files302392 Ref: Installing Header Files-Footnote-1312486 Node: Including Texinfo Documentation312585 Node: Adding a Test Suite317122 Ref: Adding a Test Suite-Footnote-1324238 Node: Rolling Distribution Tarballs324346 Node: Introduction to Distributions325100 Ref: Introduction to Distributions-Footnote-1327543 Node: What goes in327726 Ref: What goes in-Footnote-1331349 Node: The distcheck rule331380 Node: Some caveats332559 Node: Implementation333326 Node: Installing and Uninstalling335178 Ref: Installing and Uninstalling-Footnote-1347653 Ref: Installing and Uninstalling-Footnote-2347902 Ref: Installing and Uninstalling-Footnote-3347960 Node: Writing Portable C348083 Node: C Language Portability349319 Node: ISO C350290 Node: C Data Type Sizes351162 Node: C Endianness353092 Ref: C Endianness-Footnote-1356217 Node: C Structure Layout356269 Node: C Floating Point357993 Node: GNU cc Extensions360068 Node: Cross-Unix Portability360974 Node: Cross-Unix Function Calls361970 Node: Cross-Unix System Interfaces365038 Node: Unix/Windows Portability368089 Node: Unix/Windows Emulation368834 Ref: Unix/Windows Emulation-Footnote-1370162 Node: Unix/Windows Portable Scripting Language370209 Ref: Unix/Windows Portable Scripting Language-Footnote-1371492 Node: Unix/Windows User Interface Library371528 Node: Unix/Windows Specific Code372697 Node: Unix/Windows Issues373755 Node: Unix/Windows Text/Binary374210 Node: Unix/Windows Filesystems375676 Node: DOS Filename Restrictions376320 Node: Windows File Name Case377141 Node: Windows Whitespace in File Names378088 Node: Windows Separators and Drive Letters379022 Ref: Windows Separators and Drive Letters-Footnote-1380367 Node: Unix/Windows Miscellaneous380656 Node: Writing Portable C++381824 Node: Brief History of C++383598 Node: Changeable C++385565 Node: Built-in bool type387360 Node: Exceptions388305 Node: Casts389564 Node: Variable Scoping in For Loops391057 Node: Namespaces392157 Node: The explicit Keyword393439 Node: The mutable Keyword394099 Node: The typename Keyword396318 Node: Runtime Type Identification (RTTI)397444 Node: Templates398865 Node: Default template arguments401758 Node: Standard library headers402948 Node: Standard Template Library403739 Node: Compiler Quirks405278 Node: Template Instantiation405846 Node: Name Mangling408921 Node: How GNU Autotools Can Help411418 Node: Testing C++ Implementations with Autoconf411928 Node: Automake C++ support412953 Node: Libtool C++ support413834 Ref: Libtool C++ support-Footnote-1416241 Node: Further Reading416337 Ref: Further Reading-Footnote-1417446 Node: Dynamic Loading417505 Node: Dynamic Modules418757 Ref: Dynamic Modules-Footnote-1421300 Node: Module Access Functions421401 Ref: Module Access Functions-Footnote-1424623 Node: Finding a Module424671 Node: A Simple GNU/Linux Module Loader427300 Node: A Simple GNU/Linux Dynamic Module433341 Node: Using GNU libltdl434891 Node: Introducing libltdl435879 Node: Using libltdl443571 Node: libltdl Configury444917 Ref: libltdl Configury-Footnote-1451621 Ref: libltdl Configury-Footnote-2451758 Node: libltdl Memory Management451876 Node: libltdl Module Loader452980 Node: libltdl Dependent Libraries458794 Ref: libltdl Dependent Libraries-Footnote-1462415 Ref: libltdl Dependent Libraries-Footnote-2462488 Node: libltdl Dynamic Module462546 Node: Portable Library Design465824 Node: dlpreopen Loading469474 Node: User Module Loaders478048 Node: libltdl Loader Mechanism479493 Ref: libltdl Loader Mechanism-Footnote-1482009 Node: libltdl Loader Management482051 Node: libltdl Loader Errors487096 Node: Advanced GNU Automake Usage488942 Node: Automake Conditionals489416 Node: Language support492118 Node: Automatic dependency tracking494411 Node: A Complex GNU Autotools Project496241 Node: A Module Loading Subsystem497478 Ref: A Module Loading Subsystem-Footnote-1499062 Node: Initialising the Module Loader499187 Node: Managing Module Loader Errors501761 Ref: Managing Module Loader Errors-Footnote-1502918 Node: Loading a Module503091 Node: Unloading a Module506622 Node: A Loadable Module515180 Ref: A Loadable Module-Footnote-1522424 Node: Interpreting Commands from a File522460 Node: Integrating Dmalloc525052 Ref: Integrating Dmalloc-Footnote-1528780 Node: M4528842 Node: What does M4 do?530701 Node: How GNU Autotools uses M4531861 Node: Fundamentals of M4 processing533422 Node: Token scanning534026 Node: Macros and macro expansion536106 Ref: Macros and macro expansion-Footnote-1542039 Ref: Macros and macro expansion-Footnote-2542176 Node: Quoting542279 Ref: Quoting-Footnote-1546652 Node: Features of M4546742 Node: Discarding input547486 Node: Macro management548964 Node: Conditionals551193 Node: Looping553805 Node: Diversions554570 Node: Including files555750 Node: Writing macros within the GNU Autotools framework556823 Node: Syntactic conventions557992 Node: Debugging with M4560037 Node: Writing Portable Bourne Shell563676 Node: Why Use the Bourne Shell?564320 Node: Sh Implementation566623 Node: Size Limitations567841 Node: Magic Numbers568450 Node: Colon571640 Node: Functions573493 Node: Source576531 Node: Test578042 Node: Variables582067 Node: Pattern Matching585907 Ref: Pattern Matching-Footnote-1588172 Node: Environment588259 Node: Utilities590592 Ref: Utilities-Footnote-1596442 Node: Writing New Macros for Autoconf596477 Node: Autoconf Preliminaries597620 Node: Reusing Existing Macros598758 Node: Guidelines for writing macros600643 Node: Non-interactive behavior601628 Node: Testing system features at application runtime602372 Node: Output from macros604139 Node: Naming macros605733 Node: Macro interface608151 Node: Implementation specifics611985 Node: Writing shell code612565 Node: Using M4 correctly613108 Node: Caching results613578 Node: Future directions for macro writers615284 Node: Autoconf macro archive615820 Node: Primitive macros to aid in building macros616686 Node: Migrating Existing Packages618438 Ref: Migrating Existing Packages-Footnote-1632217 Ref: Migrating Existing Packages-Footnote-2632391 Node: Integration with Cygnus Cygwin632440 Ref: Integration with Cygnus Cygwin-Footnote-1635328 Ref: Integration with Cygnus Cygwin-Footnote-2635464 Node: Preliminaries635503 Ref: Preliminaries-Footnote-1638136 Ref: Preliminaries-Footnote-2638174 Ref: Preliminaries-Footnote-3638228 Ref: Preliminaries-Footnote-4638372 Node: Installing GNU Autotools on Cygwin638419 Ref: Installing GNU Autotools on Cygwin-Footnote-1642503 Node: Writing A Cygwin Friendly Package642573 Node: Text vs Binary Modes644424 Ref: Text vs Binary Modes-Footnote-1657041 Node: File System Limitations657131 Node: 8.3 Filenames657723 Node: Separators and Drive Letters658513 Node: Executable Filename Extensions665739 Ref: Executable Filename Extensions-Footnote-1668714 Node: DLLs with Libtool668762 Ref: DLLs with Libtool-Footnote-1672663 Node: DLL Support with GNU Autotools672944 Node: A Makefile.am for DLLs674056 Ref: A Makefile.am for DLLs-Footnote-1675356 Node: A configure.in for DLLs675476 Ref: A configure.in for DLLs-Footnote-1680553 Ref: A configure.in for DLLs-Footnote-2680661 Node: Handling Data Exports from DLLs680819 Node: Runtime Loading of DLLs690138 Node: Package Installation690817 Node: Cross Compilation693113 Node: Host and Target696721 Node: Specifying the Target698487 Node: Using the Target Type699328 Node: Building with a Cross Compiler703458 Ref: Building with a Cross Compiler-Footnote-1704296 Node: Canadian Cross Example704513 Node: Canadian Cross Concepts705730 Node: Build Cross Host Tools707032 Node: Build and Host Options708212 Node: Canadian Cross Tools710160 Node: Supporting Cross Compiler711088 Node: Supporting Cross Compiler in Configure711948 Node: Supporting Cross Compiler in Make715405 Node: Installing GNU Autotools717503 Node: Prerequisite tools718022 Node: Downloading GNU Autotools719637 Node: Installing the tools721319 Node: PLATFORMS723602 Node: Generated File Dependencies733699 Node: aclocal process736136 Node: autoheader process737175 Node: automake and libtoolize process738027 Node: autoconf process740292 Node: configure process741029 Node: make process743589 Node: Autoconf Macro Reference744716 Node: OPL767770 Node: Index774117  End Tag Table