fix using subproject features (#972)

This commit is contained in:
Dmitry Arkhipov
2024-10-31 23:23:44 +03:00
committed by Peter Dimov
parent 18c9bb0d0d
commit da4fb7264c

22
Jamroot
View File

@@ -433,17 +433,18 @@ rule boost-library ( id ? : options * : * )
#
# NOTE: This has to be after the boost-* rule definitions to ensure that those
# are available for import into the new projects.
local location = [ project.attribute $(__name__) location ] ;
for local lib in $(all-libraries-to-declare)
{
local lib-path
= [ path.join [ project.attribute $(__name__) location ] libs $(lib) ] ;
= [ path.join $(location) libs $(lib) ] ;
if $(lib) = numeric_conversion
{
lib-path = [ path.join [ project.attribute $(__name__) location ] libs/numeric/conversion ] ;
lib-path = [ path.join $(location) libs/numeric/conversion ] ;
}
else if $(lib) in interval odeint ublas
{
lib-path = [ path.join [ project.attribute $(__name__) location ] libs/numeric/$(lib) ] ;
lib-path = [ path.join $(location) libs/numeric/$(lib) ] ;
}
local lib-module
= [ project.load $(lib-path) : synthesize ] ;
@@ -467,3 +468,18 @@ if ! [ project.search /boost/tools/boost\_install ]
{
use-project /boost/tools/boost\_install : tools/boost\_install ;
}
# Ensure "modular" libraries' projects are loaded before build request is
# calculated. This is necessary for subprojects that define custom features
# to be set by users on command line.
# This part should stay at the bottom of the file, because subprojects may rely
# on rules or constants from it.
for local l in $(all-libraries-modular-build)
{
# project.find returns the module for the project, which ensures that the
# project is loaded. The convoluted way the rule is invoked is due to the
# fact that project.find can only be called from a project target instance.
modules.call-in [ project.target $(__name__) ]
: project.find /boost/$(l)
: $(location) ;
}