"""Simple configure checks for boost""" from SCons.Script import Exit import checks import gcc def _check(context, version): # Boost versions are in format major.minor.subminor v_arr = version.split(".") version_n = 0 if len(v_arr) > 0: version_n += int(v_arr[0])*100000 if len(v_arr) > 1: version_n += int(v_arr[1])*100 if len(v_arr) > 2: version_n += int(v_arr[2]) context.Message('Checking for Boost version >= %s... ' % (version)) ret = context.TryRun("""#include #include int main() { std::cout << BOOST_LIB_VERSION <= %d ? 0 : 1; } """ % version_n, '.cpp') if ret[0]: context.Result(ret[1].replace("_", ".").split('\n')[0]) try: context.env['BOOST_VERSION']= ret[1].split('\n')[1] except: print "Bad boost version", repr(ret) return ret[0] def configure_check(env, version): if env.get('boostversion', None): env['BOOST_VERSION']=env['boostversion'] else: custom_tests = {'CheckBoost':_check} conf = env.Configure(custom_tests=custom_tests) conf.CheckBoost(version) if env.get('BOOST_VERSION', None): env.Append(IMP_CONFIGURATION=["boostversion='"+env['BOOST_VERSION']+"'"]) conf.Finish() def _tr1check(context): context.Message('Checking if Boost and gcc tr1 coexist ...') rett = context.TryCompile(""" #include #include int main() { return 0; } """, '.cpp') context.Result(rett) return rett def configure_tr1_check(env): custom_tests = {'CheckTR1':_tr1check} conf = env.Configure(custom_tests=custom_tests) if not conf.CheckTR1(): env['IMP_HAS_BOOST_TR1_BUG']=True else: pass conf.Finish()