O'Reilly logo

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

GNU Autoconf, Automake, and Libtool

Book Description

If you are a developer and are looking to participate in the Open Source development growth area you will need to learn new Open Source tools. GNU autoconf, GNU automake and GNU libtool are key tools for Open Source application development. These tools are not easy to learn, so some of the leading authorities on these tools have agreed to work together on this book to teach developers how to boost their productivity and the portability of their application. This book place New Riders/MTP at the center of the Open Source development community. Autoconf, Automake and Libtool is an efficient discourse on the use of autoconf, automake and libtool aimed at reducing the steep learning curve normally associated with these tools. This is a study guide to the interactions between the tools, and how best to get them to cooperate. If you are a developer and have no GNU build environment expertise, this book will help you develop these tools completely and confidently.

Table of Contents

  1. Copyright
  2. About the Authors
  3. About the Technical Reviewers
  4. Acknowledgments
  5. Tell Us What You Think
  6. Foreword
  7. Introduction
  8. History
    1. The Diversity of Unix Systems
    2. The First configure Programs
    3. configure Development
    4. Automake Development
    5. Libtool Development
    6. Microsoft Windows
  9. How to Run Configure, and The Most Useful Standard Makefile Targets
    1. Configuring
    2. Files Generated by 'configure'
    3. The Most Useful 'Makefile' Targets
    4. Configuration Names
  10. Introducing 'Makefile's
    1. Targets and Dependencies
    2. 'Makefile' Syntax
    3. Macros
  11. Using GNU Autotools to Manage a "Minimal Project"
    1. User-Provided Input Files
    2. Generated Output Files
    3. Maintaining Input Files
    4. Packaging Generated Files
    5. Documentation and ChangeLogs
  12. Writing a Portable 'configure.in'
    1. What Is Portability?
    2. Brief Introduction to Portable sh
    3. Ordering Tests
    4. What to Check For
    5. Using Configuration Names
  13. Introducing GNU Automake
    1. General Automake Principles
    2. Frequently Asked Questions
    3. Introduction to Primaries
    4. The Easy Primaries
    5. Programs and Libraries
    6. Multiple Directories
    7. Testing
  14. A Small GNU Autotools Project
    1. GNU Autotools in Practice
    2. A Simple Shell Builders Library
    3. A Sample Shell Application
  15. Bootstrapping
  16. Introducing GNU Libtool
    1. Creating libtool
    2. The Libtool Library
    3. Linking an Executable
    4. Linking a Library
    5. Interlibrary Dependencies
    6. Using Convenience Libraries
    7. Executing Uninstalled Binaries
    8. Installing a Library
    9. Installing an Executable
    10. Uninstalling
  17. Using GNU Libtool with 'configure.in' and 'Makefile.am'
    1. Integration with 'configure.in'
    2. Integration with 'Makefile.am'
    3. Using libtoolize
    4. Library Versioning
    5. Convenience Libraries
  18. A Large GNU Autotools Project
    1. Using Libtool Libraries
    2. Removing '--foreign'
    3. Installing Header Files
    4. Including Texinfo Documentation
    5. Adding a Test Suite
  19. Rolling Distribution Tarballs
    1. Introduction to Distributions
    2. What Goes In
    3. The distcheck Rule
    4. Some Caveats
    5. Implementation
  20. Installing and Uninstalling Configured Packages
    1. Where Files Are Installed
    2. Fine-Grained Control of Install
    3. Install Hooks
    4. Uninstall
  21. Writing Portable C with GNU Autotools
    1. C Language Portability
    2. Cross-Unix Portability
    3. Unix/Windows Portability
  22. Writing Portable C++ with GNU Autotools
    1. Brief History of C++
    2. Changeable C++
    3. Compiler Quirks
    4. How GNU Autotools Can Help
    5. Further Reading
  23. Dynamic Loading
    1. Dynamic Modules
    2. Module Access Functions
    3. Finding a Module
    4. A Simple GNU/Linux Module Loader
    5. A Simple GNU/Linux Dynamic Module
  24. Using GNU libltdl
    1. Introducing libltdl
    2. Using libltdl
    3. Portable Library Design
    4. dlpreopen Loading
    5. User Module Loaders
  25. Advanced GNU Automake Usage
    1. Conditionals
    2. Language Support
    3. Automatic Dependency Tracking
  26. A Complex GNU Autotools Project
    1. A Module-Loading Subsystem
    2. A Loadable Module
    3. Interpreting Commands from a File
    4. Integrating Dmalloc
  27. GNU M4
    1. What Does M4 Do?
    2. How GNU Autotools Uses M4
    3. Fundamentals of M4 Processing
    4. Features of M4
    5. Writing Macros Within the GNU Autotools Framework
  28. Writing Portable Bourne Shell
    1. Why Use the Bourne Shell?
    2. Implementation
    3. Environment
    4. Utilities
  29. Writing New Macros for Autoconf
    1. Autoconf Preliminaries
    2. Reusing Existing Macros
    3. Guidelines for Writing Macros
    4. Noninteractive Behavior
    5. Testing System Features at Application Runtime
    6. Output from Macros
    7. Naming Macros
    8. Macro Interface
    9. Implementation Specifics
    10. Future Directions for Macro Writers
  30. Migrating an Existing Package to GNU Autotools
    1. Why Autoconfiscate?
    2. Overview of the Two Approaches
    3. Example: Quick and Dirty
    4. Example: The Full Pull
  31. Using GNU Autotools with Cygnus' Cygwin
    1. Preliminaries
    2. Installing GNU Autotools on Cygwin
    3. Writing a Cygwin-Friendly Package
    4. DLLs with Libtool
    5. Package Installation
  32. Cross-Compilation with GNU Autotools
    1. Host and Target
    2. Specifying the Target
    3. Using the Target Type
    4. Building with a Cross-Compiler
  33. Installing GNU Autotools
    1. Prerequisite Tools
    2. Downloading GNU Autotools
    3. Installing the Tools
  34. Platforms
  35. Generated File Dependencies
    1. aclocal
    2. autoheader
    3. automake and libtoolize
    4. autoconf
    5. configure
    6. make
  36. Autoconf Macro Reference
  37. Open Publication License
  38. Index