Fog Creek Software
Discussion Board

Make-like software, especially scons

We're updating our build system. Our current one is very broken: requires many error-prone manual steps, doesn't compute dependencies automatically, and very slow.

The project is a few million lines of embedded C code, spread across about ten thousand source files. Specific requirements are:
- Must compute dependencies
- Must do "one click" complete build, with no human intervention
- Must run on Windows and Linux (our new toolchain is hosted on Linux, but we need to support the old one on Windows)
- Must support switchable compilers (chip-specific compiler and gcc)
- Must support separate source and build directories
- Would like integration with version control system (currently PVCS, but probably Subversion soon)
- Would like speed, possibly through clever dependency checking and parallel builds
- Would like to run unit tests automatically

What I've considered so far:
- make: a single file would be unmaintainable
- recursive make: no, google for "Recursive Make Considered Harmful"
- Unsermake: looks ok but seems geared towards KDE development and not yet stable
- Scons ( ): very promising
- Ant: seems more geared towards Java development

So, specific questions:
- What other software should I consider? We'd probably prefer an Open Source solution for the transparency and control it provides, but do have a budget for proprietary software if required.
- Does anyone have experience with Scons? I've read most of the website and am about to try it on a toy project, but are there any "gotchas" or is it really as wonderful as it seems?

Many thanks,

Tom Payne
Friday, April 30, 2004

You might also consider a single Makefile generated by a custom automatic script. This is what I use.

Dan Maas
Friday, April 30, 2004

Not sure if it will do what you are looking for, but you should also look at CMake

C Rose
Friday, April 30, 2004

You should probably also read this paper:

Michael Kohne
Friday, April 30, 2004

Check out this thread about Final Builder:

Friday, April 30, 2004

Look at jam or one of its variants like Boost.Jam

Friday, April 30, 2004

I have used scons for substantial projects, and I quite like it.

It satisfies all of the requirements you listed (one note: I think it will allow parallel builds if you've got multiple CPUs, but it doesn't currently have a facility for distributing parts of a build to other computers on the network).

(Full disclosure: I know and have worked with some of the authors of scons)

Exception guy
Friday, April 30, 2004

I'm in the process of converting my builds to AAP (, and although it's a fairly new system it's looking very promising. It takes a while to learn how to use it properly for complicated build scenarios, though. But it is very powerful.

Friday, April 30, 2004

Thanks for all these pointers -- I'll follow them up.

Best regards,

Tom Payne
Monday, May 3, 2004

*  Recent Topics

*  Fog Creek Home