diff options
Diffstat (limited to 'tools/build/v2/test/path_features.py')
-rw-r--r-- | tools/build/v2/test/path_features.py | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/tools/build/v2/test/path_features.py b/tools/build/v2/test/path_features.py new file mode 100644 index 0000000000..231030be86 --- /dev/null +++ b/tools/build/v2/test/path_features.py @@ -0,0 +1,85 @@ +#!/usr/bin/python + +# Copyright 2003 Dave Abrahams +# Copyright 2002, 2003, 2004 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 + +t = BoostBuild.Tester() + +t.write("jamroot.jam", "import gcc ;") +t.write("jamfile.jam", "lib a : a.cpp : <include>. ;") +t.write("a.cpp", """ +#include <a.h> +void +# ifdef _WIN32 +__declspec(dllexport) +# endif +foo() {} +""") +t.write("a.h", "//empty file\n") + +t.write("d/jamfile.jam", "exe b : b.cpp ..//a ; ") +t.write("d/b.cpp", """ +void foo(); +int main() { foo(); } +""") + +t.run_build_system(subdir="d") + +# Now test the path features with condition work as well. +t.write("jamfile.jam", "lib a : a.cpp : <variant>debug:<include>. ;") +t.rm("bin") +t.run_build_system(subdir="d") + +# Test path features with condition in usage requirements. +t.write("jamfile.jam", """ +lib a : a.cpp : <include>. : : <variant>debug:<include>. ; +""") +t.write("d/b.cpp", """ +#include <a.h> +void foo(); +int main() { foo(); } +""") +t.rm("d/bin") +t.run_build_system(subdir="d") + +# Test that absolute paths inside requirements are ok. The problems appeared +# only when building targets in subprojects. +t.write("jamroot.jam", "") +t.write("jamfile.jam", "build-project x ; ") +t.write("x/jamfile.jam", """ +local pwd = [ PWD ] ; +project : requirements <include>$(pwd)/x/include ; +exe m : m.cpp : <include>$(pwd)/x/include2 ; +""") +t.write("x/m.cpp", """ +#include <h1.hpp> +#include <h2.hpp> +int main() {} +""") +t.write("x/include/h1.hpp", "\n") +t.write("x/include2/h2.hpp", "\n") + +t.run_build_system() +t.expect_addition("x/bin/$toolset/debug/m.exe") + +# Test that "&&" in path features is handled correctly. +t.rm("bin") +t.write("jamfile.jam", "build-project sub ;") +t.write("sub/jamfile.jam", """ +exe a : a.cpp : <include>../h1&&../h2 ; +""") +t.write("sub/a.cpp", """ +#include <header.h> +int main() { return OK; } +""") +t.write("h2/header.h", """ +const int OK = 0; +""") +t.run_build_system() +t.expect_addition("sub/bin/$toolset/debug/a.exe") + +t.cleanup() |