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 3, 2004
Recent Topics
Fog Creek Home
|