I hate autoconf
Tuesday, April 8th, 2008Update: autoconf and I have a tenuous peace treaty thanks to MSYS. See my post, “Haskell and freeglut at last!”, for an example of what I’ve been able to do :Update
I really do hate autoconf. I’ll probably end up upsetting a few C/C++ guys, but I’m pissed and I have a blog and that means I’m going to blog about being pissed.
I should warn you, I’ve never actually used autoconf in any of my projects. Being a Windows programmer, I’ve never had it easily available. For all I know, it’s a wonderful tool that saves gobs of effort, just not mine.
See, the problem isn’t so much autoconf, it’s the whole “autoconf on Windows” thing. In fact, it’s pretty much building anything on Windows. A whole lot of software projects claim to be ‘cross-platform’, and usually this is done with makefile and #define trickiness, with a lot of checking and configuring and editing done depending on what platform your build tools think you’re running on.
This is where the madness starts.
Why are all of these configuration doodads crammed into one set of headers? That pisses me off. The configuration between Windows and *nix is so wildly different in most cases that the resulting mega-header becomes a steaming pile of near incomprehensible preprocessor syntax that never configures for my Windows box properly. Why don’t these people just make a separate Windows header set if they really want Windows support?
But sometimes this doesn’t matter. Sometimes there’s a configure script that knows what the hell it’s doing, and it’s written in an OS neutral scripting language. Sometimes it just works. But not when autoconf enters the picture. Autoconf, in Windows, is a sign that reads ‘Pain’