1

Are there any existing build systems with the following criteria?

  • Nestable/Recursive. I.e. there is no "top" level build file like in CMake or (non-recursive) make or just about every other build system.
  • In-source builds. This is required for a build system to be cleanly nestable/recursive.
  • Automatic dependency scanning for many languages
  • Configuration files with declarative rather than imperative syntax
  • Configuration file Syntax supports adding arbitrary custom build rules
  • No IDE project generation bloat
  • No showstoppers for cross-platform implementation
  • Hash based change detection (or at least ~something) better than timestamps
  • Free software

Basically, I want something that is up to the task of managing software build dependencies system-wide, but is still minimalist and efficient. I want a spiritual successor to make that is adoptable by a majority of the open-source world. What comes the closest?

Andrew Wagner
  • 22,677
  • 21
  • 86
  • 100
  • You may not want to have a recursive system, depending on what you mean by the term. See [Recursive Make Considered Harmful](http://miller.emu.id.au/pmiller/books/rmch/) for a very interesting read on this topic, and see also this other StackOverflow question: http://stackoverflow.com/q/559216/223837. – MarnixKlooster ReinstateMonica Jan 24 '13 at 06:03
  • take a look at fab http://fabutil.org. It meets several of these requirements depending on specifically what you mean. Notably, it does "nestable" well, and has integrated dependency discovery, though currently only for a few languages (but the discovery facility is extensible) – Todd Freed Aug 02 '13 at 05:00

3 Answers3

1

Tup looks interesting...

http://gittup.org/tup/

and djb redo:

https://github.com/apenwarr/redo/

and shake:

http://hackage.haskell.org/package/shake

Andrew Wagner
  • 22,677
  • 21
  • 86
  • 100
  • I read some more, and it looks like tup and redo both set up databases at some root level. – Andrew Wagner Nov 14 '12 at 19:39
  • 2
    Oh, but wow, the tup dev actually has a toy linux distro that imports everything as git submodules and builds everything with tup! http://gittup.org/gittup/ – Andrew Wagner Nov 14 '12 at 20:05
0

Makepp comes close, and I have used it. For some reason it doesn't have much traction, though... Potential downsides:

  • Implemented in perl rather than a systems programming language, so fewer devs interested in hacking on it?
  • Not in apt, so harder to take seriously
  • Inherits syntax from Make; doesn't really enforce ONE correct way of doing things
  • Slow builds
  • Subdirectories don't inherit information from parents
Andrew Wagner
  • 22,677
  • 21
  • 86
  • 100
0

The ninja infrastructure looks interesting. It isn't a standalone build system, but maybe it will catalyze someone into writing a very elegant front-end. And perhaps CMake supporting it as a back-end will speed it's adoption.

http://martine.github.com/ninja/

Andrew Wagner
  • 22,677
  • 21
  • 86
  • 100