summaryrefslogtreecommitdiff
path: root/tools/build/test/free_features_request.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/build/test/free_features_request.py')
-rw-r--r--tools/build/test/free_features_request.py42
1 files changed, 42 insertions, 0 deletions
diff --git a/tools/build/test/free_features_request.py b/tools/build/test/free_features_request.py
new file mode 100644
index 000000000..e7949d145
--- /dev/null
+++ b/tools/build/test/free_features_request.py
@@ -0,0 +1,42 @@
+#!/usr/bin/python
+
+# Copyright (C) Vladimir Prus 2007.
+# Distributed under the Boost Software License, Version 1.0. (See
+# accompanying file LICENSE_1_0.txt or copy at
+# http://www.boost.org/LICENSE_1_0.txt)
+
+# Tests that a free feature specified on the command line applies to all
+# targets ever built.
+
+import BoostBuild
+
+t = BoostBuild.Tester(use_test_config=False)
+
+t.write("jamroot.jam", """\
+exe hello : hello.cpp foo ;
+lib foo : foo.cpp ;
+""")
+
+t.write("hello.cpp", """\
+extern void foo();
+#ifdef FOO
+int main() { foo(); }
+#endif
+""")
+
+t.write("foo.cpp", """\
+#ifdef FOO
+#ifdef _WIN32
+__declspec(dllexport)
+#endif
+void foo() {}
+#endif
+""")
+
+# If FOO is not defined when compiling the 'foo' target, we will get a link
+# error at this point.
+t.run_build_system(["hello", "define=FOO"])
+
+t.expect_addition("bin/$toolset/debug/hello.exe")
+
+t.cleanup()