]> git.proxmox.com Git - ceph.git/blame - ceph/src/boost/tools/build/test/unused.py
update sources to v12.2.3
[ceph.git] / ceph / src / boost / tools / build / test / unused.py
CommitLineData
7c673cae
FG
1#!/usr/bin/python
2
3# Copyright 2003 Vladimir Prus
4# Distributed under the Boost Software License, Version 1.0.
5# (See accompanying file LICENSE_1_0.txt or copy at
6# http://www.boost.org/LICENSE_1_0.txt)
7
8# Test that unused sources are at least reported.
9
10import BoostBuild
11
12t = BoostBuild.Tester(["-d+2"], use_test_config=False)
13
14t.write("a.cpp", "int main() {}\n")
15t.write("b.cpp", "\n")
b32b8144 16t.write("b.xyz", "")
7c673cae
FG
17t.write("jamroot.jam", """\
18import "class" : new ;
19import modules ;
20import project ;
21import targets ;
22import type ;
23import virtual-target ;
24
b32b8144 25type.register X : xyz ;
7c673cae
FG
26
27class test-target-class : basic-target
28{
29 rule construct ( name : source-targets * : property-set )
30 {
31 local result = [ property-set.empty ] ;
32 if ! [ modules.peek : GENERATE_NOTHING ]
33 {
b32b8144 34 result += [ virtual-target.from-file b.xyz : . : $(self.project) ] ;
7c673cae
FG
35 if ! [ modules.peek : GENERATE_ONLY_UNUSABLE ]
36 {
37 result += [ virtual-target.from-file b.cpp : . : $(self.project)
38 ] ;
39 }
40 }
41 return $(result) ;
42 }
43
44 rule compute-usage-requirements ( rproperties : targets * )
45 {
46 return [ property-set.create <define>FOO ] ;
47 }
48}
49
50rule make-b-main-target
51{
52 local project = [ project.current ] ;
53 targets.main-target-alternative [ new test-target-class b : $(project) ] ;
54}
55
56exe a : a.cpp b c ;
57make-b-main-target ;
58alias c ; # Expands to nothing, intentionally.
59""")
60
61t.run_build_system()
62
63# The second invocation should do nothing, and produce no warning. The previous
64# invocation might have printed executed actions and other things, so it is not
65# easy to check if a warning was issued or not.
66t.run_build_system(stdout="")
67
68t.run_build_system(["-sGENERATE_ONLY_UNUSABLE=1"], stdout="")
69
70# Check that even if main target generates nothing, its usage requirements are
71# still propagated to dependants.
72t.write("a.cpp", """\
73#ifndef FOO
74 #error We refuse to compile without FOO being defined!
75 We_refuse_to_compile_without_FOO_being_defined
76#endif
77int main() {}
78""")
79t.run_build_system(["-sGENERATE_NOTHING=1"])
80
81t.cleanup()