|Authors||Gary V. Vaughn, Ben Elliston, Tom Tromey, and Ian Lance Taylor.|
|Title||GNU Autoconf, Automake, and Libtool (2000).|
|Rating||(1=safely ignore; 5=must have!)|
|Reviewer|| Ed Hill.
Copyright © 2002 by Ed Hill |
|Summary||This book is an excellent and relatively gentle introduction for beginners yet contains enough detail to be helpful as a reference book for regular users.|
In 1998, I decided to learn how to learn Gnu Automake and Autoconf by reading the free TeX-Info-based documentation. The motivation was to convert a small suite of scientific engineering programs (about 12kloc as reported by SLOC: http://www.dwheeler.com/sloccount/) from hand-written (HP-UX) make files to a more standard Gnu package based upon the Automake/Autoconf build process. My target OSes were Linux and HP-UX and, after two weeks, the conversion to Automake/Autoconf (and simultaneous port of the code from HP-UX to Linux) was a success. Recently, I decided to revisit the code. I purchased a copy of the "Autotools Book" and, using my suite as a concrete example, began updating the source and converting it to use Libtool in addition to Automake and Autoconf. The following review is based on these experiences.Audience
The Gnu Autoconf, Automake, and Libtool programs are not a clean, well-designed utility suite. Douglas Adams's quote about Vogon space ships ("...looked as if it had been not so much designed as congealed.") is equally applicable to the Autotools. Given the quirky syntax and the inter-dependencies of the tools, the topic is difficult to approach. The most likely Autotools users (and thus the folks most needing this book) are Unix/Linux/BSD programmers, systems administrators, and project managers.
As an introduction to the Autotools, this book is a huge win. It is relatively gentle on the beginners yet contains enough detail to be helpful for intermediate users. As the authors point out in the introduction, the book is not a "definitive reference". The most experienced Autotools hackers may gain something from the book but will probably get the most benefit from corresponding with the tool authors, seeking help from other gurus, and/or delving into the source code.
I think it it would be entirely possible for a beginning developer (one who is completely unfamiliar with the traditional Unix "make" tools) to read the book and start productively using the Gnu Autotools. While rather unlikely, it is even conceivable that a beginning developer could piece together how to use the Autotools aided only by the source code available from the multitudes of Free or Open Source projects that rely upon them. But for most programmers or admins, learning how to use the Autotools will require the aide of this book, a few existing real-world projects to be used as examples, and some previous understanding of the traditional Unix/Gnu make tool, Bash or Bourne shell syntax, and some other common Unix/Gnu utilities such as m4.Organization
In my opinion, the greatest benefit to this book is the organization. For a beginner, just trying to answer the question "where do I get started?" can be a confusing and time-consuming process. The complexity and inter-relationships between the various tools can be intimidating. Such beginner questions are exactly what the book excels at answering. The book explains how each tool can be used individually and then shows how they can be used together to create a an automated environment for configuration, building, porting, and installation.
In addition, the book is released under the Open Publication License (v1.0) and is available on-line. I applaud the authors and the publisher for creating this work under such a liberal and convenient license. I hope that more folks will promote this sort of licensing model not only for the increased reproduction and editing freedom that it provides to users but also for the practical advantages such as easy availability.Style
While aimed at beginners, this book is written in a compact and no-nonsense fashion. There are less than a dozen figures and very few paragraphs are wasted on filler. I appreciate the succinct wording and well-formatted lists which helps keep the book both shorter and easier to use as a reference. Its a welcome antidote to the stacks of chaff-filled "Learn ___ in 21 Days" printed in huge fonts with every third page a wasteful "then-click-here" screen shot.Downsides
My biggest complaints are really gripes about the underlying subjects. As mentioned earlier, the Gnu Autotools are not well-designed and can be rather frustrating to learn and use. I had considerable problems sorting out library dependencies in my codes and only discovered two workable solutions after plenty of trial, error, and bash/m4 script reading. Such frustrations are probably a direct result of the very piece-meal, evolutionary history of the Autotools. However, given less than 400 pages, the authors do an admirable job of covering their chosen topics.