Re: Autotools build system

David Fang <[email protected]>
Newsgroups gmane.comp.gnu.gnucap.devel
Message-ID <[email protected]>
Hi Al (and all),

> The "old" build system is really just plain old "make", with a
> tiny configure script to provide an interface like autotools,
> for those who want it.  Where autotools generates a monstrosity
> of a Makefile, the "old" system cats three pieces, each one is
> simple.
>
> Every time I try to do anything with autotools, I give up in
> frustration.

Sometimes, it just takes a little demonstration to show the way.
My early frustrations were quickly forgotten, after I found good examples, 
(read the docs), and became comfortable with writing from scratch.  And 
besides, you can write standard Makefile rules/dependices in automake 
files.

The "thousands" of lines of generated Makefiles include shell scripts for 
structured distribution generation, installation, uninstallation, and 
checking (lots and lots of checking), that many hand-written boilerplate 
Makefiles lack or fall short.  Building is just a piece of software 
development.

> Considering that in my experience, auto* rarely works correctly
> on mainstream systems, I shudder to think what it is like on a
> non-mainstream system.

Perhaps we should look into why you've observed so.  I've had much better 
experience porting to older and less common platforms.  For every build 
system out there, there exist poor examples (I've seen some hideous 
Makefiles in my days -- some people have been so scarred, that they prefer 
to write perl-scripts and straight-line shell scripts over Makefiles.)

> Before auto*, I could always figure out what to hack.
> I don't have confidence in it.  Aside from the fact that I haven't 
> figured out how to gracefully turn debugging features on and off, how to 
> simultaneously do multiple builds with different options, and lots of 
> other things that are trivial with plain old "make", it seems that most 
> of the time I try to build some package that uses autotools, it doesn't 
> work and the messages are not at all useful at figuring out what is 
> needed.  Just compiling and letting it fail gives more useful 
> information.

Don't panic.  Since we are proposing the idea, it will be our 
responsibility to show you how the 'old-way' maps to the 'new-way', and 
convince you to give it another shot.

> I am still bewildered about the relation between autotools and
> "libtool".  It seems to me that if autotools is doing its job,
> libtool isn't necessary.

Libtool's power come from the way it handles dynamically linked libraries, 
including both shared libraries, and plug-ins.  Without it, automake is 
really only capable of working with static (.a) libraries.  For instance, 
libtool helps link your executable so that it can run pre-installed with 
shared libraries (for pre-install testing), and then post-installed. 
IMO, the little nuances between shared libraries on different platforms 
and compilers and linkers are the biggest obstable to portability. 
libtool handles all of it transparently.

> There is a new challenge now with plugins, that I think is
> satisfied by the "old" system and not by the new one ..  With
> the "old" system, a plugin only needs the first part of the
> Makefile, and you can compile with just "make".
>
> So, if the choice is one or the other, let's COMPLETE the old
> one.  I think that is easier than FIXING autoconf.  Also, I
> think the world would appreciate it.  Done right, it could be as
> much of an improvement over autoconf as Git is over RCS.

I'm rather busy until the weekend.  Over the weekend I should have some 
time to work with you, Kevin and other interested developers on drafting 
the autotool files, hopfully getting around to plug-ins.

Remember, we are trying to make your life easier!

Best,

Fang


David Fang
http://www.csl.cornell.edu/~fang/
http://www.achronix.com/
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.