# Copyright David Abrahams 2004. Distributed under the Boost # Software License, Version 1.0. (See accompanying # file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) # This module's job is to automatically import all the type # registration modules in its directory. import type os path modules ; # Register the given type on the specified OSes, or on remaining OSes # if os is not specified. This rule is injected into each of the type # modules for the sake of convenience. local rule type ( type : suffixes * : base-type ? : os * ) { if ! [ type.registered $(type) ] { if ( ! $(os) ) || [ os.name ] in $(os) { type.register $(type) : $(suffixes) : $(base-type) ; } } } .this-module's-file = [ modules.binding $(__name__) ] ; .this-module's-dir = [ path.parent $(.this-module's-file) ] ; .sibling-jamfiles = [ path.glob $(.this-module's-dir) : *.jam ] ; .sibling-modules = [ MATCH ^(.*)\.jam$ : $(.sibling-jamfiles) ] ; # A loop over all modules in this directory for m in $(.sibling-modules) { m = [ path.basename $(m) ] ; m = types/$(m) ; # Inject the type rule into the new module IMPORT $(__name__) : type : $(m) : type ; import $(m) ; }