mirror of
https://github.com/boostorg/boost.git
synced 2025-04-06 22:14:59 +00:00
Get stage and install targets to work in mixed-modular setup.
This adjusts the top level stage and install targets to refer to the new modular per-library stage and instal targets if available. It also declares the stage and instal targets for header only libraries that don't have those targets. It makes it possible to fully stage or install at the top level in the mixed-modular transition.
This commit is contained in:
parent
2eafd5f71a
commit
da06823cd2
2 changed files with 40 additions and 9 deletions
29
Jamroot
29
Jamroot
|
@ -148,12 +148,12 @@ import project ;
|
|||
import tools/boost\_install/boost-install ;
|
||||
|
||||
path-constant BOOST_ROOT : . ;
|
||||
constant BOOST_VERSION : 1.85.0 ;
|
||||
constant BOOST_VERSION : 1.86.0 ;
|
||||
constant BOOST_JAMROOT_MODULE : $(__name__) ;
|
||||
|
||||
# Allow subprojects to simply `import config : requires ;` to get access to the requires rule
|
||||
import-search $(BOOST_ROOT)/libs/config/checks ;
|
||||
import-search $(BOOST_ROOT)/libs/predef/tools/checks ;
|
||||
import-search $(BOOST_ROOT)/libs/predef/tools/check ;
|
||||
|
||||
boostcpp.set-version $(BOOST_VERSION) ;
|
||||
|
||||
|
@ -327,9 +327,6 @@ for local l in $(all-libraries-modular-build)
|
|||
}
|
||||
}
|
||||
|
||||
# Log has an additional target
|
||||
explicit [ alias log_setup : libs/log/build//boost_log_setup ] ;
|
||||
|
||||
rule do-nothing { }
|
||||
|
||||
rule generate-alias ( project name : property-set : sources * )
|
||||
|
@ -360,7 +357,7 @@ if [ path.exists $(BOOST_ROOT)/tools/inspect/build ]
|
|||
|
||||
if [ path.exists $(BOOST_ROOT)/libs/wave/tool/build ]
|
||||
{
|
||||
use-project /boost/libs/wave/tool : libs/wave/tool/build ;
|
||||
use-project /boost/libs/wave/tool : $(BOOST_ROOT)/libs/wave/tool/build ;
|
||||
}
|
||||
|
||||
# Make the boost-install rule visible in subprojects
|
||||
|
@ -395,7 +392,7 @@ rule boost-lib ( name : sources * : requirements * : default-build * : usage-req
|
|||
|
||||
# Declare special top-level targets that build and install the desired variants
|
||||
# of the libraries.
|
||||
boostcpp.declare-targets $(all-libraries-to-build) ;
|
||||
boostcpp.declare-targets $(all-libraries-to-build) $(all-libraries-modular-build) ;
|
||||
|
||||
# Declare a Boost library and run related declaration rules. This should be
|
||||
# called from the libroot/build.jam to define the components of a Boost lib.
|
||||
|
@ -409,14 +406,27 @@ boostcpp.declare-targets $(all-libraries-to-build) ;
|
|||
#
|
||||
rule boost-library ( id ? : options * : * )
|
||||
{
|
||||
# ECHO "INFO: Declare Boost library:" $(id) ;
|
||||
local called-boost-install ;
|
||||
for n in 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
||||
{
|
||||
local option = $($(n)) ;
|
||||
if $(option)
|
||||
{
|
||||
call-if : boost-$(option[1]) $(option[2-]) ;
|
||||
if $(option[1]) = install
|
||||
{
|
||||
called-boost-install = true ;
|
||||
}
|
||||
}
|
||||
}
|
||||
if ! $(called-boost-install)
|
||||
{
|
||||
# If the library didn't indicate an install build target it's likely
|
||||
# header only. We should declare empty install targets to allow for
|
||||
# generic handling.
|
||||
boost-install.boost-install ;
|
||||
}
|
||||
}
|
||||
|
||||
# Declare projects and targets for all placeholder, header only, not yet
|
||||
|
@ -451,3 +461,8 @@ for local lib in $(all-libraries-to-declare)
|
|||
}
|
||||
project.pop-current ;
|
||||
}
|
||||
|
||||
if ! [ project.search /boost/tools/boost_install ]
|
||||
{
|
||||
use-project /boost/tools/boost_install : tools/boost_install ;
|
||||
}
|
||||
|
|
20
boostcpp.jam
20
boostcpp.jam
|
@ -263,11 +263,27 @@ rule python-tag ( name : type ? : property-set )
|
|||
rule declare_install_and_stage_proper_targets ( libraries * )
|
||||
{
|
||||
local p = [ project.current ] ;
|
||||
local install-targets ;
|
||||
local stage-targets ;
|
||||
for local library in $(libraries)
|
||||
{
|
||||
local mp = [ project.search /boost/$(library) ] ;
|
||||
if $(mp)
|
||||
{
|
||||
install-targets += /boost/$(library)//install ;
|
||||
stage-targets += /boost/$(library)//stage ;
|
||||
}
|
||||
else
|
||||
{
|
||||
install-targets += libs/$(library)/build//install ;
|
||||
stage-targets += libs/$(library)/build//stage ;
|
||||
}
|
||||
}
|
||||
|
||||
alias install-proper : libs/$(libraries)/build//install ;
|
||||
alias install-proper : $(install-targets) ;
|
||||
$(p).mark-target-as-explicit install-proper ;
|
||||
|
||||
alias stage-proper : libs/$(libraries)/build//stage ;
|
||||
alias stage-proper : $(stage-targets) ;
|
||||
$(p).mark-target-as-explicit stage-proper ;
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue