[CMake] memoized build systems, opinions

David Manura dm.list at math2.org
Fri Mar 11 03:19:59 EST 2011


I've seen a small following in "memoized build systems" as an
alternative to the traditional approach of building a dependency tree,
but these projects are still emerging and its difficult finding
information on this approach.  Does anyone have real world experience
of the strengths/weaknesses of these systems in large projects
compared to the more well known systems like cmake and its current
generators?  One concern is how parallelism would be handled, but
apparently there is some support for that.

mem
  http://srp.github.com/mem/getting-started.html
  https://github.com/srp/mem/blob/master/doc/source/mem.rst
  - memoization

fbuild
  https://github.com/felix-lang/fbuild/
  https://github.com/felix-lang/fbuild/raw/master/docs/introducing-fbuild.markdown
  http://www.reddit.com/r/programming/comments/8wezu/fbuild_01_build_system_released_with_cross/
  - memoization, parallelism (is used to build the felix language)
  http://news.ycombinator.com/item?id=2105894
  "I believe the key insight that we all independently made is that we
can use the procedural execution stack for the dependency tree, and
cache the function arguments and results to avoid work duplication. I
believe this helps someone reason about what's going on in the build
system compared to the declarative make systems because you can easily
trace the inputs and outputs of some dependency."

wonderbuild
  http://retropaganda.info/~bohan/work/sf/psycle/branches/bohan/wonderbuild/wonderbuild/README
  http://retropaganda.info/~bohan/work/sf/psycle/branches/bohan/wonderbuild/benchmarks/time.xml
  - memoization, fast, parallelism

memoize
  http://benno.id.au/blog/2008/06/06/memoize-build-framework

fabricate
  http://code.google.com/p/fabricate/
  http://code.google.com/p/fabricate/wiki/HowItWorks
  - finds dependencies automatically
  - "inspired by Bill McCloskey's memoize, but fabricate works under
Windows as well by using file access times instead of strace if strace
is not available on your file system"


More information about the CMake mailing list