diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-07 18:45:59 +0000 |
commit | 19fcec84d8d7d21e796c7624e521b60d28ee21ed (patch) | |
tree | 42d26aa27d1e3f7c0b8bd3fd14e7d7082f5008dc /src/boost/tools/build/test/alias.py | |
parent | Initial commit. (diff) | |
download | ceph-upstream.tar.xz ceph-upstream.zip |
Adding upstream version 16.2.11+ds.upstream/16.2.11+dsupstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to '')
-rw-r--r-- | src/boost/tools/build/test/alias.py | 107 |
1 files changed, 107 insertions, 0 deletions
diff --git a/src/boost/tools/build/test/alias.py b/src/boost/tools/build/test/alias.py new file mode 100644 index 000000000..132e4c390 --- /dev/null +++ b/src/boost/tools/build/test/alias.py @@ -0,0 +1,107 @@ +#!/usr/bin/python + +# Copyright 2003 Dave Abrahams +# Copyright 2003 Vladimir Prus +# Distributed under the Boost Software License, Version 1.0. +# (See accompanying file LICENSE_1_0.txt or http://www.boost.org/LICENSE_1_0.txt) + +import BoostBuild + + +############################################################################### +# +# test_alias_rule() +# ----------------- +# +############################################################################### + +def test_alias_rule(t): + """Basic alias rule test.""" + + t.write("jamroot.jam", """\ +exe a : a.cpp ; +exe b : b.cpp ; +exe c : c.cpp ; + +alias bin1 : a ; +alias bin2 : a b ; + +alias src : s.cpp ; +exe hello : hello.cpp src ; +""") + + t.write("a.cpp", "int main() {}\n") + t.copy("a.cpp", "b.cpp") + t.copy("a.cpp", "c.cpp") + t.copy("a.cpp", "hello.cpp") + t.write("s.cpp", "") + + # Check that targets to which "bin1" refers are updated, and only those. + t.run_build_system(["bin1"]) + t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "a.exe a.obj") + t.expect_nothing_more() + + # Try again with "bin2" + t.run_build_system(["bin2"]) + t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "b.exe b.obj") + t.expect_nothing_more() + + # Try building everything, making sure 'hello' target is created. + t.run_build_system() + t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * \ + "hello.exe hello.obj") + t.expect_addition("bin/$toolset/debug*/s.obj") + t.expect_addition(BoostBuild.List("bin/$toolset/debug*/") * "c.exe c.obj") + t.expect_nothing_more() + + +############################################################################### +# +# test_alias_source_usage_requirements() +# -------------------------------------- +# +############################################################################### + +def test_alias_source_usage_requirements(t): + """ + Check whether usage requirements are propagated via "alias". In case they + are not, linking will fail as there will be no main() function defined + anywhere in the source. + + """ + t.write("jamroot.jam", """\ +lib l : l.cpp : : : <define>WANT_MAIN ; +alias la : l ; +exe main : main.cpp la ; +""") + + t.write("l.cpp", """\ +void +#if defined(_WIN32) +__declspec(dllexport) +#endif +foo() {} +""") + + t.write("main.cpp", """\ +#ifdef WANT_MAIN +int main() {} +#endif +""") + + t.run_build_system() + + +############################################################################### +# +# main() +# ------ +# +############################################################################### + +t = BoostBuild.Tester(use_test_config=False) + +test_alias_rule(t) +test_alias_source_usage_requirements(t) + +t.cleanup() |