1 # from __future__ import with_statement
11 _configTests[func.__name__] = func
14 # class TemporaryContext:
15 # def __init__(self, context):
16 # self._context = context
17 # self._env = self._context.env.Clone()
19 # def __enter__(self):
22 # def __exit__(self,*args):
23 # self._context.env.Replace(**self._env.Dictionary())
27 def CheckBoostVersion(context):
28 context.Message( "Checking boost version... " )
29 ret = context.TryRun("#include <boost/version.hpp>\n"
30 "#include <iostream>\n"
31 "int main(int, char **) { std::cout << BOOST_LIB_VERSION << std::endl; }",
34 context.Result("no boost includes found")
41 def CheckBoostVariants(context, *variants):
43 # with TemporaryContext(context):
45 _env = context.env.Clone()
46 for variant in variants:
47 if variant : variantStr = "'%s'" % variant
48 else : variantStr = "default"
49 context.Message( "Checking boost %s variant... " % variantStr )
50 context.env.Replace( BOOST_VARIANT=variant )
51 context.env.Append( _LIBFLAGS = ' -Wl,-Bstatic -l$BOOSTTESTLIB -Wl,-Bdynamic' )
52 ret = context.TryLink("#define BOOST_AUTO_TEST_MAIN\n"
53 "#include <boost/test/auto_unit_test.hpp>\n"
54 "#include <boost/test/test_tools.hpp>\n"
55 "BOOST_AUTO_TEST_CASE(test) { BOOST_CHECK(true); }\n",
58 if ret and useVariant is None:
61 context.env.Replace(**_env.Dictionary())
62 if useVariant is not None and not context.env.GetOption('no_progress'):
63 print "Using %s boost variant." % (
64 useVariant and "'%s'" % useVariant or "default")
65 context.env.Replace( BOOST_VARIANT = useVariant )