2007-04-24

Finding a replacement for autoconf/make

In a post I derided having to use autoconf and GNU Make. In a comment Alexander Dymo reminded me that KDE and many of its associated projects have moved over to CMake. Now I am sure KDE's build process is at least as complicated as Python's, especially since it contains a bunch of external projects which Python itself now does (such as the sqlite3 and ctypes libraries).

That has me thinking that after I get my TODO list done (mostly moving the tracker, closing some bugs, and then getting Python to use my import implementation), I will need a new Python project. Fixing the bloody build system is probably a good one. =)

But what will I need? I need to replace both autoconf and GNU Make. Usually the trick is replacing autoconf as we have a bunch of IFDEFs in various places that activate the compilation of a method or function on an object based on whether the underlying C implementation exposes something. We also have a ton of macros that make sure that certain values (such as Py_ssize_t) are at a guaranteed width.

But portability is really critical. Python runs on basically any platform that has a shell, GNU Make, and a C89 compiler. That portability cannot be lost.

So who seem to be the bigger players out there? Now granted I have not researched this at all and this is just based on my various readings around the web and keeping an eye on this topic since I hate autoconf and GNU Make so much. But there seems to be about two projects that have really tried to replace these two tools (or at least GNU Make):

  • CMake (major project - KDE 4). KDE is a big project. The fact that they moved over to it and seem to have been happy with the switch is a big plus. Minus is that I don't know how active development is as the news page has as its last announcement that KDE 4 was using the tool. It generates Makefiles and such so it is just as portable which is great.
  • Bakefile (major project - wxWidgets). Considering how many different operating systems wxWidgets builds on this speaks well for Bakefile. They had a release in February which is encouraging, although it was version 0.2.2. I don't know how mature Bakefile is. But it is written in Python which is a (minor) perk. It also generates Makefiles which makes it very portable.
I would have listed Aap, but it has not had a new news item since 2004! And SCons can't be listed as it requires Python to be installed; doesn't work when the thing you are trying to build is Python. =). There are probably more, but these are the two that I know of off the top of my head.

As I said, this might be a project that I tackle after I finish my Python TODO list (which is already long), so it will be months before I even consider seriously looking at this.