diff --git a/new/targets.jam b/new/targets.jam index 8b89c276e..2a8912cd4 100644 --- a/new/targets.jam +++ b/new/targets.jam @@ -512,6 +512,11 @@ class main-target : abstract-target return $(usage-requirements) $(result) ; } + # Generates the main target with the given property set + # and returns a list which first element is property-set object + # containing usage-requirements of generated target and with + # generated virtual target in other elements. It's possible + # that no targets are generated. local rule generate-really ( property-set ) { if $(self.property-adjuster) @@ -530,6 +535,7 @@ class main-target : abstract-target "with properties" [ $(property-set).raw ] "because no best-matching alternative could be found" ; + return [ property-set.empty ] ; } else if $(best-alternatives[2]) { diff --git a/test/skipping.py b/test/skipping.py new file mode 100644 index 000000000..34e41066c --- /dev/null +++ b/test/skipping.py @@ -0,0 +1,41 @@ +#!/usr/bin/python + +# Copyright (C) Vladimir Prus 2003. Permission to copy, use, modify, sell and +# distribute this software is granted provided this copyright notice appears in +# all copies. This software is provided "as is" without express or implied +# warranty, and with no claim as to its suitability for any purpose. + +# Test that V2 does not fail gracelessy when any target is skipped. +from BoostBuild import Tester, List + +# Create a temporary working directory +t = Tester() +t.write("a.cpp", """ +int main() {} +""") + +t.write("b.cpp", """ +int main() {} +""") + +t.write("c.cpp", """ +int main() {} +""") + +t.write("Jamfile", """ +import feature : feature ; + +feature foo : 1 2 : link-incompatible ; + +exe a : a.cpp : 1 ; +exe b : b.cpp : 2 ; +exe c : c.cpp ; +""") + +t.write("project-root.jam", """ +""") + +t.run_build_system("foo=1") + +t.cleanup() + diff --git a/test/test_all.py b/test/test_all.py index 4ab996dae..66a08440f 100644 --- a/test/test_all.py +++ b/test/test_all.py @@ -105,6 +105,7 @@ tests = [ "project_test1", "tag", "suffix", "inherit_toolset", + "skipping", ] if os.name == 'posix': diff --git a/v2/build/targets.jam b/v2/build/targets.jam index 8b89c276e..2a8912cd4 100644 --- a/v2/build/targets.jam +++ b/v2/build/targets.jam @@ -512,6 +512,11 @@ class main-target : abstract-target return $(usage-requirements) $(result) ; } + # Generates the main target with the given property set + # and returns a list which first element is property-set object + # containing usage-requirements of generated target and with + # generated virtual target in other elements. It's possible + # that no targets are generated. local rule generate-really ( property-set ) { if $(self.property-adjuster) @@ -530,6 +535,7 @@ class main-target : abstract-target "with properties" [ $(property-set).raw ] "because no best-matching alternative could be found" ; + return [ property-set.empty ] ; } else if $(best-alternatives[2]) { diff --git a/v2/test/skipping.py b/v2/test/skipping.py new file mode 100644 index 000000000..34e41066c --- /dev/null +++ b/v2/test/skipping.py @@ -0,0 +1,41 @@ +#!/usr/bin/python + +# Copyright (C) Vladimir Prus 2003. Permission to copy, use, modify, sell and +# distribute this software is granted provided this copyright notice appears in +# all copies. This software is provided "as is" without express or implied +# warranty, and with no claim as to its suitability for any purpose. + +# Test that V2 does not fail gracelessy when any target is skipped. +from BoostBuild import Tester, List + +# Create a temporary working directory +t = Tester() +t.write("a.cpp", """ +int main() {} +""") + +t.write("b.cpp", """ +int main() {} +""") + +t.write("c.cpp", """ +int main() {} +""") + +t.write("Jamfile", """ +import feature : feature ; + +feature foo : 1 2 : link-incompatible ; + +exe a : a.cpp : 1 ; +exe b : b.cpp : 2 ; +exe c : c.cpp ; +""") + +t.write("project-root.jam", """ +""") + +t.run_build_system("foo=1") + +t.cleanup() + diff --git a/v2/test/test_all.py b/v2/test/test_all.py index 4ab996dae..66a08440f 100644 --- a/v2/test/test_all.py +++ b/v2/test/test_all.py @@ -105,6 +105,7 @@ tests = [ "project_test1", "tag", "suffix", "inherit_toolset", + "skipping", ] if os.name == 'posix':