diff options
Diffstat (limited to 'tools/build/v2/test/generators-test/extra.jam')
-rw-r--r-- | tools/build/v2/test/generators-test/extra.jam | 120 |
1 files changed, 120 insertions, 0 deletions
diff --git a/tools/build/v2/test/generators-test/extra.jam b/tools/build/v2/test/generators-test/extra.jam new file mode 100644 index 0000000000..d3500c73ca --- /dev/null +++ b/tools/build/v2/test/generators-test/extra.jam @@ -0,0 +1,120 @@ +# Copyright 2002, 2003, 2005 Vladimir Prus +# 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 type ; +import generators ; +import "class" : new ; +import common ; + +type.register WHL : whl ; +type.register DLP : dlp ; +type.register WHL_LR0 : lr0 ; +type.register WD : wd ; + +generators.register-standard extra.whale : WHL : CPP WHL_LR0 H H(%_symbols) ; +generators.register-standard extra.dolphin : DLP : CPP ; +generators.register-standard extra.wd : WD : WHL(%_parser) DLP(%_lexer) ; + +class wd-to-cpp : generator +{ + rule __init__ ( * : * : * ) + { + generator.__init__ $(1) : $(2) : $(3) ; + } + + rule run ( project name ? : property-set : source ) + { + local new-sources ; + if ! [ $(source).type ] in WHL DLP + { + local r1 = [ generators.construct $(project) $(name) + : WHL : $(property-set) : $(source) ] ; + local r2 = [ generators.construct $(project) $(name) + : DLP : $(property-set) : $(source) ] ; + + new-sources = [ sequence.unique $(r1[2-]) $(r2[2-]) ] ; + } + else + { + new-sources = $(source) ; + } + + local result ; + for local i in $(new-sources) + { + local t = [ generators.construct $(project) $(name) : CPP + : $(property-set) : $(i) ] ; + result += $(t[2-]) ; + } + return $(result) ; + } +} +generators.override extra.wd-to-cpp : extra.whale ; +generators.override extra.wd-to-cpp : extra.dolphin ; + +generators.register [ new wd-to-cpp extra.wd-to-cpp : : CPP ] ; + +rule whale ( targets * : sources * : properties * ) +{ +} + +TOUCH = [ common.file-touch-command ] ; + +actions whale +{ + echo "Whale consuming " $(>) + $(TOUCH) $(<[1]) + $(TOUCH) $(<[2]) + $(TOUCH) $(<[3]) + $(TOUCH) $(<[4]) +} + +rule dolphin ( targets * : source * : properties * ) +{ +} + +actions dolphin +{ + echo "Dolphin consuming" $(>) + $(TOUCH) $(<) +} + +rule wd ( targets * : source * : properties * ) +{ +} + +actions wd +{ + echo "WD consuming" $(>) + $(TOUCH) $(<[1]) + $(TOUCH) $(<[2]) +} + +rule x ( target * : source * : properties * ) +{ +} + + +actions x +{ + echo "X: source is " $(>) + $(TOUCH) $(<[1]) +} + +rule x_pro ( target * : source * : properties * ) +{ +} + + +actions x_pro +{ + echo "X_PRO: source is " $(>) + $(TOUCH) $(<[1]) + $(TOUCH) $(<[2]) +} + + + + |