]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/tools/build/test/alias.py
update sources to v12.2.3
[ceph.git] / ceph / src / boost / tools / build / test / alias.py
CommitLineData
7c673cae
FG
1#!/usr/bin/python
2
3# Copyright 2003 Dave Abrahams
4# Copyright 2003 Vladimir Prus
5# Distributed under the Boost Software License, Version 1.0.
6# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt)
7
8import BoostBuild
9
10
11###############################################################################
12#
13# test_alias_rule()
14# -----------------
15#
16###############################################################################
17
18def test_alias_rule(t):
19 """Basic alias rule test."""
20
21 t.write("jamroot.jam", """\
22exe a : a.cpp ;
23exe b : b.cpp ;
24exe c : c.cpp ;
25
26alias bin1 : a ;
27alias bin2 : a b ;
28
29alias src : s.cpp ;
30exe hello : hello.cpp src ;
31""")
32
33 t.write("a.cpp", "int main() {}\n")
34 t.copy("a.cpp", "b.cpp")
35 t.copy("a.cpp", "c.cpp")
36 t.copy("a.cpp", "hello.cpp")
37 t.write("s.cpp", "")
38
39 # Check that targets to which "bin1" refers are updated, and only those.
40 t.run_build_system(["bin1"])
b32b8144 41 t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "a.exe a.obj")
7c673cae
FG
42 t.expect_nothing_more()
43
44 # Try again with "bin2"
45 t.run_build_system(["bin2"])
b32b8144 46 t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "b.exe b.obj")
7c673cae
FG
47 t.expect_nothing_more()
48
49 # Try building everything, making sure 'hello' target is created.
50 t.run_build_system()
b32b8144 51 t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * \
7c673cae 52 "hello.exe hello.obj")
b32b8144
FG
53 t.expect_addition("bin/$toolset/debug*/s.obj")
54 t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "c.exe c.obj")
7c673cae
FG
55 t.expect_nothing_more()
56
57
58###############################################################################
59#
60# test_alias_source_usage_requirements()
61# --------------------------------------
62#
63###############################################################################
64
65def test_alias_source_usage_requirements(t):
66 """
67 Check whether usage requirements are propagated via "alias". In case they
68 are not, linking will fail as there will be no main() function defined
69 anywhere in the source.
70
71 """
72 t.write("jamroot.jam", """\
73lib l : l.cpp : : : <define>WANT_MAIN ;
74alias la : l ;
75exe main : main.cpp la ;
76""")
77
78 t.write("l.cpp", """\
79void
80#if defined(_WIN32)
81__declspec(dllexport)
82#endif
83foo() {}
84""")
85
86 t.write("main.cpp", """\
87#ifdef WANT_MAIN
88int main() {}
89#endif
90""")
91
92 t.run_build_system()
93
94
95###############################################################################
96#
97# main()
98# ------
99#
100###############################################################################
101
102# We do not pass the '-d0' option to Boost Build here to get more detailed
103# information in case of failure.
104t = BoostBuild.Tester(pass_d0=False, use_test_config=False)
105
106test_alias_rule(t)
107test_alias_source_usage_requirements(t)
108
109t.cleanup()