GNU Automake ************ This manual is for GNU Automake (version 1.16.5, 18 March 2022), a program that creates GNU standards-compliant Makefiles from template files. Copyright © 1995–2021 Free Software Foundation, Inc. Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, with no Front-Cover texts, and with no Back-Cover Texts. A copy of the license is included in the section entitled “GNU Free Documentation License.”
· Introduction Automake’s purpose · Autotools Introduction An Introduction to the Autotools · Generalities General ideas · Examples Some example packages · automake Invocation Creating a Makefile.in · configure Scanning configure.ac, using aclocal · Directories Declaring subdirectories · Programs Building programs and libraries · Other Objects Other derived objects · Other GNU Tools Other GNU Tools · Documentation Building documentation · Install What gets installed · Clean What gets cleaned · Dist What goes in a distribution · Tests Support for test suites · Rebuilding Automatic rebuilding of Makefile · Options Changing Automake’s behavior · Miscellaneous Miscellaneous rules · Include Including extra files in an Automake template · Conditionals Conditionals · Silencing Make Obtain less verbose output from ‘make’ · Not Enough When Automake is not Enough · Distributing Distributing the Makefile.in · API Versioning About compatibility between Automake versions · Upgrading Upgrading to a Newer Automake Version · FAQ Frequently Asked Questions · Copying This Manual How to make copies of this manual · Indices Indices of variables, macros, and concepts — The Detailed Node Listing — An Introduction to the Autotools · GNU Build System Introducing the GNU Build System · Use Cases Use Cases for the GNU Build System · Why Autotools How Autotools Help · Hello World A Small Hello World Package Use Cases for the GNU Build System · Basic Installation Common installation procedure · Standard Targets A list of standard Makefile targets · Standard Directory Variables A list of standard directory variables · Standard Configuration Variables Using configuration variables · config.site Using a config.site file · VPATH Builds Parallel build trees · Two-Part Install Installing data and programs separately · Cross-Compilation Building for other architectures · Renaming Renaming programs at install time · DESTDIR Building binary packages with DESTDIR · Preparing Distributions Rolling out tarballs · Dependency Tracking Automatic dependency tracking · Nested Packages The GNU Build Systems can be nested A Small Hello World · Creating amhello Create ‘amhello-1.0.tar.gz’ from scratch · amhello's configure.ac Setup Explained · amhello's Makefile.am Setup Explained General ideas · General Operation General operation of Automake · Strictness Standards conformance checking · Uniform The Uniform Naming Scheme · Length Limitations Staying below the command line length limit · Canonicalization How derived variables are named · User Variables Variables reserved for the user · Auxiliary Programs Programs automake might require Some example packages · Complete A simple example, start to finish · true Building true and false Scanning ‘configure.ac’, using ‘aclocal’ · Requirements Configuration requirements · Optional Other things Automake recognizes · aclocal Invocation Auto-generating aclocal.m4 · Macros Autoconf macros supplied with Automake Auto-generating aclocal.m4 · aclocal Options Options supported by aclocal · Macro Search Path How aclocal finds .m4 files · Extending aclocal Writing your own aclocal macros · Local Macros Organizing local macros · Serials Serial lines in Autoconf macros · Future of aclocal aclocal’s scheduled death Autoconf macros supplied with Automake · Public Macros Macros that you can use. · Obsolete Macros Macros that will soon be removed. · Private Macros Macros that you should not use. Directories · Subdirectories Building subdirectories recursively · Conditional Subdirectories Conditionally not building directories · Alternative Subdirectories without recursion · Subpackages Nesting packages Conditional Subdirectories · SUBDIRS vs DIST_SUBDIRS Two sets of directories · Subdirectories with AM_CONDITIONAL Specifying conditional subdirectories · Subdirectories with AC_SUBST Another way for conditional recursion · Unconfigured Subdirectories Not even creating a ‘Makefile’ Building Programs and Libraries · A Program Building a program · A Library Building a library · A Shared Library Building a Libtool library · Program and Library Variables Variables controlling program and library builds · Default _SOURCES Default source files · LIBOBJS Special handling for LIBOBJS and ALLOCA · Program Variables Variables used when building a program · Yacc and Lex Yacc and Lex support · C++ Support Compiling C++ sources · Objective C Support Compiling Objective C sources · Objective C++ Support Compiling Objective C++ sources · Unified Parallel C Support Compiling Unified Parallel C sources · Assembly Support Compiling assembly sources · Fortran 77 Support Compiling Fortran 77 sources · Fortran 9x Support Compiling Fortran 9x sources · Java Support with gcj Compiling Java sources using gcj · Vala Support Compiling Vala sources · Support for Other Languages Compiling other languages · Dependencies Automatic dependency tracking · EXEEXT Support for executable extensions Building a program · Program Sources Defining program sources · Linking Linking with libraries or extra objects · Conditional Sources Handling conditional sources · Conditional Programs Building a program conditionally Building a Shared Library · Libtool Concept Introducing Libtool · Libtool Libraries Declaring Libtool Libraries · Conditional Libtool Libraries Building Libtool Libraries Conditionally · Conditional Libtool Sources Choosing Library Sources Conditionally · Libtool Convenience Libraries Building Convenience Libtool Libraries · Libtool Modules Building Libtool Modules · Libtool Flags Using _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS · LTLIBOBJS Using $(LTLIBOBJS) and $(LTALLOCA) · Libtool Issues Common Issues Related to Libtool’s Use Common Issues Related to Libtool’s Use · Error required file ltmain.sh not found The need to run libtoolize · Objects created both with libtool and without Avoid a specific build race Yacc and Lex support · Linking Multiple Yacc Parsers Fortran 77 Support · Preprocessing Fortran 77 Preprocessing Fortran 77 sources · Compiling Fortran 77 Files Compiling Fortran 77 sources · Mixing Fortran 77 With C and C++ Mixing Fortran 77 With C and C++ Mixing Fortran 77 With C and C++ · How the Linker is Chosen Automatic linker selection Fortran 9x Support · Compiling Fortran 9x Files Compiling Fortran 9x sources Other Derived Objects · Scripts Executable scripts · Headers Header files · Data Architecture-independent data files · Sources Derived sources Built Sources · Built Sources Example Several ways to handle built sources. Other GNU Tools · Emacs Lisp Emacs Lisp · gettext Gettext · Libtool Libtool · Java Java bytecode compilation (deprecated) · Python Python Building documentation · Texinfo Texinfo · Man Pages Man pages What Gets Installed · Basics of Installation What gets installed where · The Two Parts of Install Installing data and programs separately · Extending Installation Adding your own rules for installation · Staged Installs Installation in a temporary location · Install Rules for the User Useful additional rules What Goes in a Distribution · Basics of Distribution Files distributed by default · Fine-grained Distribution Control ‘dist_’ and ‘nodist_’ prefixes · The dist Hook A target for last-minute distribution changes · Checking the Distribution ‘make distcheck’ explained · The Types of Distributions A variety of formats and compression methods Support for test suites · Generalities about Testing Concepts and terminology about testing · Simple Tests Listing test scripts in ‘TESTS’ · Custom Test Drivers Writing and using custom test drivers · Using the TAP test protocol Integrating test scripts that use the TAP protocol · DejaGnu Tests Interfacing with the ‘dejagnu’ testing framework · Install Tests Running tests on installed packages Simple Tests · Scripts-based Testsuites Automake-specific concepts and terminology · Serial Test Harness Older (and discouraged) serial test harness · Parallel Test Harness Generic concurrent test harness Scripts-based Testsuites · Testsuite Environment Overrides Custom Test Drivers · Overview of Custom Test Drivers Support · Declaring Custom Test Drivers · API for Custom Test Drivers API for Custom Test Drivers · Command-line arguments for test drivers · Log files generation and test results recording · Testsuite progress output Using the TAP test protocol · Introduction to TAP · Use TAP with the Automake test harness · Incompatibilities with other TAP parsers and drivers · Links and external resources on TAP Changing Automake’s Behavior · Options generalities Semantics of Automake option · List of Automake options A comprehensive list of Automake options Miscellaneous Rules · Tags Interfacing to cscope, etags and mkid · Suffixes Handling new file extensions Conditionals · Usage of Conditionals Declaring conditional content · Limits of Conditionals Enclosing complete statements Silencing ‘make’ · Make verbosity Make is verbose by default · Tricks For Silencing Make Standard and generic ways to silence make · Automake Silent Rules How Automake can help in silencing make When Automake Isn’t Enough · Extending Adding new rules or overriding existing ones. · Third-Party Makefiles Integrating Non-Automake ‘Makefile’s. Frequently Asked Questions about Automake · CVS CVS and generated files · maintainer-mode missing and AM_MAINTAINER_MODE · Wildcards Why doesn’t Automake support wildcards? · Limitations on File Names Limitations on source and installed file names · Errors with distclean Files left in build directory after distclean · Flag Variables Ordering CFLAGS vs. AM_CFLAGS vs. mumble_CFLAGS · Renamed Objects Why are object files sometimes renamed? · Per-Object Flags How to simulate per-object flags? · Multiple Outputs Writing rules for tools with many output files · Hard-Coded Install Paths Installing to hard-coded locations · Debugging Make Rules Strategies when things don’t work as expected · Reporting Bugs Feedback on bugs and feature requests Copying This Manual · GNU Free Documentation License License for copying this manual Indices · Macro Index Index of Autoconf macros · Variable Index Index of Makefile variables · General Index General index