GNU Automake for Version 1.16.3, 19 November 2020

Total Page:16

File Type:pdf, Size:1020Kb

GNU Automake for Version 1.16.3, 19 November 2020 GNU Automake For version 1.16.3, 19 November 2020 David MacKenzie Tom Tromey Alexandre Duret-Lutz Ralf Wildenhues Stefano Lattarini This manual is for GNU Automake (version 1.16.3, 19 November 2020), a program that creates GNU standards-compliant Makefiles from template files. Copyright c 1995{2020 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." i Table of Contents 1 Introduction ::::::::::::::::::::::::::::::::::::: 1 2 An Introduction to the Autotools:::::::::::::: 1 2.1 Introducing the GNU Build System ::::::::::::::::::::::::::::: 1 2.2 Use Cases for the GNU Build System ::::::::::::::::::::::::::: 2 2.2.1 Basic Installation :::::::::::::::::::::::::::::::::::::::::: 2 2.2.2 Standard Makefile Targets :::::::::::::::::::::::::::::::: 4 2.2.3 Standard Directory Variables :::::::::::::::::::::::::::::: 4 2.2.4 Standard Configuration Variables :::::::::::::::::::::::::: 5 2.2.5 Overriding Default Configuration Setting with config.site :: 6 2.2.6 Parallel Build Trees (a.k.a. VPATH Builds) :::::::::::::::: 6 2.2.7 Two-Part Installation :::::::::::::::::::::::::::::::::::::: 8 2.2.8 Cross-Compilation ::::::::::::::::::::::::::::::::::::::::: 9 2.2.9 Renaming Programs at Install Time :::::::::::::::::::::: 10 2.2.10 Building Binary Packages Using DESTDIR :::::::::::::: 10 2.2.11 Preparing Distributions:::::::::::::::::::::::::::::::::: 11 2.2.12 Automatic Dependency Tracking::::::::::::::::::::::::: 11 2.2.13 Nested Packages ::::::::::::::::::::::::::::::::::::::::: 12 2.3 How Autotools Help ::::::::::::::::::::::::::::::::::::::::::: 13 2.4 A Small Hello World :::::::::::::::::::::::::::::::::::::::::: 13 2.4.1 Creating amhello-1.0.tar.gz:::::::::::::::::::::::::::: 13 2.4.2 amhello's configure.ac Setup Explained :::::::::::::::: 16 2.4.3 amhello's Makefile.am Setup Explained:::::::::::::::::: 17 3 General ideas ::::::::::::::::::::::::::::::::::: 18 3.1 General Operation::::::::::::::::::::::::::::::::::::::::::::: 18 3.2 Strictness ::::::::::::::::::::::::::::::::::::::::::::::::::::: 19 3.3 The Uniform Naming Scheme:::::::::::::::::::::::::::::::::: 21 3.4 Staying below the command line length limit::::::::::::::::::: 22 3.5 How derived variables are named :::::::::::::::::::::::::::::: 23 3.6 Variables reserved for the user ::::::::::::::::::::::::::::::::: 23 3.7 Programs automake might require ::::::::::::::::::::::::::::: 24 4 Some example packages:::::::::::::::::::::::: 25 4.1 A simple example, start to finish::::::::::::::::::::::::::::::: 25 4.2 Building true and false :::::::::::::::::::::::::::::::::::::::: 26 5 Creating a Makefile.in::::::::::::::::::::::::: 27 ii 6 Scanning configure.ac, using aclocal::::::::: 30 6.1 Configuration requirements :::::::::::::::::::::::::::::::::::: 30 6.2 Other things Automake recognizes ::::::::::::::::::::::::::::: 32 6.3 Auto-generating aclocal.m4 :::::::::::::::::::::::::::::::::::: 36 6.3.1 aclocal Options ::::::::::::::::::::::::::::::::::::::::::: 36 6.3.2 Macro Search Path ::::::::::::::::::::::::::::::::::::::: 38 6.3.3 Writing your own aclocal macros :::::::::::::::::::::::::: 40 6.3.4 Handling Local Macros ::::::::::::::::::::::::::::::::::: 41 6.3.5 Serial Numbers ::::::::::::::::::::::::::::::::::::::::::: 42 6.3.6 The Future of aclocal ::::::::::::::::::::::::::::::::::: 44 6.4 Autoconf macros supplied with Automake ::::::::::::::::::::: 45 6.4.1 Public Macros :::::::::::::::::::::::::::::::::::::::::::: 45 6.4.2 Obsolete Macros :::::::::::::::::::::::::::::::::::::::::: 47 6.4.3 Private Macros ::::::::::::::::::::::::::::::::::::::::::: 47 7 Directories :::::::::::::::::::::::::::::::::::::: 48 7.1 Recursing subdirectories ::::::::::::::::::::::::::::::::::::::: 48 7.2 Conditional Subdirectories ::::::::::::::::::::::::::::::::::::: 49 7.2.1 SUBDIRS vs. DIST_SUBDIRS ::::::::::::::::::::::::::::::: 50 7.2.2 Subdirectories with AM_CONDITIONAL :::::::::::::::::::::: 50 7.2.3 Subdirectories with AC_SUBST ::::::::::::::::::::::::::::: 51 7.2.4 Unconfigured Subdirectories :::::::::::::::::::::::::::::: 51 7.3 An Alternative Approach to Subdirectories :::::::::::::::::::: 52 7.4 Nesting Packages :::::::::::::::::::::::::::::::::::::::::::::: 53 8 Building Programs and Libraries ::::::::::::: 54 8.1 Building a program :::::::::::::::::::::::::::::::::::::::::::: 54 8.1.1 Defining program sources ::::::::::::::::::::::::::::::::: 55 8.1.2 Linking the program :::::::::::::::::::::::::::::::::::::: 55 8.1.3 Conditional compilation of sources :::::::::::::::::::::::: 56 8.1.4 Conditional compilation of programs :::::::::::::::::::::: 58 8.2 Building a library ::::::::::::::::::::::::::::::::::::::::::::: 58 8.3 Building a Shared Library ::::::::::::::::::::::::::::::::::::: 59 8.3.1 The Libtool Concept:::::::::::::::::::::::::::::::::::::: 59 8.3.2 Building Libtool Libraries::::::::::::::::::::::::::::::::: 60 8.3.3 Building Libtool Libraries Conditionally :::::::::::::::::: 60 8.3.4 Libtool Libraries with Conditional Sources :::::::::::::::: 61 8.3.5 Libtool Convenience Libraries::::::::::::::::::::::::::::: 62 8.3.6 Libtool Modules :::::::::::::::::::::::::::::::::::::::::: 63 8.3.7 _LIBADD, _LDFLAGS, and _LIBTOOLFLAGS :::::::::::::::::: 64 8.3.8 LTLIBOBJS and LTALLOCA ::::::::::::::::::::::::::::::::: 64 8.3.9 Common Issues Related to Libtool's Use :::::::::::::::::: 64 8.3.9.1 Error: `required file `./ltmain.sh' not found' ::: 64 8.3.9.2 Objects `created with both libtool and without' :: 65 8.4 Program and Library Variables :::::::::::::::::::::::::::::::: 65 8.5 Default _SOURCES ::::::::::::::::::::::::::::::::::::::::::::: 69 8.6 Special handling for LIBOBJS and ALLOCA :::::::::::::::::::::: 70 iii 8.7 Variables used when building a program ::::::::::::::::::::::: 72 8.8 Yacc and Lex support ::::::::::::::::::::::::::::::::::::::::: 73 8.9 C++ Support ::::::::::::::::::::::::::::::::::::::::::::::::: 75 8.10 Objective C Support ::::::::::::::::::::::::::::::::::::::::: 76 8.11 Objective C++ Support :::::::::::::::::::::::::::::::::::::: 76 8.12 Unified Parallel C Support ::::::::::::::::::::::::::::::::::: 76 8.13 Assembly Support :::::::::::::::::::::::::::::::::::::::::::: 77 8.14 Fortran 77 Support ::::::::::::::::::::::::::::::::::::::::::: 77 8.14.1 Preprocessing Fortran 77 :::::::::::::::::::::::::::::::: 78 8.14.2 Compiling Fortran 77 Files :::::::::::::::::::::::::::::: 78 8.14.3 Mixing Fortran 77 With C and C++::::::::::::::::::::: 78 8.14.3.1 How the Linker is Chosen ::::::::::::::::::::::::::: 79 8.15 Fortran 9x Support::::::::::::::::::::::::::::::::::::::::::: 80 8.15.1 Compiling Fortran 9x Files :::::::::::::::::::::::::::::: 80 8.16 Compiling Java sources using gcj ::::::::::::::::::::::::::::: 80 8.17 Vala Support ::::::::::::::::::::::::::::::::::::::::::::::::: 81 8.18 Support for Other Languages ::::::::::::::::::::::::::::::::: 81 8.19 Automatic dependency tracking :::::::::::::::::::::::::::::: 82 8.20 Support for executable extensions::::::::::::::::::::::::::::: 82 9 Other Derived Objects :::::::::::::::::::::::: 83 9.1 Executable Scripts::::::::::::::::::::::::::::::::::::::::::::: 83 9.2 Header files ::::::::::::::::::::::::::::::::::::::::::::::::::: 84 9.3 Architecture-independent data files :::::::::::::::::::::::::::: 85 9.4 Built Sources :::::::::::::::::::::::::::::::::::::::::::::::::: 85 9.4.1 Built Sources Example:::::::::::::::::::::::::::::::::::: 86 10 Other GNU Tools::::::::::::::::::::::::::::: 89 10.1 Emacs Lisp :::::::::::::::::::::::::::::::::::::::::::::::::: 89 10.2 Gettext :::::::::::::::::::::::::::::::::::::::::::::::::::::: 89 10.3 Libtool ::::::::::::::::::::::::::::::::::::::::::::::::::::::: 90 10.4 Java bytecode compilation (deprecated)::::::::::::::::::::::: 90 10.5 Python::::::::::::::::::::::::::::::::::::::::::::::::::::::: 91 11 Building documentation :::::::::::::::::::::: 92 11.1 Texinfo::::::::::::::::::::::::::::::::::::::::::::::::::::::: 92 11.2 Man Pages ::::::::::::::::::::::::::::::::::::::::::::::::::: 95 12 What Gets Installed :::::::::::::::::::::::::: 96 12.1 Basics of Installation ::::::::::::::::::::::::::::::::::::::::: 96 12.2 The Two Parts of Install ::::::::::::::::::::::::::::::::::::: 96 12.3 Extending Installation :::::::::::::::::::::::::::::::::::::::: 97 12.4 Staged Installs ::::::::::::::::::::::::::::::::::::::::::::::: 97 12.5 Install Rules for the User ::::::::::::::::::::::::::::::::::::: 97 13 What Gets Cleaned::::::::::::::::::::::::::: 98 iv 14 What Goes in a Distribution :::::::::::::::: 98 14.1 Basics of Distribution :::::::::::::::::::::::::::::::::::::::: 98 14.2 Fine-grained Distribution Control::::::::::::::::::::::::::::: 99 14.3 The dist Hook::::::::::::::::::::::::::::::::::::::::::::::: 100 14.4 Checking the Distribution ::::::::::::::::::::::::::::::::::: 100 14.5 The Types of Distributions :::::::::::::::::::::::::::::::::: 103 15 Support for test suites :::::::::::::::::::::: 104 15.1 Generalities about Testing::::::::::::::::::::::::::::::::::: 104 15.2 Simple Tests :::::::::::::::::::::::::::::::::::::::::::::::: 105 15.2.1 Scripts-based Testsuites :::::::::::::::::::::::::::::::: 105 15.2.2 Older (and discouraged) serial test harness:::::::::::::: 107 15.2.3 Parallel Test Harness :::::::::::::::::::::::::::::::::::
Recommended publications
  • Program Library HOWTO David A
    Program Library HOWTO David A. Wheeler version 1.36, 15 May 2010 This HOWTO for programmers discusses how to create and use program libraries on Linux. This includes static libraries, shared libraries, and dynamically loaded libraries. Table of Contents Introduction...........................................................................................................................3 Static Libraries.......................................................................................................................3 Shared Libraries....................................................................................................................4 Dynamically Loaded (DL) Libraries...............................................................................11 Miscellaneous......................................................................................................................14 More Examples....................................................................................................................18 Other Information Sources...............................................................................................22 Copyright and License.......................................................................................................23 Introduction This HOWTO for programmers discusses how to create and use program libraries on Linux using the GNU toolset. A “program library” is simply a file containing com- piled code (and data) that is to be incorporated later into a program; program libraries allow
    [Show full text]
  • Source Code Trees in the VALLEY of THE
    PROGRAMMING GNOME Source code trees IN THE VALLEY OF THE CODETHORSTEN FISCHER So you’ve just like the one in Listing 1. Not too complex, eh? written yet another Unfortunately, creating a Makefile isn’t always the terrific GNOME best solution, as assumptions on programs program. Great! But locations, path names and others things may not be does it, like so many true in all cases, forcing the user to edit the file in other great programs, order to get it to work properly. lack something in terms of ease of installation? Even the Listing 1: A simple Makefile for a GNOME 1: CC=/usr/bin/gcc best and easiest to use programs 2: CFLAGS=`gnome-config —cflags gnome gnomeui` will cause headaches if you have to 3: LDFLAGS=`gnome-config —libs gnome gnomeui` type in lines like this, 4: OBJ=example.o one.o two.o 5: BINARIES=example With the help of gcc -c sourcee.c gnome-config —libs —cflags 6: gnome gnomeui gnomecanvaspixbuf -o sourcee.o 7: all: $(BINARIES) Automake and Autoconf, 8: you can create easily perhaps repeated for each of the files, and maybe 9: example: $(OBJ) with additional compiler flags too, only to then 10: $(CC) $(LDFLAGS) -o $@ $(OBJ) installed source code demand that everything is linked. And at the end, 11: do you then also have to copy the finished binary 12: .c.o: text trees. Read on to 13: $(CC) $(CFLAGS) -c $< manually into the destination directory? Instead, 14: find out how. wouldn’t you rather have an easy, portable and 15: clean: quick installation process? Well, you can – if you 16: rm -rf $(OBJ) $(BINARIES) know how.
    [Show full text]
  • Red Hat Enterprise Linux 6 Developer Guide
    Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Dave Brolley William Cohen Roland Grunberg Aldy Hernandez Karsten Hopp Jakub Jelinek Developer Guide Jeff Johnston Benjamin Kosnik Aleksander Kurtakov Chris Moller Phil Muldoon Andrew Overholt Charley Wang Kent Sebastian Red Hat Enterprise Linux 6 Developer Guide An introduction to application development tools in Red Hat Enterprise Linux 6 Edition 0 Author Dave Brolley [email protected] Author William Cohen [email protected] Author Roland Grunberg [email protected] Author Aldy Hernandez [email protected] Author Karsten Hopp [email protected] Author Jakub Jelinek [email protected] Author Jeff Johnston [email protected] Author Benjamin Kosnik [email protected] Author Aleksander Kurtakov [email protected] Author Chris Moller [email protected] Author Phil Muldoon [email protected] Author Andrew Overholt [email protected] Author Charley Wang [email protected] Author Kent Sebastian [email protected] Editor Don Domingo [email protected] Editor Jacquelynn East [email protected] Copyright © 2010 Red Hat, Inc. and others. The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution–Share Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at http://creativecommons.org/licenses/by-sa/3.0/. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version. Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.
    [Show full text]
  • GNU Build System
    Maemo Diablo Reference Manual for maemo 4.1 GNU Build System December 22, 2008 Contents 1 GNU Build System 2 1.1 Introduction .............................. 2 1.2 GNU Make and Makefiles ...................... 2 1.2.1 Simplest Real Example .................... 3 1.2.2 Anatomy of Makefile ..................... 6 1.2.3 Default Goal .......................... 7 1.2.4 On Names of Makefiles ................... 7 1.2.5 Questions ........................... 8 1.2.6 Adding Make Goals ..................... 8 1.2.7 Making One Target at a Time ................ 9 1.2.8 PHONY Keyword ...................... 9 1.2.9 Specifying Default Goal ................... 10 1.2.10 Other Common Phony Goals ................ 11 1.2.11 Variables in Makefiles .................... 11 1.2.12 Variable Flavors ........................ 11 1.2.13 Recursive Variables ...................... 12 1.2.14 Simple Variables ....................... 13 1.2.15 Automatic Variables ..................... 14 1.2.16 Integrating with Pkg-Config ................ 15 1.3 GNU Autotools ............................ 16 1.3.1 Brief History of Managing Portability ........... 17 1.3.2 GNU Autoconf ........................ 18 1.3.3 Substitutions ......................... 22 1.3.4 Introducing Automake .................... 24 1.3.5 Checking for Distribution Sanity .............. 29 1.3.6 Cleaning up .......................... 29 1.3.7 Integration with Pkg-Config ................ 30 1 Chapter 1 GNU Build System 1.1 Introduction The following code examples are used in this chapter: simple-make-files • autoconf-automake • 1.2 GNU Make and Makefiles The make program from the GNU project is a powerful tool to aid implementing automation in the software building process. Beside this, it can be used to automate any task that uses files and in which these files are transformed into some other form.
    [Show full text]
  • Studying the Real World Today's Topics
    Studying the real world Today's topics Free and open source software (FOSS) What is it, who uses it, history Making the most of other people's software Learning from, using, and contributing Learning about your own system Using tools to understand software without source Free and open source software Access to source code Free = freedom to use, modify, copy Some potential benefits Can build for different platforms and needs Development driven by community Different perspectives and ideas More people looking at the code for bugs/security issues Structure Volunteers, sponsored by companies Generally anyone can propose ideas and submit code Different structures in charge of what features/code gets in Free and open source software Tons of FOSS out there Nearly everything on myth Desktop applications (Firefox, Chromium, LibreOffice) Programming tools (compilers, libraries, IDEs) Servers (Apache web server, MySQL) Many companies contribute to FOSS Android core Apple Darwin Microsoft .NET A brief history of FOSS 1960s: Software distributed with hardware Source included, users could fix bugs 1970s: Start of software licensing 1974: Software is copyrightable 1975: First license for UNIX sold 1980s: Popularity of closed-source software Software valued independent of hardware Richard Stallman Started the free software movement (1983) The GNU project GNU = GNU's Not Unix An operating system with unix-like interface GNU General Public License Free software: users have access to source, can modify and redistribute Must share modifications under same
    [Show full text]
  • Beginning Portable Shell Scripting from Novice to Professional
    Beginning Portable Shell Scripting From Novice to Professional Peter Seebach 10436fmfinal 1 10/23/08 10:40:24 PM Beginning Portable Shell Scripting: From Novice to Professional Copyright © 2008 by Peter Seebach All rights reserved. No part of this work may be reproduced or transmitted in any form or by any means, electronic or mechanical, including photocopying, recording, or by any information storage or retrieval system, without the prior written permission of the copyright owner and the publisher. ISBN-13 (pbk): 978-1-4302-1043-6 ISBN-10 (pbk): 1-4302-1043-5 ISBN-13 (electronic): 978-1-4302-1044-3 ISBN-10 (electronic): 1-4302-1044-3 Printed and bound in the United States of America 9 8 7 6 5 4 3 2 1 Trademarked names may appear in this book. Rather than use a trademark symbol with every occurrence of a trademarked name, we use the names only in an editorial fashion and to the benefit of the trademark owner, with no intention of infringement of the trademark. Lead Editor: Frank Pohlmann Technical Reviewer: Gary V. Vaughan Editorial Board: Clay Andres, Steve Anglin, Ewan Buckingham, Tony Campbell, Gary Cornell, Jonathan Gennick, Michelle Lowman, Matthew Moodie, Jeffrey Pepper, Frank Pohlmann, Ben Renow-Clarke, Dominic Shakeshaft, Matt Wade, Tom Welsh Project Manager: Richard Dal Porto Copy Editor: Kim Benbow Associate Production Director: Kari Brooks-Copony Production Editor: Katie Stence Compositor: Linda Weidemann, Wolf Creek Press Proofreader: Dan Shaw Indexer: Broccoli Information Management Cover Designer: Kurt Krames Manufacturing Director: Tom Debolski Distributed to the book trade worldwide by Springer-Verlag New York, Inc., 233 Spring Street, 6th Floor, New York, NY 10013.
    [Show full text]
  • Emacspeak — the Complete Audio Desktop User Manual
    Emacspeak | The Complete Audio Desktop User Manual T. V. Raman Last Updated: 19 November 2016 Copyright c 1994{2016 T. V. Raman. All Rights Reserved. Permission is granted to make and distribute verbatim copies of this manual without charge provided the copyright notice and this permission notice are preserved on all copies. Short Contents Emacspeak :::::::::::::::::::::::::::::::::::::::::::::: 1 1 Copyright ::::::::::::::::::::::::::::::::::::::::::: 2 2 Announcing Emacspeak Manual 2nd Edition As An Open Source Project ::::::::::::::::::::::::::::::::::::::::::::: 3 3 Background :::::::::::::::::::::::::::::::::::::::::: 4 4 Introduction ::::::::::::::::::::::::::::::::::::::::: 6 5 Installation Instructions :::::::::::::::::::::::::::::::: 7 6 Basic Usage. ::::::::::::::::::::::::::::::::::::::::: 9 7 The Emacspeak Audio Desktop. :::::::::::::::::::::::: 19 8 Voice Lock :::::::::::::::::::::::::::::::::::::::::: 22 9 Using Online Help With Emacspeak. :::::::::::::::::::: 24 10 Emacs Packages. ::::::::::::::::::::::::::::::::::::: 26 11 Running Terminal Based Applications. ::::::::::::::::::: 45 12 Emacspeak Commands And Options::::::::::::::::::::: 49 13 Emacspeak Keyboard Commands. :::::::::::::::::::::: 361 14 TTS Servers ::::::::::::::::::::::::::::::::::::::: 362 15 Acknowledgments.::::::::::::::::::::::::::::::::::: 366 16 Concept Index :::::::::::::::::::::::::::::::::::::: 367 17 Key Index ::::::::::::::::::::::::::::::::::::::::: 368 Table of Contents Emacspeak :::::::::::::::::::::::::::::::::::::::::: 1 1 Copyright :::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • The GNOME Desktop Environment
    The GNOME desktop environment Miguel de Icaza ([email protected]) Instituto de Ciencias Nucleares, UNAM Elliot Lee ([email protected]) Federico Mena ([email protected]) Instituto de Ciencias Nucleares, UNAM Tom Tromey ([email protected]) April 27, 1998 Abstract We present an overview of the free GNU Network Object Model Environment (GNOME). GNOME is a suite of X11 GUI applications that provides joy to users and hackers alike. It has been designed for extensibility and automation by using CORBA and scripting languages throughout the code. GNOME is licensed under the terms of the GNU GPL and the GNU LGPL and has been developed on the Internet by a loosely-coupled team of programmers. 1 Motivation Free operating systems1 are excellent at providing server-class services, and so are often the ideal choice for a server machine. However, the lack of a consistent user interface and of consumer-targeted applications has prevented free operating systems from reaching the vast majority of users — the desktop users. As such, the benefits of free software have only been enjoyed by the technically savvy computer user community. Most users are still locked into proprietary solutions for their desktop environments. By using GNOME, free operating systems will have a complete, user-friendly desktop which will provide users with powerful and easy-to-use graphical applications. Many people have suggested that the cause for the lack of free user-oriented appli- cations is that these do not provide enough excitement to hackers, as opposed to system- level programming. Since most of the GNOME code had to be written by hackers, we kept them happy: the magic recipe here is to design GNOME around an adrenaline response by trying to use exciting models and ideas in the applications.
    [Show full text]
  • Using GNU Autotools to Manage a “Minimal Project”
    05AAL Ch 04 9/12/00 10:14 AM Page 21 4 Using GNU Autotools to Manage a “Minimal Project” This chapter describes how to manage a minimal project using the GNU Autotools. For this discussion, a minimal project refers to the smallest possible project that can still illustrate a sufficient number of principles related to using the tools. Studying a smaller project makes it easier to understand the more complex interactions between these tools when larger projects require advanced features. The example project used throughout this chapter is a fictitious command interpreter called ‘foonly’. ‘foonly’ is written in C, but like many interpreters, uses a lexical analyzer and a parser expressed using the lex and yacc tools. The package is developed to adhere to the GNU ‘Makefile’ standard, which is the default behavior for Automake. This project does not use many features of the GNU Autotools. The most note- worthy one is libraries; this package does not produce any libraries of its own, so Libtool does not feature them in this chapter. The more complex projects presented in Chapter 7, “A Small GNU Autotools Project” and Chapter 11, “A Large GNU Autotools Project” illustrate how Libtool participates in the build system. The essence of this chapter is to provide a high-level overview of the user-written files and how they interact. 4.1 User-Provided Input Files The smallest project requires the user to provide only two files. The GNU Autotools generate the remainder of the files needed to build the package are in Section 4.2, “Generated Output Files.”
    [Show full text]
  • Autoconf.Pdf
    Autoconf Creating Automatic Configuration Scripts for version 2.66, 2 July 2010 David MacKenzie Ben Elliston Akim Demaille This manual (2 July 2010) is for GNU Autoconf (version 2.66), a package for creating scripts to configure source code packages using templates and an M4 macro package. Copyright c 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 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 the Front-Cover texts being \A GNU Manual," and with the Back-Cover Texts as in (a) below. A copy of the license is included in the section entitled \GNU Free Documentation License." (a) The FSF's Back-Cover Text is: \You have the freedom to copy and modify this GNU manual. Buying copies from the FSF supports it in developing GNU and promoting software freedom." i Table of Contents 1 Introduction::::::::::::::::::::::::::::::::::::: 1 2 The GNU Build System:::::::::::::::::::::::: 3 2.1 Automake:::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.2 Gnulib ::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.3 Libtool::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 2.4 Pointers:::::::::::::::::::::::::::::::::::::::::::::::::::::::: 4 3 Making configure Scripts :::::::::::::::::::::: 5 3.1 Writing `configure.ac' ::::::::::::::::::::::::::::::::::::::::
    [Show full text]
  • GNU Astronomy Utilities
    GNU Astronomy Utilities Astronomical data manipulation and analysis programs and libraries for version 0.15.58-2b10e, 23 September 2021 Mohammad Akhlaghi Gnuastro (source code, book and web page) authors (sorted by number of commits): Mohammad Akhlaghi ([email protected], 1812) Pedram Ashofteh Ardakani ([email protected], 54) Raul Infante-Sainz ([email protected], 34) Mos`eGiordano ([email protected], 29) Vladimir Markelov ([email protected], 18) Sachin Kumar Singh ([email protected], 13) Zahra Sharbaf ([email protected], 12) Nat´aliD. Anzanello ([email protected], 8) Boud Roukema ([email protected], 7) Carlos Morales-Socorro ([email protected], 3) Th´er`eseGodefroy ([email protected], 3) Joseph Putko ([email protected], 2) Samane Raji ([email protected], 2) Alexey Dokuchaev ([email protected], 1) Andreas Stieger ([email protected], 1) Fran¸coisOchsenbein ([email protected], 1) Kartik Ohri ([email protected], 1) Leindert Boogaard ([email protected], 1) Lucas MacQuarrie ([email protected], 1) Madhav Bansal ([email protected], 1) Miguel de Val-Borro ([email protected], 1) Sepideh Eskandarlou ([email protected], 1) This book documents version 0.15.58-2b10e of the GNU Astronomy Utilities (Gnuastro). Gnuastro provides various programs and libraries for astronomical data manipulation and analysis. Copyright c 2015-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, no Front-Cover Texts, and no Back-Cover Texts.
    [Show full text]
  • GNU MP the GNU Multiple Precision Arithmetic Library Edition 6.2.1 14 November 2020
    GNU MP The GNU Multiple Precision Arithmetic Library Edition 6.2.1 14 November 2020 by Torbj¨ornGranlund and the GMP development team This manual describes how to install and use the GNU multiple precision arithmetic library, version 6.2.1. Copyright 1991, 1993-2016, 2018-2020 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 the Front-Cover Texts being \A GNU Manual", and with the Back-Cover Texts being \You have freedom to copy and modify this GNU Manual, like GNU software". A copy of the license is included in Appendix C [GNU Free Documentation License], page 132. i Table of Contents GNU MP Copying Conditions :::::::::::::::::::::::::::::::::::: 1 1 Introduction to GNU MP ::::::::::::::::::::::::::::::::::::: 2 1.1 How to use this Manual :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 2 2 Installing GMP ::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.1 Build Options:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 3 2.2 ABI and ISA :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 8 2.3 Notes for Package Builds:::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 11 2.4 Notes for Particular Systems :::::::::::::::::::::::::::::::::::::::::::::::::::::: 12 2.5 Known Build Problems ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: 14 2.6 Performance
    [Show full text]