While Faber retains most of the features from Boost.Build, it is
redesigned from the ground up. bjam is still used as scheduling
engine, but everything else is written in Python. In particular,
Jamfiles are replaced by fabscripts, which are essentially Python
scripts. The project contains a range of examples to demonstrate
various simple use-cases, from a simple "hello world" example to
demos involving autoconf-style config checks, and unit testing.
I have added build logic to Boost.Python to use Faber on
Travis-CI as well as AppVeyor, which also is a good litmus test
for Faber's capabilities.
I'd be very interested in feedback as well as contributions.
Perhaps it might become possible one day to integrate Faber with
other efforts to add a Python frontend to Boost.Build.
I have to compile for 'generic linux' and then cheat on all the include paths an compiler flags. It's a nightmare.
I just checked.. I don't see a reported bug about that. What doesn't work?
Most of the libraries simply refuse to build if you compile with --toolset=emscripten. From memory, bjam/b2 reports errors around ambiguous rule definitions. The error message were cryptic and of course b2/bjam is a dark art in itself with no documentation or examples so I simply did not have time to investigate. In order to get a product out, I compile with --toolset=generic-linux and imbue CCFLAGS and LDFLAGS with all the magic pixie dust that emscripten needs to produce a reasonable static library. Of course I avoid libraries like coroutine etc.
For me, it would be easier if boost simply used a Makefile. At least that has a well-known syntax and interface, with obvious and easy-to-find rules. I have always felt that the very presence of bjam/b2 was an impediment to using boost, and in no way useful to end-users, particularly in cross-compiled environments.
Perhaps this is why I baulk at the idea of building any tool on top of this house of cards.
Re: [boost] Announcement: Faber, a new build system based on bjam
On 01.12.2017 09:28, Rene Rivera via
Forwarding to appropriate Boost list..
On Fri, Dec 1, 2017 at 3:09 AM,
Richard Hodges <[hidden email]>
Perhaps this is why I baulk at the idea of
building any tool on top of this house of cards.
Just to be clear: Faber is built on top of bjam (used purely as a
task scheduling tool), not b2. It is precisely this kind of
frustration (which I very much sympathise with) that led me to
creating Faber, as it presented the opportunity not only to use an
established scripting language, but also to redesign the APIs used
to define tools, features, etc. In other words, to replace what you
call "house of cards" by something more solid, robust, and
(hopefully eventually) better documented.