diff options
author | Tobias Markmann <tm@ayena.de> | 2019-08-20 09:31:50 (GMT) |
---|---|---|
committer | Tobias Markmann <tobias.markmann@isode.com> | 2019-08-20 10:26:29 (GMT) |
commit | c62b7b6ce35a77d0a8236ef48155187fe5c30d12 (patch) | |
tree | e8afb68d84be1d36604b3f14a26b24796a583a72 | |
parent | d4105dbe815ba4109e0165cae696bd87d91c8bfe (diff) | |
download | swift-c62b7b6ce35a77d0a8236ef48155187fe5c30d12.zip swift-c62b7b6ce35a77d0a8236ef48155187fe5c30d12.tar.bz2 |
Fix building 3rdParty/Expat on non-Windows
Test-Information:
Tested successfully on macOS 10.14.6 and Debian 9.
Change-Id: I341589b6e92e9d16b53ea247d0b91ac1a0639f66
-rw-r--r-- | 3rdParty/Expat/SConscript | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/3rdParty/Expat/SConscript b/3rdParty/Expat/SConscript index c2ccd4a..9a0cecd 100644 --- a/3rdParty/Expat/SConscript +++ b/3rdParty/Expat/SConscript @@ -8,6 +8,12 @@ if env.get("EXPAT_BUNDLED", False) : "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"]) @@ -22,6 +28,55 @@ if env.get("EXPAT_BUNDLED", False) : 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 <stdlib.h> /* for NULL */ + #include <sys/random.h> + int main() { + return getrandom(NULL, 0U, 0U); + } + """): + myenv.Append(CPPDEFINES = ["HAVE_GETRANDOM"]) + elif conf.CheckBuilds('Checking for syscall SYS_getrandom... ', + """ + #include <stdlib.h> /* for NULL */ + #include <unistd.h> /* for syscall */ + #include <sys/syscall.h> /* 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 <stdlib.h> /* for arc4random_buf on BSD, for NULL */ + #if defined(HAVE_LIBBSD) + # include <bsd/stdlib.h> + #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 <bsd/stdlib.h> + #else + # include <stdlib.h> + #endif + int main() { + arc4random(); + return 0; + } + """): + myenv.Append(CPPDEFINES = ["HAVE_ARC4RANDOM"]) + conf.Finish() + env["EXPAT_OBJECTS"] = myenv.SwiftenObject([ "src/xmltok.c", "src/xmlparse.c", |