Re: [dev] [OFFTOPIC] Recommended meta-build system

From: Anselm R Garbe <anselm_AT_garbe.us>
Date: Mon, 25 Jan 2010 08:05:11 +0000

Hi David,

2010/1/25 David Tweed <david.tweed_AT_gmail.com>:
> I'm wondering if anyone has had particularly good experiences with any
> meta-build system (cmake, etc) in the following circumstances:
>
> I will have a large codebase which consists of some generic files and
> some processor specific files. (I'm not worried about OS environent
> stuff like "has vsnprintf?" that configure deals with.) In addition,
> it'd be nice to be able to have options like "debugging", "release",
> "grof-compiled", etc, similar to procesor specification. I need to be
> able to select the appropriate files for a given build and compile
> them together to form an executable. It would be preferrable if all
> object files and executables could coexist (because it's a C++
> template heavy source-base that means individual files compile
> relatively slowly, so it'dbe preferrable only to recompile if the
> source has actually changed) using directories or naming conventions.
>
> I've been doing some reading about things like cmake and SCons but
> most strike me as having "built-in logic for their normal way of doing
> things and are relatively clunky if you specify something different".
> (Incidentally, when I say meta-build system I mean that I don't mind
> if it builds things directly or if it outputs makefiles that can be
> invoked.) Does anyone have any experiences of using any tool for this
> kind of purpose?
>
> (One option would be to just have a static makefile and then do some
> include-path hackery to select processor specific directories to pick
> a specific versions of files depending on options and then rely on
> ccache to pick up the correct object file from the cache rather than
> recompiling. But that feels like a hack for avoiding having a more
> expressive build system.)
>
> Many thanks for sharing any experiences,

I recommend mk from Plan 9, the syntax is clean and clearly defined
(not the problem is it BSD make, is it GNU make or is it some archaic
Unix make?). I found that all meta build systems suck in one way or
another -- some do a good job at first glance, like scons, but they
all hide what they really do and in the end it's like trying to
understand configure scripts if something goes wrong. make or mk are
better choices in this regard.

Being involved in a lot of embedded development for the last years I'd
also say that one build chain that I really like is what Google did to
build android (which also inspired my stali efforts). They git rid of
configure and meta build systems nearly completely and are using make
files instead. Well of course the BSDs did this also for decades ;)

But make based build chains seem to be the ones with the least
headaches in my experience. It's worth the extra effort to write all
those make or mk files from scratch, in the end it'll safe you a lot
of time.

Cheers,
Anselm
Received on Mon Jan 25 2010 - 08:05:11 UTC

This archive was generated by hypermail 2.2.0 : Mon Jan 25 2010 - 08:24:01 UTC