From 62c8a3d5d467a66adf903c2b0bd0c9e9ba2e7735 Mon Sep 17 00:00:00 2001 From: Vladimir Prus Date: Tue, 29 Jun 2004 10:23:27 +0000 Subject: [PATCH] Allow a simple [ lib a b c ] syntax for declaring searched libraries. [SVN r23254] --- v2/tools/builtin.jam | 46 +++++++++++++++++++++++++++++++++++--------- 1 file changed, 37 insertions(+), 9 deletions(-) diff --git a/v2/tools/builtin.jam b/v2/tools/builtin.jam index 9d0f8fce0..e87d28c69 100644 --- a/v2/tools/builtin.jam +++ b/v2/tools/builtin.jam @@ -431,20 +431,48 @@ class lib-target-class : basic-target } } -rule lib ( name : sources * : requirements * : default-build * +rule lib ( names + : sources * : requirements * : default-build * : usage-requirements * ) { local project = [ project.current ] ; - + # This is a circular module dependency, so it must be imported here import targets ; - targets.main-target-alternative - [ new lib-target-class $(name) : $(project) - : [ targets.main-target-sources $(sources) : $(name) ] - : [ targets.main-target-requirements $(requirements) : $(project) ] - : [ targets.main-target-default-build $(default-build) : $(project) ] - : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ] - ] ; + + local result ; + if $(sources) || in $(requirements:G) + { + if $(names[2]) + { + errors.user-error "When several names are given to the 'lib' rule" : + "it's not allows to specify either sources or property " ; + } + + local name = $(names[1]) ; + result = [ targets.main-target-alternative + [ new lib-target-class $(name) : $(project) + : [ targets.main-target-sources $(sources) : $(name) ] + : [ targets.main-target-requirements $(requirements) : $(project) ] + : [ targets.main-target-default-build $(default-build) : $(project) ] + : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ] + ] ] ; + } + else + { + for local name in $(names) + { + result += [ + targets.main-target-alternative + [ new lib-target-class $(name) : $(project) + : + : [ targets.main-target-requirements $(requirements) $(name) : + $(project) ] + : [ targets.main-target-default-build $(default-build) : $(project) ] + : [ targets.main-target-usage-requirements $(usage-requirements) : $(project) ] + ] ] ; + } + } + return $(result) ; } IMPORT $(__name__) : lib : : lib ;