Autotools a practitioner's guide to GNU Autoconf, Automake, and Libtool
The GNU Autotools make it easy for developers to create software that is portable across many Unix-like operating systems, and even Windows. Although the Autotools are used by thousands of open source software packages, they have a notoriously steep learning curve. Autotools is the first book to off...
Otros Autores: | |
---|---|
Formato: | Libro electrónico |
Idioma: | Inglés |
Publicado: |
San Francisco, CA :
No Starch Press
[2020]
|
Edición: | Second edition |
Materias: | |
Ver en Biblioteca Universitat Ramon Llull: | https://discovery.url.edu/permalink/34CSUC_URL/1im36ta/alma991009630810906719 |
Tabla de Contenidos:
- Intro
- Title Page
- Copyright Page
- About the Author
- Brief Contents
- Contents in Detail
- FOREWORD FOR THE FIRST EDITION by Ralf Wildenhues
- FOREWORD FOR THE SECOND EDITION by Eric Blake
- PREFACE
- Why Use the Autotools?
- Acknowledgments for the First Edition
- Acknowledgments for the Second Edition
- I Wish You the Very Best
- INTRODUCTION
- Who Should Read This Book
- How This Book Is Organized
- Conventions Used in This Book
- Autotools Versions Used in This Book
- 1 AN END USER'S PERSPECTIVE ON THE GNU AUTOTOOLS
- Software Source Archives
- Unpacking a Source Archive
- Building the Software
- Testing the Build
- Installing the Built Software
- Summary
- 2 A BRIEF INTRODUCTION TO THE GNU AUTOTOOLS
- Who Should Use the Autotools?
- When Should You Not Use the Autotools?
- Apple Platforms and Mac OS X
- The Choice of Language
- Generating Your Package Build System
- Configuration
- Autoconf
- Automake
- Libtool
- Building Your Package
- Installing the Most Up-to-Date Autotools
- Summary
- 3 UNDERSTANDING THE GNU CODING STANDARDS
- Creating a New Project Directory Structure
- Project Structure
- Makefile Basics
- Creating a Source Distribution Archive
- Automatically Testing a Distribution
- Unit Testing, Anyone?
- Installing Products
- The Filesystem Hierarchy Standard
- Supporting Standard Targets and Variables
- Getting Your Project into a Linux Distro
- Build vs. Installation Prefix Overrides
- User Variables
- Nonrecursive Build Systems
- Configuring Your Package
- Summary
- 4 CONFIGURING YOUR PROJECT WITH AUTOCONF
- Autoconf Configuration Scripts
- The Shortest configure.ac File
- Comparing M4 to the C Preprocessor
- The Nature of M4 Macros
- Executing autoconf
- Executing configure
- Executing config.status
- Adding Some Real Functionality.
- Generating Files from Templates
- Adding VPATH Build Functionality
- Let's Take a Breather
- An Even Quicker Start with autoscan
- Initialization and Package Information
- The Instantiating Macros
- Back to Remote Builds for a Moment
- Summary
- 5 MORE FUN WITH AUTOCONF: CONFIGURING USER OPTIONS
- Substitutions and Definitions
- Checking for Compilers
- Checking for Other Programs
- A Common Problem with Autoconf
- Checks for Libraries and Header Files
- Supporting Optional Features and Packages
- Checks for Type and Structure Definitions
- The AC_OUTPUT Macro
- Summary
- 6 AUTOMATIC MAKEFILES WITH AUTOMAKE
- Getting Down to Business
- What's Actually in a Makefile.am File?
- Analyzing Our New Build System
- Unit Tests: Supporting make check
- Reducing Complexity with Convenience Libraries
- Building the New Library
- What Goes into a Distribution?
- Maintainer Mode
- Cutting Through the Noise
- Nonrecursive Automake
- Summary
- 7 BUILDING LIBRARIES WITH LIBTOOL
- The Benefits of Shared Libraries
- How Shared Libraries Work
- Using Libtool
- Installing Libtool
- Adding Shared Libraries to Jupiter
- Summary
- 8 LIBRARY INTERFACE VERSIONING AND RUNTIME DYNAMIC LINKING
- System-Specific Versioning
- The Libtool Library Versioning Scheme
- Using libltdl
- Converting to Libtool's ltdl Library
- Summary
- 9 UNIT AND INTEGRATION TESTING WITH AUTOTEST
- Autotest Overview
- Wiring Up Autotest
- Adding a Test
- Unit Testing vs. Integration Testing
- Administrative Details
- Niceties
- A Minimal Approach
- Summary
- 10 FINDING BUILD DEPENDENCIES WITH PKG-CONFIG
- A pkg-config Overview
- Diving In
- Writing pkg-config Metadata Files
- Generating .pc Files with Autoconf
- Uninstalled .pc Files
- Using pkg-config in configure.ac
- pkg-config Autoconf Macros
- Summary
- 11 INTERNATIONALIZATION.
- Obligatory Disclaimer
- Internationalization (I18n)
- Summary
- 12 LOCALIZATION
- Getting Started
- Integrating gettext with the Autotools
- Summary
- 13 MAXIMUM PORTABILITY WITH GNULIB
- License Caveat
- Getting Started
- Adding Gnulib Modules to a Project
- Summary
- 14 FLAIM: AN AUTOTOOLS EXAMPLE
- What Is FLAIM?
- Why FLAIM?
- Logistics
- An Initial Look
- Getting Started
- The FLAIM Subprojects
- Designing the XFLAIM Build System
- Summary
- 15 FLAIM PART II: PUSHING THE ENVELOPE
- Building Java Sources Using the Autotools
- Building the C# Sources
- Configuring Compiler Options
- Hooking Doxygen into the Build Process
- Adding Nonstandard Targets
- Summary
- 16 USING THE M4 MACRO PROCESSOR WITH AUTOCONF
- M4 Text Processing
- The Recursive Nature of M4
- Autoconf and M4
- Writing Autoconf Macros
- Diagnosing Problems
- Summary
- 17 USING THE AUTOTOOLS WITH WINDOWS
- Environment Options
- Tool Chain Options
- Getting Started
- Cross-Compiling for Windows on Linux
- Windows Subsystem for Linux
- Cygwin
- MinGW: Minimalist GNU for Windows
- Msys2
- Summary
- 18 A CATALOG OF TIPS AND REUSABLE SOLUTIONS FOR CREATING GREAT PROJECTS
- Item 1: Keeping Private Details out of Public Interfaces
- Item 2: Implementing Recursive Extension Targets
- Item 3: Using a Repository Revision Number in a Package Version
- Item 4: Ensuring Your Distribution Packages Are Clean
- Item 5: Hacking Autoconf Macros
- Item 6: Cross-Compiling
- Item 7: Emulating Autoconf Text Replacement Techniques
- Item 8: Using the Autoconf Archive Project
- Item 9: Using Incremental Installation Techniques
- Item 10: Using Generated Source Code
- Item 11: Disabling Undesirable Targets
- Item 12: Watch Those Tab Characters!
- Item 13: Packaging Choices
- Wrapping Up
- INDEX.