Imported Upstream version 1.51.0
[platform/upstream/boost.git] / tools / build / v2 / test / indirect_conditional.py
1 #!/usr/bin/python
2
3 # Copyright (C) Vladimir Prus 2006.
4 # Distributed under the Boost Software License, Version 1.0. (See
5 # accompanying file LICENSE_1_0.txt or copy at
6 # http://www.boost.org/LICENSE_1_0.txt)
7
8 import BoostBuild
9
10 t = BoostBuild.Tester()
11
12 t.write("jamroot.jam", """
13 exe a1 : a1.cpp : <conditional>@a1-rule ;
14
15 rule a1-rule ( properties * )
16 {
17     if <variant>debug in $(properties)
18     {
19         return <define>OK ;
20     }
21 }
22
23 exe a2 : a2.cpp : <conditional>@$(__name__).a2-rule
24     <variant>debug:<optimization>speed ;
25
26 rule a2-rule ( properties * )
27 {
28     if <optimization>speed in $(properties)
29     {
30         return <define>OK ;
31     }
32 }
33
34 exe a3 : a3.cpp : <conditional>@$(__name__).a3-rule-1
35     <conditional>@$(__name__).a3-rule-2 ;
36
37 rule a3-rule-1 ( properties * )
38 {
39     if <optimization>speed in $(properties)
40     {
41         return <define>OK ;
42     }
43 }
44
45 rule a3-rule-2 ( properties * )
46 {
47     if <variant>debug in $(properties)
48     {
49         return <optimization>speed ;
50     }
51 }
52 """)
53
54 t.write("a1.cpp", """
55 #ifdef OK
56 int main() {}
57 #endif
58 """)
59
60 t.write("a2.cpp", """
61 #ifdef OK
62 int main() {}
63 #endif
64 """)
65
66 t.write("a3.cpp", """
67 #ifdef OK
68 int main() {}
69 #endif
70 """)
71
72 t.run_build_system()
73
74 t.expect_addition("bin/$toolset/debug/a1.exe")
75 t.expect_addition("bin/$toolset/debug/optimization-speed/a2.exe")
76 t.expect_addition("bin/$toolset/debug/optimization-speed/a3.exe")
77
78 t.cleanup()