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 ( http://www.scons.org/ ): 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 http://www.cmake.org/HTML/Index.html

C Rose
Friday, April 30, 2004

You should probably also read this paper:
http://www.pcug.org.au/~millerp/rmch/recu-make-cons-harm.html

Michael Kohne
Friday, April 30, 2004

Check out this thread about Final Builder:

http://discuss.fogcreek.com/joelonsoftware/default.asp?cmd=show&ixPost=30716

MX
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 (www.a-a-p.org), 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.

sid6581
Friday, April 30, 2004

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

Best regards,

Tom Payne
Monday, May 03, 2004

*  Recent Topics

*  Fog Creek Home