From 19fcec84d8d7d21e796c7624e521b60d28ee21ed Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Sun, 7 Apr 2024 20:45:59 +0200 Subject: Adding upstream version 16.2.11+ds. Signed-off-by: Daniel Baumann --- .../build/test/feature_implicit_dependency.py | 113 +++++++++++++++++++++ 1 file changed, 113 insertions(+) create mode 100644 src/boost/tools/build/test/feature_implicit_dependency.py (limited to 'src/boost/tools/build/test/feature_implicit_dependency.py') diff --git a/src/boost/tools/build/test/feature_implicit_dependency.py b/src/boost/tools/build/test/feature_implicit_dependency.py new file mode 100644 index 000000000..0b40da1bf --- /dev/null +++ b/src/boost/tools/build/test/feature_implicit_dependency.py @@ -0,0 +1,113 @@ +#!/usr/bin/python + +# Copyright (c) Steven Watanabe 2018. +# 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) + +# Tests that a single main target can be used for +# implicit dependencies of multiple different types. + +import BoostBuild + +t = BoostBuild.Tester(pass_toolset=False) + +t.write("input.sss", "") + +t.write("Jamroot.jam", """ +import type ; +import common ; +import generators ; +import "class" : new ; +import feature : feature ; +import toolset : flags ; + +type.register AAA : aaa ; +type.register BBB : bbb ; +type.register CCC : ccc ; +type.register DDD : ddd ; +type.register SSS : sss ; + +feature aaa-path : : free path ; +feature bbb-path : : free path ; + +class aaa-action : action +{ + rule adjust-properties ( property-set ) + { + local s = [ $(self.targets[1]).creating-subvariant ] ; + return [ $(property-set).add-raw + [ $(s).implicit-includes aaa-path : AAA ] ] ; + } +} + +class aaa-generator : generator +{ + rule action-class ( ) + { + return aaa-action ; + } +} + +class bbb-action : action +{ + rule adjust-properties ( property-set ) + { + local s = [ $(self.targets[1]).creating-subvariant ] ; + return [ $(property-set).add-raw + [ $(s).implicit-includes bbb-path : BBB ] ] ; + } +} + +class bbb-generator : generator +{ + rule action-class ( ) + { + return bbb-action ; + } +} + +generators.register-standard common.copy : SSS : AAA ; +generators.register-standard common.copy : SSS : BBB ; + +# Produce two targets from a single source +rule make-aaa-bbb ( project name ? : property-set : sources * ) +{ + local result ; + local aaa = [ generators.construct $(project) $(name) : AAA : + [ $(property-set).add-raw a-loc ] : $(sources) ] ; + local bbb = [ generators.construct $(project) $(name) : BBB : + [ $(property-set).add-raw b-loc ] : $(sources) ] ; + return [ $(aaa[1]).add $(bbb[1]) ] $(aaa[2-]) $(bbb[2-]) ; +} + +generate input : input.sss : @make-aaa-bbb ; +explicit input ; + +flags make-ccc AAAPATH : ; +rule make-ccc ( target : sources * : properties * ) +{ + ECHO aaa path\: [ on $(target) return $(AAAPATH) ] ; + common.copy $(target) : $(sources) ; +} + +flags make-ddd BBBPATH : ; +rule make-ddd ( target : sources * : properties * ) +{ + ECHO bbb path\: [ on $(target) return $(BBBPATH) ] ; + common.copy $(target) : $(sources) ; +} + +generators.register [ new aaa-generator $(__name__).make-ccc : SSS : CCC ] ; +generators.register [ new bbb-generator $(__name__).make-ddd : SSS : DDD ] ; + +# This should have bin/a-loc +ccc output-c : input.sss : input ; +# This should have bin/b-loc +ddd output-d : input.sss : input ; +""") + +t.run_build_system() +t.expect_output_lines(["aaa path: bin/a-loc", "bbb path: bin/b-loc"]) + +t.cleanup() -- cgit v1.2.3