Boost logo

Boost-Build :

Subject: [Boost-build] Toolsets and generators
From: Thomas Brown (tabsoftwareconsulting_at_[hidden])
Date: 2019-03-30 13:37:18

Hi all,

I'm developing a Boost.Build module for generating a BSP for a bare
metal system running on a configurable device using a third-party tool
and found that adding the toolset to the usage-requirements of a
generated target did not work as I hoped or expected.

I created a minimal example to pass the toolset in the
usage-requirements just using an alias and found it generates a
warning and the toolset is not used. I remember seeing something
about this on the mailing list, but I cannot remember the reasoning.

alias x : : : : <toolset>darwin-8 ;
exe hello : hello.cpp x ;

$ b2
warning: non-free usage requirements <toolset>darwin-8 ignored
warning: in main-target x at Jamroot:1
...found 8 targets...
...updating 5 targets...
clang-darwin.compile.c++ bin/clang-darwin-10.0/debug/hello.o bin/clang-darwin-10.0/debug/hello
...updated 5 targets...

I really should have thought about this minimal example before I spent
a couple of hours trying this in my module and puzzling about the
result :)

I would prefer not to require that the user set the toolset directly
on the top-level project. I believe this would be complex for users
and less flexible than it could be. I was hoping to be able to just
provide the BSP to the top-level target such that I could build the
target for any device supported by the third-party tool.

Do you see any way to work around this? If not, I'll have to detect
errors within the generator if the toolset does not support the
architecture/instruction-set generated.

Best regards,

Boost-Build list run by bdawes at, david.abrahams at, gregod at, cpdaniel at, john at