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/default_build.py | |
parent | Initial commit. (diff) | |
download | ceph-upstream/16.2.11+ds.tar.xz ceph-upstream/16.2.11+ds.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 'src/boost/tools/build/test/default_build.py')
-rw-r--r-- | src/boost/tools/build/test/default_build.py | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/src/boost/tools/build/test/default_build.py b/src/boost/tools/build/test/default_build.py new file mode 100644 index 000000000..6206507f4 --- /dev/null +++ b/src/boost/tools/build/test/default_build.py @@ -0,0 +1,80 @@ +#!/usr/bin/python + +# Copyright 2003 Dave Abrahams +# Copyright 2002, 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) + +# Test that default build clause actually has any effect. + +import BoostBuild + +t = BoostBuild.Tester(use_test_config=False) + +t.write("jamroot.jam", "") +t.write("jamfile.jam", "exe a : a.cpp : : debug release ;") +t.write("a.cpp", "int main() {}\n") + +t.run_build_system() +t.expect_addition("bin/$toolset/debug*/a.exe") +t.expect_addition("bin/$toolset/release*/a.exe") + +# Check that explictly-specified build variant suppresses default-build. +t.rm("bin") +t.run_build_system(["release"]) +t.expect_addition(BoostBuild.List("bin/$toolset/release*/") * "a.exe a.obj") +t.expect_nothing_more() + +# Now check that we can specify explicit build request and default-build will be +# combined with it. +t.run_build_system(["optimization=space"]) +t.expect_addition("bin/$toolset/debug/optimization-space*/a.exe") +t.expect_addition("bin/$toolset/release/optimization-space*/a.exe") + +# Test that default-build must be identical in all alternatives. Error case. +t.write("jamfile.jam", """\ +exe a : a.cpp : : debug ; +exe a : b.cpp : : ; +""") +t.run_build_system(["-n", "--no-error-backtrace"], status=1) +t.fail_test(t.stdout().find("default build must be identical in all alternatives") == -1) + +# Test that default-build must be identical in all alternatives. No Error case, +# empty default build. +t.write("jamfile.jam", """\ +exe a : a.cpp : <variant>debug ; +exe a : b.cpp : <variant>release ; +""") +t.run_build_system(["-n", "--no-error-backtrace"], status=0) + +# Now try a harder example: default build which contains <define> should cause +# <define> to be present when "b" is compiled. This happens only if +# "build-project b" is placed first. +t.write("jamfile.jam", """\ +project : default-build <define>FOO ; +build-project a ; +build-project b ; +""") + +t.write("a/jamfile.jam", "exe a : a.cpp ../b//b ;") +t.write("a/a.cpp", """\ +#ifdef _WIN32 +__declspec(dllimport) +#endif +void foo(); +int main() { foo(); } +""") + +t.write("b/jamfile.jam", "lib b : b.cpp ;") +t.write("b/b.cpp", """\ +#ifdef FOO +#ifdef _WIN32 +__declspec(dllexport) +#endif +void foo() {} +#endif +""") + +t.run_build_system() + +t.cleanup() |