# Copyright 2017 Peter Dimov # # Distributed under the Boost Software License, Version 1.0. # (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) import modules ; import sequence ; import set ; import project ; import virtual-target ; import testing ; import ac ; project : requirements -static ; # from tools/Jamfile if "--debug-check-build" in [ modules.peek : ARGV ] { .info-enabled = 1 ; } local rule .info ( messages * ) { if $(.info-enabled) { ECHO "info:" $(messages) ; } } local all-libraries = [ MATCH .*libs/(.*)/build/.* : [ glob ../../../libs/*/build/Jamfile.v2 ] [ glob ../../../libs/*/build/Jamfile ] ] ; all-libraries = [ sequence.unique $(all-libraries) ] ; # The function_types library has a Jamfile, but it's used for maintenance # purposes, there's no library to build and install. all-libraries = [ set.difference $(all-libraries) : function_types ] ; #ECHO all-libraries: $(all-libraries) ; rule alias-sources-impl ( project name : property-set : sources * ) { local target-graph ; for local s in $(sources) { target-graph += [ virtual-target.traverse $(s) : include-sources : include-roots ] ; } # Remove targets created by the main target local result ; for local t in $(target-graph) { if [ $(t).root ] && ! ( $(t) in $(sources) ) && ( [ $(t).type ] = STATIC_LIB || [ $(t).type ] = SHARED_LIB ) { result += $(t) ; } } .info "$(name):" ; for local t in $(result) { .info " " [ $(t).name ] ; } return $(result) ; } path-constant ROOT : ../../.. ; for local lib in $(all-libraries) { local path = [ NORMALIZE_PATH /$(ROOT)/libs/$(lib)/build ] ; generate library-$(lib) : $(path)//stage : @alias-sources-impl ; } for local lib in $(all-libraries) { local python-dep ; if $(lib) in python mpi graph_parallel { python-dep = /python//python ; } run main.cpp : : : [ ac.check-library library-$(lib) : library-$(lib) $(python-dep) : no ] : $(lib) ; }