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...

Descripción completa

Detalles Bibliográficos
Otros Autores: Calcote, John, 1964- author (author)
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.