Boost logo

Boost :

From: David Abrahams (david.abrahams_at_[hidden])
Date: 2001-10-11 09:50:42


----- Original Message -----
From: "Petr Ovchenkov" <ptr_at_[hidden]>
> Good morning David,

> In boost mail list was discussion 'configure' vs. 'jam'.

We've had various different discussions, including make vs. jam.

> I agree with most arguments that (configure; make) is not a good
> solution. When we work with C++, we must find C++-compiler-specific
> features. This features are near the same for one compiler
> (of the same version), and less platform-dependent.
> So the main configuration can be done (and really done) in boost/config/*
> By my opinion this is really the best solution.

I'm not worried about the config problem, so let's leave that aside.

> But when we need to build library, I prefer approach like use
> Boris Fomichev in STLport (I hope you familiar with STLport, and build
> it):

http://www.stlport.org/doc/thanks.html

> for main classes of compiler/platform we have a specific makefiles,
> with reuse of common part where it possible. If we use here common
> subset of make's, this will work on any system, without worry about
> make or jam or something else binaries.

"any" is a relative term. For example, it does not work on classic MacOS or
VMS. How important this is could be a matter for debate, however.

> As for me, I had first trouble with building jam (jam's build isn't
> clear in second pass, problem come from Jamfiles).

Sorry, I didn't understand that. What did you do, and what result did you
get?

> And second --- in
> understanding boost's Jamfiles.

What did you find difficult to understand?

The intention is for most of the Jamfiles to be very simple.
http://www.boost.org/libs/thread/build/Jamfile is a good example. If you are
crawling through the .jam files in the tools/build directory, I'm not
surprised you had trouble. That's a complicated program designed to make the
Jamfiles simple.

If I have failed to make even the Jamfiles simple, then I need to know more
about what you are having trouble with it, so I can fix that problem.

> DA> 4. Boost-compatible license. Jam is free for any purpose, and
> DA> freely redistributable.
>
> I really don't know any platform, where present C compiler, and no make
> or make-like program.

I mentioned two above. In any case, the different make-like programs all
have platform-specific quirks which make construction of a portable,
multi-compiler build-and-test system more difficult.

> >> The complexity is near the same as with make. And presence in
> >> system more than one compiler is a big problem for jam.
>
> DA> Not at all. I use the boost build system with multiple compilers
> DA> all the time. Also, with the right Jam code (e.g. what's in
> DA> Boost.Build) it is possible to specify build instructions in a
> DA> platform- and compiler-neutral way, which makes writing Jamfiles
> DA> for new projects much simpler.
>
> This not very easy when you have no experience with Jam, and something
> not work (or you want to specify a bit different behavior then default).

Like what? I may need to improve the documentation about how to do that.

> >> Most people has a good experience with maintenance makefiles.
>
> DA> Not me. Maybe somebody else has a better solution.
>
> May be the solution is to have two build structures, Jam- and
> make-based? And everybody will use what he/she like?

Are you volunteering? I don't think it's a good idea to have redundant build
systems, but I would be happy if someone would supply a different system
which satisfies all or most of the goals described at
http://www.boost.org/tools/build/build_system.htm#design_criteria. I would
simply retire Boost.Build if the alternative were easier to use and
maintain.

-Dave


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk