Import(["env", "conf_env"]) if env.get("EXPAT_BUNDLED", False) : if env["SCONS_STAGE"] == "flags" : env["EXPAT_FLAGS"] = { "CPPDEFINES": ["XML_STATIC"], "CPPPATH": [Dir("src")], "LIBPATH": [Dir(".")], } def checkBuilds(context, message, source): context.Message(message) result = context.TryLink(source, '.cpp') context.Result(result) return result if env["SCONS_STAGE"] == "build" : myenv = env.Clone() myenv.Append(CPPDEFINES = ["XML_STATIC", "HAVE_EXPAT_CONFIG_H"]) if env.get("BOOST_BUNDLED", False) : myenv.Append(CPPPATH = [".", "src", "../Boost/src"]) else : myenv.Append(CPPPATH = [".", "src"]) myenv.MergeFlags(env["BOOST_FLAGS"]) conf = Configure(conf_env) if conf.CheckFunc('memmove') : myenv.Append(CPPDEFINES = ["HAVE_MEMMOVE"]) conf.Finish() if env["PLATFORM"] != "win32" : conf = Configure(conf_env, custom_tests = { "CheckBuilds" : checkBuilds}) if conf.CheckBuilds('Checking for C function getrandom()... ', """ #include /* for NULL */ #include int main() { return getrandom(NULL, 0U, 0U); } """): myenv.Append(CPPDEFINES = ["HAVE_GETRANDOM"]) elif conf.CheckBuilds('Checking for syscall SYS_getrandom... ', """ #include /* for NULL */ #include /* for syscall */ #include /* for SYS_getrandom */ int main() { syscall(SYS_getrandom, NULL, 0, 0); return 0; } """): myenv.Append(CPPDEFINES = ["HAVE_SYSCALL_GETRANDOM"]) elif conf.CheckBuilds('Checking for arc4random_buf... ', """ #include /* for arc4random_buf on BSD, for NULL */ #if defined(HAVE_LIBBSD) # include #endif int main() { arc4random_buf(NULL, 0U); return 0; } """): myenv.Append(CPPDEFINES = ["HAVE_ARC4RANDOM_BUF"]) elif conf.CheckBuilds('Checking for arc4random... ', """ #if defined(HAVE_LIBBSD) # include #else # include #endif int main() { arc4random(); return 0; } """): myenv.Append(CPPDEFINES = ["HAVE_ARC4RANDOM"]) conf.Finish() env["EXPAT_OBJECTS"] = myenv.SwiftenObject([ "src/xmltok.c", "src/xmlparse.c", "src/xmlrole.c", "src/loadlibrary.c", ])