Re: build systems



On Fri, 2007-11-09 at 14:37 +0000, Richard Hughes wrote:
> On Fri, 2007-11-09 at 13:52 +0100, Daniel Svensson wrote:
> > waf runs in two steps, first configure,
> > then build. And I cannot stress enough how fast it is. Zooom! Also
> it
> > has a very nice looks ;)
> 
> Yes, I evaluated waf a few months ago. It's a very nice internal
> design,
> and very pluggable. Unfortunatly it needs the same modules written as
> what we use with autotools, e.g. a module to install a schema file, do
> the translation stuff etc.

Not waf-specific, just didn't know too wel where to get into this
thread.

First of all, I don't really dislike autofoo. It works fine for "normal"
applications, maybe needs some work when writing a library, but it's not
impossible. More documentation would be great though.

Anyway, some thoughts on a potential new build system:
- It most certainly needs good "make distcheck"-style support (ie
tarball creation and automated build/install/uninstall checking)
- One extremely neat feature would be to be able to keep multiple
builds, each with (eg) different configure options,
PKG_CONFIG_PATH's,... Like this I could eg keep a build of my
application with -O0 -ggdb3 -pg etc, and one "normal" build with
standard compiler optimalisations etc. It should be possible to mark one
build as default.

An example session using the "mmake" system (hypothetical):
$ ls builds
debug   no-special-flags   extreme-optimalisations
$ mmake configure --enable-debug --build-name=debug
ls builds
debug
$ mmake set-default-build debug
$ mmake
Building debug build... done
$ ls builds/debug
builds/debug/foo.o builds/debug/bar.o builds/debug/version.o
builds/debug/app
$ ./builds/debug/app --version
0.1
$ mmake configure --build-name=normal
$ ls builds
debug normal
$ mmake --build=normal
Building normal build... done
$ ls builds/normal
builds/debug/foo.o builds/debug/bar.o builds/debug/version.o
builds/debug/app
$ ./builds/normal/app --version
0.1
$ mmake
Nothing to be done for debug build
$ echo "#define VERSION 0.2" > version.c
$ mmake
Building debug build... done
$ ./builds/debug/app --version
0.2
$ ./builds/normal/app --version
0.1

You get the idea...

Just my .02,

Nicolas

Attachment: signature.asc
Description: This is a digitally signed message part



[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]