Autotools Come Home

With our experience as Gentoo developers, me and Luca have had experience with a wide range of build systems; while there are obvious degrees of goodness/badness in build system worlds, we express our preference for autotools over most of the custom build systems, and especially over cmake-based build systems, that seem to be high on the tide thanks to KDE in the last two years.

I have recently written my views on build systems: in which I explain why I dislike CMake and why I don’t mind it when it is replacing a very-custom bad build system. The one reason I gave for using CMake is the lack of support for Microsoft Visual C++ Compiler, which is needed by some type of projects under Windows (GCC still lacks way too many features); this starts to become a moot point.

Indeed if you look at the NEWS file for the latest release (unleashed yesterday) 1.11, there is this note:

– The `depcomp’ and `compile’ scripts now work with MSVC under MSYS.

This means that when running configure scripts under MSYS (which means having most of the POSIX/GNU tools available under the Windows terminal prompt), it’s possible to use the Microsoft compiler, thanks to the compile wrapper script. Of course this does not mean the features are on par with CMake yet, mostly because all the configure scripts I’ve seen up to now seem to expect GCC or compatible compilers, which means that it will require for more complex tests, and especially macro archives, to replace the Visual Studio project files. Also, CMake having a fairly standard way to handle options and extra dependencies, can have a GUI to select those, where autotools are still tremendously fragmented in that regard.

Additionally, one of the most-recreated and probably useless features, the Linux-style quiet-but-not-entirely build, is now implemented directly in automake through the silent-make option. While I don’t see much point in calling that a killer feature I’m sure there are people who are interested in seeing that.

While many people seem to think that autotools are dead and that they should disappear, there is actually fairly active development behind them, and the whole thing is likely going to progress and improve over the next months. Maybe I should find the time to try making the compile wrapper script work with Borland’s compiler too, of which I have a license; it would be one feature that CMake is missing.

At any rate, I’ll probably extend my autotools guide for automake 1.11, together with a few extras, in the next few days. And maybe I can continue my Autotools Mythbuster series that I’ve been writing on my blog for a while.

8 Replies to “Autotools Come Home”

  1. > Additionally, one of the most-recreated and probably useless
    > features, the Linux-style quiet-but-not-entirely build, is now
    > implemented directly in automake through the silent-make
    > option.

    Nah, not useless. I really love that feature. Without it, I have a hard time telling compiler warnings and normal spam apart. It was about time they implemented it.

  2. They implemented it in a really sucky way though. Having a configure option to turn it on instead of using a ~/.automake-1.11/config file is a pain in the ass. Combine that with the package needing to specifically enable it and you have a feature that will mostly go unused.

  3. You can
    echo enable_silent_rules=yes >> /usr/local/share/config.site

    which is about the equivalent for a config file.

  4. I still find it useless.. true you have difficulties to find the warnings in the default build, but “make -s” just gets the job done without having to mock up with the makefiles, imho.

  5. Why, what's the problem with it? I fail to see how no compilation progress at all is better than the new silent-rules option? What's the drawback?

  6. silent-rules require GNU make and does not work with any other make implementation right now; it also adds quite a few indirection in the code; and it really does not help much to know what it's building at a given point when using parallel build.

    So yeah I think there are a few (smaller) drawbacks, and the added complexity is (IMHO) not worth it.

  7. Hmm, I see. Does that mean that if I enable silent-rules by default (“AM_SILENT_RULES([yes])” in my configure.ac), my project won't build on systems without GNU make?

Leave a Reply

Your email address will not be published. Required fields are marked *