Die GNU autotools

Die GNU autotools

Elazar Leibovich elazarl at gmail.com
Tue Jan 11 20:57:43 IST 2011


On Tue, Jan 11, 2011 at 7:09 AM, Shachar Shemesh <shachar at shemesh.biz>wrote:

> Sure, it makes total sense to compare a software that is 93 files, about
> 36,000 lines of code (including tests) and no documented dependencies to
> VLC, 1340 source files, 590,000 lines of code and tons of understandable
> dependencies due to external codecs and stuff. I can see how, except for the
> choice of build system, the two are on par.
>

I really don't think the dependencies and sizes really matters for the
problem I've had, but instead of arguing about it I see your VLC and I raise
you by the go programming language.

The go programming language is a fairly complex beast, is cross compiled to
ARM architecture, support gcc front ends, and does not need any of the
autotools. http://golang.org/doc/install.html

You can probably find small details that don't work exactly as they could
with the autosuite, but this software is working and compiling really easily
with less maintenance hassle for 99.9% of its users. This is a living
testimony that projects can have a good build system and be fairly portable
even without the autosuite, and you must agree with me that the autosuite
isn't exactly straightforward, and makes simple things more complex:

Using autotools for a very simple piece of software still requires a few
> steps:
>
>    1. Move the Makefile to Makefile.in
>    2. Run autoscan
>    3. Edit the configure.in file
>    4. Run autoconf
>    5. Test ./configure
>    6. make any final adjustments
>
> If this is simple, I don't want to know what complicated is. Compare that
to godag http://code.google.com/p/godag/wiki/Compiling or ANT[1], the
initial script which just compiles everything and keeps dependencies is
extremely simple.

Maybe in the old days the autotools was mandatory because, you could not
afford checking things at runtime or compiling things you don't 100% need
into the executable (thus using config.h to ifdef pieces of code out).
But nowadays this is wrong both from practical POV (you can afford those
extra bytes in order to make building the software more straightforward),
and both from philosophical POV, I want the source code to be the same in
all platforms if possible, and defer the checks I have to make to runtime,
this makes things easier (a user has a bug - did you compile your software
with --can-haz-cheeseburget?), autosuite encourage me to go to this
direction.

[1]
<project>
    <target name="compile">
        <mkdir dir="build/classes"/>
        <javac srcdir="src" destdir="build/classes"/>
    </target>

    <target name="jar">
        <mkdir dir="build/jar"/>
        <jar destfile="build/jar/HelloWorld.jar" basedir="build/classes">
        </jar>
    </target>
</project>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.cs.huji.ac.il/pipermail/linux-il/attachments/20110111/f447a8ad/attachment.html>


More information about the Linux-il mailing list