40e7f0e8dd
Various restructure of test framework handling of paths to avoid duplicate path editing which caused failed tests. Adjust many tests to deal with added subdirectories in build outputs now that toolset requirements are active.
54 lines
1.0 KiB
Python
Executable File
54 lines
1.0 KiB
Python
Executable File
#!/usr/bin/python
|
|
|
|
# Copyright 2003 Vladimir Prus
|
|
# Copyright 2011 Steven Watanabe
|
|
# 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 the C/C++ preprocessor.
|
|
|
|
import BoostBuild
|
|
|
|
t = BoostBuild.Tester()
|
|
|
|
t.write("jamroot.jam", """
|
|
project ;
|
|
preprocessed hello : hello.cpp ;
|
|
preprocessed a : a.c ;
|
|
exe hello.exe : hello a : <define>FAIL ;
|
|
""")
|
|
|
|
t.write("hello.cpp", """
|
|
#ifndef __cplusplus
|
|
#error "This file must be compiled as C++"
|
|
#endif
|
|
#ifdef FAIL
|
|
#error "Not preprocessed?"
|
|
#endif
|
|
extern "C" int foo();
|
|
int main() { return foo(); }
|
|
""")
|
|
|
|
t.write("a.c", """
|
|
/* This will not compile unless in C mode. */
|
|
#ifdef __cplusplus
|
|
#error "This file must be compiled as C"
|
|
#endif
|
|
#ifdef FAIL
|
|
#error "Not preprocessed?"
|
|
#endif
|
|
int foo()
|
|
{
|
|
int new = 0;
|
|
new = (new+1)*7;
|
|
return new;
|
|
}
|
|
""")
|
|
|
|
t.run_build_system()
|
|
t.expect_addition("bin/$toolset/debug*/hello.ii")
|
|
t.expect_addition("bin/$toolset/debug*/a.i")
|
|
t.expect_addition("bin/$toolset/debug*/hello.exe")
|
|
|
|
t.cleanup()
|