Boost logo

Boost-Build :

From: Edward Diener (eldiener_at_[hidden])
Date: 2019-07-31 18:12:57

Given a user-config.jam of:

import toolset ;
import feature ;
using gcc : 8.3 : "C:/Utilities/mingw-w64/i686-8.3.0/bin/g++" ;
using gcc : 8.1 :
"C:/Utilities/mingw-w64/i686-8.1.0-posix-dwarf-rt_v6-rev0/mingw32/bin/g++" ;
# using gcc : 8.3 : "C:/Utilities/mingw-w64/i686-8.3.0/bin/g++" : :
<address-model>32 ;
# using gcc : 8.1 :
: : <address-model>32 ;
feature.subfeature toolset gcc : tsestd : c03 c11 c14 c17 : optional
composite propagated ;
feature.compose <toolset-gcc:tsestd>c03 : <cxxflags>-std=c++03 ;
feature.compose <toolset-gcc:tsestd>c11 : <cxxflags>-std=c++11 ;
feature.compose <toolset-gcc:tsestd>c14 : <cxxflags>-std=c++14 ;
feature.compose <toolset-gcc:tsestd>c17 : <cxxflags>-std=c++1z ;


b2 toolset=gcc-8.3

in any library's test directory will run "successfully", ie. no Boost
Build error messages.

Now comment out the first two 'using gcc' lines and remove the comment
from the next two 'using gcc' lines, so that the usage requirement for
<address-model>32 is now a part of the toolset definitions. Running the
same b2 command from any library's test directory will produce:

in expand-composites from module feature
error: explicitly-specified values of non-free feature
<toolset-gcc:version> conflict
error: existing values: 8.1 8.3
error: value from expanding <toolset-gcc:version>8.3 : 8.3
in feature.expand from module feature
in evaluate-requirements from module targets
in common-properties2 from module targets
in targets.common-properties from module targets
in class_at_basic-target.generate from module object(alias-target-class)@6339
in generate-really from module object(main-target)@6615
in class_at_main-target.generate from module object(main-target)@6615
in class_at_project-target.generate from module object(project-target)@6233
in load from module build-system
in import from module modules
in boost-build from module
E:\Programming\VersionControl\modular-boost\boost-build.jam:17: in
module scope from module

This is with the latest Boost Build 'develop' branch. It seems as if the
gcc usage requirements does not work with feature composition. I do not
know if this is a gcc.jam problem or a more general Boost Build problem,
but any help solving this or finding a workaround will be appreciated. I
can of course add this as a Github issue for Boost Build, but there
seems to be so little Boost Build activity recently at Github that I
wanted to bring it up here first.

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