summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTobias Markmann <tm@ayena.de>2016-04-25 07:46:31 (GMT)
committerTobias Markmann <tm@ayena.de>2016-04-25 07:46:31 (GMT)
commit45cca954063503d0a30410c626e9b2c29acdf7e9 (patch)
treea5b9033fc3823926ce33e183fa6f66615d749f8c /BuildTools/SCons
parentc49381c10da2a429d2d90b05dcfbdca13a2fc7e0 (diff)
downloadswift-45cca954063503d0a30410c626e9b2c29acdf7e9.zip
swift-45cca954063503d0a30410c626e9b2c29acdf7e9.tar.bz2
Require a configured TLS backend to build
Converted relevant SCons files from hard tabs to space based indentation with 4 spaces width. Test-Information: Tested that build failed with misconfigured OpenSSL backend (providing tls_backend=openssl on OS X and no information on where to find it). Tested that build succeeds on OS X 10.11.4. Change-Id: I17f85ca3194f100f63361a8c94667d7aa76e811a
Diffstat (limited to 'BuildTools/SCons')
-rw-r--r--BuildTools/SCons/SConstruct897
1 files changed, 451 insertions, 446 deletions
diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
index ef32b31..c5493fc 100644
--- a/BuildTools/SCons/SConstruct
+++ b/BuildTools/SCons/SConstruct
@@ -8,8 +8,8 @@ root = Dir("../..").abspath
# Override SConscript to handle tests
oldSConscript = SConscript
def SConscript(*arguments, **keywords) :
- if not keywords.get("test_only", False) or env["TEST"] :
- return apply(oldSConscript, arguments, keywords)
+ if not keywords.get("test_only", False) or env["TEST"] :
+ return apply(oldSConscript, arguments, keywords)
env.SConscript = SConscript
################################################################################
@@ -21,80 +21,80 @@ env.SConscript = SConscript
################################################################################
#if env["PLATFORM"] == "win32" :
-# env["MSVC_BATCH"] = 1
+# env["MSVC_BATCH"] = 1
# Pretty output
def colorize(command, target, color) :
- colors = { "red": "31", "green": "32", "yellow": "33", "blue": "34" }
- prefix = ""
- suffix = ""
- if sys.stdout.isatty() and env["PLATFORM"] != "win32":
- prefix = "\033[0;" + colors[color] + ";140m"
- suffix = "\033[0m"
- return " " + prefix + command + suffix + " " + target
+ colors = { "red": "31", "green": "32", "yellow": "33", "blue": "34" }
+ prefix = ""
+ suffix = ""
+ if sys.stdout.isatty() and env["PLATFORM"] != "win32":
+ prefix = "\033[0;" + colors[color] + ";140m"
+ suffix = "\033[0m"
+ return " " + prefix + command + suffix + " " + target
if int(ARGUMENTS.get("V", 0)) == 0 and not ARGUMENTS.get("dump_trace", False) :
- env["CCCOMSTR"] = colorize("CC", "$TARGET", "green")
- env["SHCCCOMSTR"] = colorize("CC", "$TARGET", "green")
- env["CXXCOMSTR"] = colorize("CXX", "$TARGET", "green")
- env["SHCXXCOMSTR"] = colorize("CXX", "$TARGET", "green")
- env["LINKCOMSTR"] = colorize("LINK", "$TARGET", "red")
- env["SHLINKCOMSTR"] = colorize("LINK", "$TARGET", "red")
- env["ARCOMSTR"] = colorize("AR", "$TARGET", "red")
- env["RANLIBCOMSTR"] = colorize("RANLIB", "$TARGET", "red")
- env["PCHCOMSTR"] = colorize("PCH", "$TARGET", "blue")
- env["QT4_RCCCOMSTR"] = colorize("RCC", "$TARGET", "blue")
- env["QT4_UICCOMSTR"] = colorize("UIC", "$TARGET", "blue")
- env["QT4_MOCFROMHCOMSTR"] = colorize("MOC", "$TARGET", "blue")
- env["QT4_MOCFROMCXXCOMSTR"] = colorize("MOC", "$TARGET", "blue")
- env["QT4_LRELEASECOMSTR"] = colorize("LRELEASE", "$TARGET", "blue")
- env["QT4_LUPDATECOMSTR"] = colorize("LUPDATE", "$TARGET", "blue")
- env["GENCOMSTR"] = colorize("GEN", "$TARGET", "blue")
- env["RCCOMSTR"] = colorize("RC", "$TARGET", "blue")
- env["BUNDLECOMSTR"] = colorize("BUNDLE", "$TARGET", "blue")
- env["NIBCOMSTR"] = colorize("NIB", "$TARGET", "blue")
- env["NSISCOMSTR"] = colorize("NSIS", "$TARGET", "blue")
- env["INSTALLSTR"] = colorize("INSTALL", "$TARGET", "blue")
- env["TESTCOMSTR"] = colorize("TEST", "$SOURCE", "yellow")
- env["FOCOMSTR"] = colorize("FO", "$TARGET", "blue")
- env["XSLTCOMSTR"] = colorize("XSLT", "$TARGET", "blue")
- env["XMLLINTCOMSTR"] = colorize("XMLLINT", "$SOURCE", "blue")
- env["DOXYCOMSTR"] = colorize("DOXY", "$SOURCE", "blue")
- #Progress(colorize("DEP", "$TARGET", "red")
+ env["CCCOMSTR"] = colorize("CC", "$TARGET", "green")
+ env["SHCCCOMSTR"] = colorize("CC", "$TARGET", "green")
+ env["CXXCOMSTR"] = colorize("CXX", "$TARGET", "green")
+ env["SHCXXCOMSTR"] = colorize("CXX", "$TARGET", "green")
+ env["LINKCOMSTR"] = colorize("LINK", "$TARGET", "red")
+ env["SHLINKCOMSTR"] = colorize("LINK", "$TARGET", "red")
+ env["ARCOMSTR"] = colorize("AR", "$TARGET", "red")
+ env["RANLIBCOMSTR"] = colorize("RANLIB", "$TARGET", "red")
+ env["PCHCOMSTR"] = colorize("PCH", "$TARGET", "blue")
+ env["QT4_RCCCOMSTR"] = colorize("RCC", "$TARGET", "blue")
+ env["QT4_UICCOMSTR"] = colorize("UIC", "$TARGET", "blue")
+ env["QT4_MOCFROMHCOMSTR"] = colorize("MOC", "$TARGET", "blue")
+ env["QT4_MOCFROMCXXCOMSTR"] = colorize("MOC", "$TARGET", "blue")
+ env["QT4_LRELEASECOMSTR"] = colorize("LRELEASE", "$TARGET", "blue")
+ env["QT4_LUPDATECOMSTR"] = colorize("LUPDATE", "$TARGET", "blue")
+ env["GENCOMSTR"] = colorize("GEN", "$TARGET", "blue")
+ env["RCCOMSTR"] = colorize("RC", "$TARGET", "blue")
+ env["BUNDLECOMSTR"] = colorize("BUNDLE", "$TARGET", "blue")
+ env["NIBCOMSTR"] = colorize("NIB", "$TARGET", "blue")
+ env["NSISCOMSTR"] = colorize("NSIS", "$TARGET", "blue")
+ env["INSTALLSTR"] = colorize("INSTALL", "$TARGET", "blue")
+ env["TESTCOMSTR"] = colorize("TEST", "$SOURCE", "yellow")
+ env["FOCOMSTR"] = colorize("FO", "$TARGET", "blue")
+ env["XSLTCOMSTR"] = colorize("XSLT", "$TARGET", "blue")
+ env["XMLLINTCOMSTR"] = colorize("XMLLINT", "$SOURCE", "blue")
+ env["DOXYCOMSTR"] = colorize("DOXY", "$SOURCE", "blue")
+ #Progress(colorize("DEP", "$TARGET", "red")
def checkObjCHeader(context, header) :
- context.Message("Checking for Objective-C header " + header + " ... ")
- ret = context.TryCompile("#include <Cocoa/Cocoa.h>\n#include <" + header + ">", ".m")
- context.Result(ret)
- return ret
+ context.Message("Checking for Objective-C header " + header + " ... ")
+ ret = context.TryCompile("#include <Cocoa/Cocoa.h>\n#include <" + header + ">", ".m")
+ context.Result(ret)
+ return ret
def checkForCpp11Support(context) :
- context.Message('Checking whether the C++ compiler supports C++11... ')
- result = context.TryLink(
- """
+ context.Message('Checking whether the C++ compiler supports C++11... ')
+ result = context.TryLink(
+ """
#include <memory>
int main(int, char **) {
- // shared_ptr test
- std::shared_ptr<int> intPtr = std::make_shared<int>();
+ // shared_ptr test
+ std::shared_ptr<int> intPtr = std::make_shared<int>();
- // unique_ptr test
- std::unique_ptr<int> intPtrUnique = std::unique_ptr<int>(new int(1));
+ // unique_ptr test
+ std::unique_ptr<int> intPtrUnique = std::unique_ptr<int>(new int(1));
- // auto test
- auto otherIntPtr = intPtr;
- std::shared_ptr<int> fooIntPtr = otherIntPtr;
+ // auto test
+ auto otherIntPtr = intPtr;
+ std::shared_ptr<int> fooIntPtr = otherIntPtr;
- // lambda test
- auto someFunction = [](int i){ i = i * i; };
+ // lambda test
+ auto someFunction = [](int i){ i = i * i; };
- // nullptr test
- double* fooDouble = nullptr;
- return 0;
+ // nullptr test
+ double* fooDouble = nullptr;
+ return 0;
}
""", '.cpp')
- context.Result(result)
- return result
+ context.Result(result)
+ return result
################################################################################
@@ -102,265 +102,265 @@ int main(int, char **) {
################################################################################
if ARGUMENTS.get("force-configure", 0) :
- SCons.SConf.SetCacheMode("force")
+ SCons.SConf.SetCacheMode("force")
def CheckPKG(context, name):
- context.Message( 'Checking for package %s... ' % name )
- ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
- context.Result( ret )
- return ret
+ context.Message( 'Checking for package %s... ' % name )
+ ret = context.TryAction('pkg-config --exists \'%s\'' % name)[0]
+ context.Result( ret )
+ return ret
def CheckVersion(context, library, version, define, header, value) :
- context.Message("Checking " + library + " version (>= " + version + ") ...")
- version = GetVersion(context, define, header)
- ok = version >= value
- context.Result(ok)
- return ok
+ context.Message("Checking " + library + " version (>= " + version + ") ...")
+ version = GetVersion(context, define, header)
+ ok = version >= value
+ context.Result(ok)
+ return ok
def GetVersion(context, define, header, extension = ".c") :
- ret = context.TryRun("""
+ ret = context.TryRun("""
#include <%(header)s>
#include <stdio.h>
int main(int argc, char* argv[]) {
- printf("%%d\\n", %(define)s);
- return 0;
+ printf("%%d\\n", %(define)s);
+ return 0;
}
""" % { "header" : header, "define": define }, extension)
- if ret[0] :
- return int(ret[1])
- else :
- return -1
+ if ret[0] :
+ return int(ret[1])
+ else :
+ return -1
conf = Configure(conf_env, custom_tests = {
- 'CheckCpp11Support' : checkForCpp11Support,
- })
+ 'CheckCpp11Support' : checkForCpp11Support,
+ })
if not conf.CheckCXX() or not conf.CheckCC() :
- print "Error: You need a working compiler"
- Exit(1)
+ print "Error: You need a working compiler"
+ Exit(1)
if not conf.CheckCpp11Support() :
- print "Error: You need a compiler with support for the C++11 standard"
- Exit(1)
+ print "Error: You need a compiler with support for the C++11 standard"
+ Exit(1)
env["HAVE_ZLIB"] = True
zlib_flags = {}
zlib_okay = False
if env.get("zlib_libdir", None) :
- zlib_flags["LIBPATH"] = [env["zlib_libdir"]]
- zlib_okay = True
+ zlib_flags["LIBPATH"] = [env["zlib_libdir"]]
+ zlib_okay = True
if env.get("zlib_includedir", None) :
- zlib_flags["CPPPATH"] = [env["zlib_includedir"]]
- zlib_okay = True
+ zlib_flags["CPPPATH"] = [env["zlib_includedir"]]
+ zlib_okay = True
if env.get("zlib_libfile", None) :
- zlib_flags["LIBS"] = [File(env["zlib_libfile"])]
- zlib_okay = True
+ zlib_flags["LIBS"] = [File(env["zlib_libfile"])]
+ zlib_okay = True
elif zlib_okay :
- zlib_flags["LIBS"] = ["z"]
+ zlib_flags["LIBS"] = ["z"]
if (not zlib_okay) and conf.CheckLib("z") :
- zlib_flags["LIBS"] = ["z"]
- zlib_okay = True
+ zlib_flags["LIBS"] = ["z"]
+ zlib_okay = True
if zlib_okay :
- env["ZLIB_FLAGS"] = zlib_flags
+ env["ZLIB_FLAGS"] = zlib_flags
elif not env.get("zlib_bundled_enable", True) :
- print "Error: Zlib not found and zlib_bundled_enable is false"
- Exit(1)
+ print "Error: Zlib not found and zlib_bundled_enable is false"
+ Exit(1)
else :
- env["ZLIB_BUNDLED"] = True
+ env["ZLIB_BUNDLED"] = True
if conf.CheckLib("resolv") :
- env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["resolv"]
+ env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["resolv"]
if env["PLATFORM"] != "win32" :
- if conf.CheckLib("pthread") :
- env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["pthread"]
+ if conf.CheckLib("pthread") :
+ env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["pthread"]
if conf.CheckLib("dl") :
- env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["dl"]
+ env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["dl"]
if conf.CheckLib("m") :
- env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["m"]
+ env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["m"]
if conf.CheckLib("c") :
- env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["c"]
+ env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["c"]
# Even if you find stdc++ on HP-UX, it is the wrong one for aCC
if env["PLATFORM"] != "hpux" :
- if conf.CheckLib("stdc++", language='CXX') :
- env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["stdc++"]
+ if conf.CheckLib("stdc++", language='CXX') :
+ env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["stdc++"]
conf.Finish()
# Boost
boost_conf_env = conf_env.Clone()
boost_flags = {}
if env.get("boost_libdir", None) :
- boost_flags["LIBPATH"] = [env["boost_libdir"]]
+ boost_flags["LIBPATH"] = [env["boost_libdir"]]
if env.get("boost_includedir", None) :
- if env["PLATFORM"] == "win32" or env["PLATFORM"] == "hpux" or env["PLATFORM"] == "sunos" :
- boost_flags["CPPPATH"] = [env["boost_includedir"]]
- else :
- # Using isystem to avoid getting warnings from a system boost
- # Unfortunately, this also disables dependency tracking
- boost_flags["CPPFLAGS"] = [("-isystem", env["boost_includedir"])]
+ if env["PLATFORM"] == "win32" or env["PLATFORM"] == "hpux" or env["PLATFORM"] == "sunos" :
+ boost_flags["CPPPATH"] = [env["boost_includedir"]]
+ else :
+ # Using isystem to avoid getting warnings from a system boost
+ # Unfortunately, this also disables dependency tracking
+ boost_flags["CPPFLAGS"] = [("-isystem", env["boost_includedir"])]
boost_conf_env.MergeFlags(boost_flags)
conf = Configure(boost_conf_env)
boostLibs = [("signals", None), ("system", "system/system_error.hpp"), ("thread", None), ("regex", None), ("program_options", None), ("filesystem", None), ("serialization", "archive/text_oarchive.hpp"), ("date_time", "date_time/date.hpp")]
allLibsPresent = True
libNames = []
for (lib, header) in boostLibs :
- if header :
- header = "boost/" + header
- else :
- header = "boost/" + lib + ".hpp"
- if not conf.CheckCXXHeader(header) :
- allLibsPresent = False
- break
- if env["PLATFORM"] != "win32" :
- libName = "boost_" + lib
- if not conf.CheckLib(libName, language='CXX') :
- libName += "-mt"
- if not conf.CheckLib(libName, language='CXX') :
- allLibsPresent = False
- break
- libNames.append(libName)
+ if header :
+ header = "boost/" + header
+ else :
+ header = "boost/" + lib + ".hpp"
+ if not conf.CheckCXXHeader(header) :
+ allLibsPresent = False
+ break
+ if env["PLATFORM"] != "win32" :
+ libName = "boost_" + lib
+ if not conf.CheckLib(libName, language='CXX') :
+ libName += "-mt"
+ if not conf.CheckLib(libName, language='CXX') :
+ allLibsPresent = False
+ break
+ libNames.append(libName)
if allLibsPresent :
- env["BOOST_FLAGS"] = boost_flags
- if env["PLATFORM"] != "win32" :
- env["BOOST_FLAGS"].update({"LIBS": libNames})
- if not conf.CheckCXXHeader("boost/uuid/uuid.hpp") :
- # FIXME: Remove this workaround when UUID is available in most distros
- env["BOOST_BUNDLED_UUID_ONLY"] = True
+ env["BOOST_FLAGS"] = boost_flags
+ if env["PLATFORM"] != "win32" :
+ env["BOOST_FLAGS"].update({"LIBS": libNames})
+ if not conf.CheckCXXHeader("boost/uuid/uuid.hpp") :
+ # FIXME: Remove this workaround when UUID is available in most distros
+ env["BOOST_BUNDLED_UUID_ONLY"] = True
elif not env.get("boost_bundled_enable", True) :
- print "Error: Boost not found and boost_bundled_enable is false"
- Exit(1)
+ print "Error: Boost not found and boost_bundled_enable is false"
+ Exit(1)
else :
- env["BOOST_BUNDLED"] = True
+ env["BOOST_BUNDLED"] = True
conf.Finish()
# Xss
env["HAVE_XSS"] = 0
if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :
- xss_flags = {
- "LIBPATH": ["/usr/X11R6/lib"],
- "LIBS": ["Xss"]
- }
- xss_env = conf_env.Clone()
- xss_env.MergeFlags(xss_flags)
- conf = Configure(xss_env)
- if conf.CheckFunc("XScreenSaverQueryExtension") :
- env["HAVE_XSS"] = 1
- env["XSS_FLAGS"] = xss_flags
- conf.Finish()
+ xss_flags = {
+ "LIBPATH": ["/usr/X11R6/lib"],
+ "LIBS": ["Xss"]
+ }
+ xss_env = conf_env.Clone()
+ xss_env.MergeFlags(xss_flags)
+ conf = Configure(xss_env)
+ if conf.CheckFunc("XScreenSaverQueryExtension") :
+ env["HAVE_XSS"] = 1
+ env["XSS_FLAGS"] = xss_flags
+ conf.Finish()
# GConf
env["HAVE_GCONF"] = 0
if env.get("try_gconf", True) and env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :
- gconf_env = conf_env.Clone()
- conf = Configure(gconf_env, custom_tests = {"CheckPKG": CheckPKG})
- if conf.CheckPKG("gconf-2.0") :
- gconf_bare_env = Environment()
- gconf_bare_env.ParseConfig('pkg-config --cflags gconf-2.0 gobject-2.0 --libs gconf-2.0 gobject-2.0')
- gconf_flags = {
- "LIBS": gconf_bare_env["LIBS"],
- "CCFLAGS": gconf_bare_env["CCFLAGS"],
- "CPPPATH": gconf_bare_env["CPPPATH"],
- "CPPDEFINES": gconf_bare_env.get("CPPDEFINES", []),
- }
- gconf_env.MergeFlags(gconf_flags)
- if conf.CheckCHeader("gconf/gconf-client.h") and conf.CheckLib("gconf-2") :
- env["HAVE_GCONF"] = 1
- env["GCONF_FLAGS"] = {
- "LIBS": gconf_env["LIBS"],
- "CCFLAGS": gconf_env["CCFLAGS"],
- "CPPPATH": gconf_env["CPPPATH"],
- "CPPDEFINES": gconf_env.get("CPPDEFINES", []),
- }
- conf.Finish()
+ gconf_env = conf_env.Clone()
+ conf = Configure(gconf_env, custom_tests = {"CheckPKG": CheckPKG})
+ if conf.CheckPKG("gconf-2.0") :
+ gconf_bare_env = Environment()
+ gconf_bare_env.ParseConfig('pkg-config --cflags gconf-2.0 gobject-2.0 --libs gconf-2.0 gobject-2.0')
+ gconf_flags = {
+ "LIBS": gconf_bare_env["LIBS"],
+ "CCFLAGS": gconf_bare_env["CCFLAGS"],
+ "CPPPATH": gconf_bare_env["CPPPATH"],
+ "CPPDEFINES": gconf_bare_env.get("CPPDEFINES", []),
+ }
+ gconf_env.MergeFlags(gconf_flags)
+ if conf.CheckCHeader("gconf/gconf-client.h") and conf.CheckLib("gconf-2") :
+ env["HAVE_GCONF"] = 1
+ env["GCONF_FLAGS"] = {
+ "LIBS": gconf_env["LIBS"],
+ "CCFLAGS": gconf_env["CCFLAGS"],
+ "CPPPATH": gconf_env["CPPPATH"],
+ "CPPDEFINES": gconf_env.get("CPPDEFINES", []),
+ }
+ conf.Finish()
# Sparkle
env["HAVE_SPARKLE"] = 0
if env["PLATFORM"] == "darwin" :
- sparkle_flags = {
- "FRAMEWORKPATH": ["/Library/Frameworks"],
- "FRAMEWORKS": ["Sparkle"]
- }
- sparkle_env = conf_env.Clone()
- sparkle_env.MergeFlags(sparkle_flags)
- conf = Configure(sparkle_env, custom_tests = { "CheckObjCHeader" : checkObjCHeader })
- if conf.CheckObjCHeader("Sparkle/Sparkle.h") :
- env["HAVE_SPARKLE"] = 1
- env["SPARKLE_FLAGS"] = sparkle_flags
- env["SPARKLE_FRAMEWORK"] = "/Library/Frameworks/Sparkle.framework"
- conf.Finish()
+ sparkle_flags = {
+ "FRAMEWORKPATH": ["/Library/Frameworks"],
+ "FRAMEWORKS": ["Sparkle"]
+ }
+ sparkle_env = conf_env.Clone()
+ sparkle_env.MergeFlags(sparkle_flags)
+ conf = Configure(sparkle_env, custom_tests = { "CheckObjCHeader" : checkObjCHeader })
+ if conf.CheckObjCHeader("Sparkle/Sparkle.h") :
+ env["HAVE_SPARKLE"] = 1
+ env["SPARKLE_FLAGS"] = sparkle_flags
+ env["SPARKLE_FRAMEWORK"] = "/Library/Frameworks/Sparkle.framework"
+ conf.Finish()
# Growl
env["HAVE_GROWL"] = 0
if env["PLATFORM"] == "darwin" :
- growl_flags = {
- "FRAMEWORKPATH": ["/Library/Frameworks"],
- "FRAMEWORKS": ["Growl"]
- }
- growl_env = conf_env.Clone()
- growl_env.MergeFlags(growl_flags)
- conf = Configure(growl_env, custom_tests = { "CheckObjCHeader" : checkObjCHeader })
- if conf.CheckObjCHeader("Growl/Growl.h") :
- env["HAVE_GROWL"] = 1
- env["GROWL_FLAGS"] = growl_flags
- env["GROWL_FRAMEWORK"] = "/Library/Frameworks/Growl.framework"
- conf.Finish()
+ growl_flags = {
+ "FRAMEWORKPATH": ["/Library/Frameworks"],
+ "FRAMEWORKS": ["Growl"]
+ }
+ growl_env = conf_env.Clone()
+ growl_env.MergeFlags(growl_flags)
+ conf = Configure(growl_env, custom_tests = { "CheckObjCHeader" : checkObjCHeader })
+ if conf.CheckObjCHeader("Growl/Growl.h") :
+ env["HAVE_GROWL"] = 1
+ env["GROWL_FLAGS"] = growl_flags
+ env["GROWL_FRAMEWORK"] = "/Library/Frameworks/Growl.framework"
+ conf.Finish()
# Snarl
if env["PLATFORM"] == "win32" :
- env["HAVE_SNARL"] = True
+ env["HAVE_SNARL"] = True
# LibXML
conf = Configure(conf_env, custom_tests = {"CheckVersion": CheckVersion})
if env.get("try_libxml", True) and conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
#and conf.CheckVersion("LibXML", "2.6.23", "LIBXML_VERSION", "libxml/xmlversion.h", 20623) :
- env["HAVE_LIBXML"] = 1
- env["LIBXML_FLAGS"] = { "LIBS": ["xml2"] }
+ env["HAVE_LIBXML"] = 1
+ env["LIBXML_FLAGS"] = { "LIBS": ["xml2"] }
conf.Finish()
if env.get("try_libxml", True) and not env.get("HAVE_LIBXML", 0) :
- libxml_env = conf_env.Clone()
- libxml_env.Append(CPPPATH = ["/usr/include/libxml2"])
- conf = Configure(libxml_env, custom_tests = {"CheckVersion": CheckVersion})
- if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
-# and conf.CheckVersion("LibXML", "2.6.23", "LIBXML_VERSION", "libxml/xmlversion.h", 20623):
- env["HAVE_LIBXML"] = 1
- libxml_env.Append()
- if os.path.basename(env["CC"]) in ("clang", "gcc"):
- env["LIBXML_FLAGS"] = { "CXXFLAGS": ["-isystem/usr/include/libxml2"], "LIBS": ["xml2"] }
- else:
- env["LIBXML_FLAGS"] = { "CPPPATH": ["/usr/include/libxml2"], "LIBS": ["xml2"] }
- conf.Finish()
+ libxml_env = conf_env.Clone()
+ libxml_env.Append(CPPPATH = ["/usr/include/libxml2"])
+ conf = Configure(libxml_env, custom_tests = {"CheckVersion": CheckVersion})
+ if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
+# and conf.CheckVersion("LibXML", "2.6.23", "LIBXML_VERSION", "libxml/xmlversion.h", 20623):
+ env["HAVE_LIBXML"] = 1
+ libxml_env.Append()
+ if os.path.basename(env["CC"]) in ("clang", "gcc"):
+ env["LIBXML_FLAGS"] = { "CXXFLAGS": ["-isystem/usr/include/libxml2"], "LIBS": ["xml2"] }
+ else:
+ env["LIBXML_FLAGS"] = { "CPPPATH": ["/usr/include/libxml2"], "LIBS": ["xml2"] }
+ conf.Finish()
# Expat
if env.get("try_expat", True) and not env.get("HAVE_LIBXML",0) :
- expat_conf_env = conf_env.Clone()
- expat_flags = {}
- if env.get("expat_libdir", None) :
- expat_flags["LIBPATH"] = [env["expat_libdir"]]
- if env.get("expat_includedir", None) :
- expat_flags["CPPPATH"] = [env["expat_includedir"]]
- expat_conf_env.MergeFlags(expat_flags)
- conf = Configure(expat_conf_env)
- if conf.CheckCHeader("expat.h") and conf.CheckLib(env["expat_libname"]) :
- env["HAVE_EXPAT"] = 1
- env["EXPAT_FLAGS"] = { "LIBS": [env["expat_libname"]] }
- env["EXPAT_FLAGS"].update(expat_flags)
- conf.Finish()
+ expat_conf_env = conf_env.Clone()
+ expat_flags = {}
+ if env.get("expat_libdir", None) :
+ expat_flags["LIBPATH"] = [env["expat_libdir"]]
+ if env.get("expat_includedir", None) :
+ expat_flags["CPPPATH"] = [env["expat_includedir"]]
+ expat_conf_env.MergeFlags(expat_flags)
+ conf = Configure(expat_conf_env)
+ if conf.CheckCHeader("expat.h") and conf.CheckLib(env["expat_libname"]) :
+ env["HAVE_EXPAT"] = 1
+ env["EXPAT_FLAGS"] = { "LIBS": [env["expat_libname"]] }
+ env["EXPAT_FLAGS"].update(expat_flags)
+ conf.Finish()
# Bundled expat
bundledExpat = False
if not env.get("HAVE_EXPAT", 0) and not env.get("HAVE_LIBXML", 0) :
- print "Expat or LibXML not found. Using bundled Expat"
- SConscript("#/3rdParty/Expat/SConscript")
- env["HAVE_EXPAT"] = 1
- env["EXPAT_BUNDLED"] = True
+ print "Expat or LibXML not found. Using bundled Expat"
+ SConscript("#/3rdParty/Expat/SConscript")
+ env["HAVE_EXPAT"] = 1
+ env["EXPAT_BUNDLED"] = True
################################################################################
# IDN library
@@ -373,172 +373,172 @@ icu_env = conf_env.Clone()
use_icu = bool(env["icu"])
icu_prefix = ""
if isinstance(env["icu"], str) :
- icu_prefix = env["icu"]
+ icu_prefix = env["icu"]
icu_flags = {}
if icu_prefix :
- icu_flags = { "CPPPATH": [os.path.join(icu_prefix, "include")] }
- icu_flags["LIBPATH"] = [os.path.join(icu_prefix, "lib")]
- icu_env.MergeFlags(icu_flags)
+ icu_flags = { "CPPPATH": [os.path.join(icu_prefix, "include")] }
+ icu_flags["LIBPATH"] = [os.path.join(icu_prefix, "lib")]
+ icu_env.MergeFlags(icu_flags)
icu_conf = Configure(icu_env)
if use_icu and icu_conf.CheckCHeader("unicode/usprep.h") :
- env["HAVE_ICU"] = 1
- env["ICU_FLAGS"] = icu_flags
- env["ICU_FLAGS"]["LIBS"] = ["icuuc"]
+ env["HAVE_ICU"] = 1
+ env["ICU_FLAGS"] = icu_flags
+ env["ICU_FLAGS"]["LIBS"] = ["icuuc"]
icu_conf.Finish()
# LibIDN
libidn_conf_env = conf_env.Clone()
libidn_flags = {}
if env.get("libidn_libdir", None) :
- libidn_flags["LIBPATH"] = [env["libidn_libdir"]]
+ libidn_flags["LIBPATH"] = [env["libidn_libdir"]]
if env.get("libidn_includedir", None) :
- libidn_flags["CPPPATH"] = [env["libidn_includedir"]]
+ libidn_flags["CPPPATH"] = [env["libidn_includedir"]]
libidn_conf_env.MergeFlags(libidn_flags)
conf = Configure(libidn_conf_env)
if env.get("try_libidn", True) and not env.get("HAVE_ICU") and conf.CheckCHeader("idna.h") and conf.CheckLib(env["libidn_libname"]) :
- env["HAVE_LIBIDN"] = 1
- env["LIBIDN_FLAGS"] = { "LIBS": [env["libidn_libname"]] }
- env["LIBIDN_FLAGS"].update(libidn_flags)
+ env["HAVE_LIBIDN"] = 1
+ env["LIBIDN_FLAGS"] = { "LIBS": [env["libidn_libname"]] }
+ env["LIBIDN_FLAGS"].update(libidn_flags)
conf.Finish()
# Fallback to bundled LibIDN
if not env.get("HAVE_ICU", False) and not env.get("HAVE_LIBIDN", False) :
- if env.get("libidn_bundled_enable", True) :
- env["HAVE_LIBIDN"] = 1
- env["LIBIDN_BUNDLED"] = 1
- elif env.get("need_idn", True):
- print "Error: ICU and LIBIDN not found, and libidn_bundled_enable is false"
- Exit(1)
- else:
- print "Proceeding without an IDN library because need_idn was false. This will break all internal binaries"
+ if env.get("libidn_bundled_enable", True) :
+ env["HAVE_LIBIDN"] = 1
+ env["LIBIDN_BUNDLED"] = 1
+ elif env.get("need_idn", True):
+ print "Error: ICU and LIBIDN not found, and libidn_bundled_enable is false"
+ Exit(1)
+ else:
+ print "Proceeding without an IDN library because need_idn was false. This will break all internal binaries"
# Unbound
if env["unbound"] :
- env["LDNS_BUNDLED"] = 1
- env["UNBOUND_BUNDLED"] = 1
+ env["LDNS_BUNDLED"] = 1
+ env["UNBOUND_BUNDLED"] = 1
else :
- env["LDNS_FLAGS"] = {}
- env["UNBOUND_FLAGS"] = {}
+ env["LDNS_FLAGS"] = {}
+ env["UNBOUND_FLAGS"] = {}
# LibMiniUPnPc
if env["experimental_ft"] :
- libminiupnpc_flags = {"CPPPATH": ["/usr/include/miniupnpc/"]}
- libminiupnpc_conf_env = conf_env.Clone()
- if env.get("libminiupnpc_libdir", None) :
- libminiupnpc_flags["LIBPATH"] = [env["libminiupnpc_libdir"]]
- if env.get("libminiupnpc_includedir", None) :
- libminiupnpc_flags["CPPPATH"] = [env["libminiupnpc_includedir"]]
- libminiupnpc_conf_env.MergeFlags(libminiupnpc_flags)
- conf = Configure(libminiupnpc_conf_env)
- if conf.CheckCHeader("miniupnpc.h") and conf.CheckLib(env["libminiupnpc_libname"]) and False :
- # ^ False because APIs aren't stable
- env["HAVE_LIBMINIUPNPC"] = 1
- env["LIBMINIUPNPC_FLAGS"] = { "LIBS": ["miniupnpc"] }
- env["LIBMINIUPNPC_FLAGS"].update(libminiupnpc_flags)
- else :
- env["LIBMINIUPNPC_BUNDLED"] = 1
- conf.Finish()
+ libminiupnpc_flags = {"CPPPATH": ["/usr/include/miniupnpc/"]}
+ libminiupnpc_conf_env = conf_env.Clone()
+ if env.get("libminiupnpc_libdir", None) :
+ libminiupnpc_flags["LIBPATH"] = [env["libminiupnpc_libdir"]]
+ if env.get("libminiupnpc_includedir", None) :
+ libminiupnpc_flags["CPPPATH"] = [env["libminiupnpc_includedir"]]
+ libminiupnpc_conf_env.MergeFlags(libminiupnpc_flags)
+ conf = Configure(libminiupnpc_conf_env)
+ if conf.CheckCHeader("miniupnpc.h") and conf.CheckLib(env["libminiupnpc_libname"]) and False :
+ # ^ False because APIs aren't stable
+ env["HAVE_LIBMINIUPNPC"] = 1
+ env["LIBMINIUPNPC_FLAGS"] = { "LIBS": ["miniupnpc"] }
+ env["LIBMINIUPNPC_FLAGS"].update(libminiupnpc_flags)
+ else :
+ env["LIBMINIUPNPC_BUNDLED"] = 1
+ conf.Finish()
else :
- env["LIBMINIUPNPC_FLAGS"] = {}
+ env["LIBMINIUPNPC_FLAGS"] = {}
# LibNATPMP
if env["experimental_ft"] :
- libnatpmp_flags = {}
- libnatpmp_conf_env = conf_env.Clone()
- if env.get("libnatpmp_libdir", None) :
- libnatpmp_flags["LIBPATH"] = [env["libnatpmp_libdir"]]
- if env.get("libnatpmp_includedir", None) :
- libnatpmp_flags["CPPPATH"] = [env["libnatpmp_includedir"]]
- libnatpmp_conf_env.MergeFlags(libnatpmp_flags)
- conf = Configure(libnatpmp_conf_env)
- if conf.CheckCHeader("natpmp.h") and conf.CheckLib(env["libnatpmp_libname"]) and False:
- # ^ False because APIs aren't stable
- env["HAVE_LIBNATPMP"] = 1
- env["LIBNATPMP_FLAGS"] = { "LIBS": ["natpmp"] }
- env["LIBNATPMP_FLAGS"].update(libnatpmp_flags)
- else :
- env["LIBNATPMP_BUNDLED"] = 1
- conf.Finish()
+ libnatpmp_flags = {}
+ libnatpmp_conf_env = conf_env.Clone()
+ if env.get("libnatpmp_libdir", None) :
+ libnatpmp_flags["LIBPATH"] = [env["libnatpmp_libdir"]]
+ if env.get("libnatpmp_includedir", None) :
+ libnatpmp_flags["CPPPATH"] = [env["libnatpmp_includedir"]]
+ libnatpmp_conf_env.MergeFlags(libnatpmp_flags)
+ conf = Configure(libnatpmp_conf_env)
+ if conf.CheckCHeader("natpmp.h") and conf.CheckLib(env["libnatpmp_libname"]) and False:
+ # ^ False because APIs aren't stable
+ env["HAVE_LIBNATPMP"] = 1
+ env["LIBNATPMP_FLAGS"] = { "LIBS": ["natpmp"] }
+ env["LIBNATPMP_FLAGS"].update(libnatpmp_flags)
+ else :
+ env["LIBNATPMP_BUNDLED"] = 1
+ conf.Finish()
else :
- env["LIBNATPMP_FLAGS"] = {}
+ env["LIBNATPMP_FLAGS"] = {}
# SQLite
if env["experimental"] :
- sqlite_conf_env = conf_env.Clone()
- sqlite_flags = {}
- if env.get("sqlite_libdir", None) :
- sqlite_flags["LIBPATH"] = [env["sqlite_libdir"]]
- if env.get("sqlite_includedir", None) :
- sqlite_flags["CPPPATH"] = [env["sqlite_includedir"]]
- sqlite_conf_env.MergeFlags(sqlite_flags)
- conf = Configure(sqlite_conf_env)
- if conf.CheckCHeader("sqlite3.h") and conf.CheckLib(env["sqlite_libname"]) and not env.get("sqlite_force_bundled", False):
- env["HAVE_SQLITE"] = 1
- env["SQLITE_FLAGS"] = { "LIBS": [env["sqlite_libname"]] }
- env["SQLITE_FLAGS"].update(sqlite_flags)
- else :
- env["SQLITE_BUNDLED"] = 1
- conf.Finish()
+ sqlite_conf_env = conf_env.Clone()
+ sqlite_flags = {}
+ if env.get("sqlite_libdir", None) :
+ sqlite_flags["LIBPATH"] = [env["sqlite_libdir"]]
+ if env.get("sqlite_includedir", None) :
+ sqlite_flags["CPPPATH"] = [env["sqlite_includedir"]]
+ sqlite_conf_env.MergeFlags(sqlite_flags)
+ conf = Configure(sqlite_conf_env)
+ if conf.CheckCHeader("sqlite3.h") and conf.CheckLib(env["sqlite_libname"]) and not env.get("sqlite_force_bundled", False):
+ env["HAVE_SQLITE"] = 1
+ env["SQLITE_FLAGS"] = { "LIBS": [env["sqlite_libname"]] }
+ env["SQLITE_FLAGS"].update(sqlite_flags)
+ else :
+ env["SQLITE_BUNDLED"] = 1
+ conf.Finish()
else :
- env["SQLITE_FLAGS"] = {}
+ env["SQLITE_FLAGS"] = {}
# Lua
lua_conf_env = conf_env.Clone()
lua_flags = {}
if env.get("lua_libdir", None) :
- lua_flags["LIBPATH"] = [env["lua_libdir"]]
+ lua_flags["LIBPATH"] = [env["lua_libdir"]]
if env.get("lua_includedir", None) :
- lua_flags["CPPPATH"] = [env["lua_includedir"]]
+ lua_flags["CPPPATH"] = [env["lua_includedir"]]
lua_conf_env.MergeFlags(lua_flags)
conf = Configure(lua_conf_env)
if not env.get("lua_force_bundled", False) and conf.CheckLibWithHeader(env["lua_libname"], "lua.hpp", "cxx", autoadd = 0) :
- env["HAVE_LUA"] = 1
- env["LUA_FLAGS"] = { "LIBS": [env["lua_libname"]] }
- lua_version = GetVersion(conf, "LUA_VERSION_NUM", "lua.h")
- if lua_version > 0 :
- env["LUA_FLAGS"]["LUA_VERSION"] = str(lua_version // 100) + "." + str(lua_version % 100)
- else :
- print "Warning: Unable to determine Lua version. Not installing Lua libraries."
- env["LUA_FLAGS"].update(lua_flags)
+ env["HAVE_LUA"] = 1
+ env["LUA_FLAGS"] = { "LIBS": [env["lua_libname"]] }
+ lua_version = GetVersion(conf, "LUA_VERSION_NUM", "lua.h")
+ if lua_version > 0 :
+ env["LUA_FLAGS"]["LUA_VERSION"] = str(lua_version // 100) + "." + str(lua_version % 100)
+ else :
+ print "Warning: Unable to determine Lua version. Not installing Lua libraries."
+ env["LUA_FLAGS"].update(lua_flags)
else :
- env["LUA_BUNDLED"] = 1
+ env["LUA_BUNDLED"] = 1
conf.Finish()
# Readline
editline_conf_env = conf_env.Clone()
editline_flags = {}
if env.get("editline_libdir", None) :
- editline_flags["LIBPATH"] = [env["editline_libdir"]]
+ editline_flags["LIBPATH"] = [env["editline_libdir"]]
if env.get("editline_includedir", None) :
- editline_flags["CPPPATH"] = [env["editline_includedir"]]
+ editline_flags["CPPPATH"] = [env["editline_includedir"]]
editline_conf_env.MergeFlags(editline_flags)
conf = Configure(editline_conf_env)
if conf.CheckLibWithHeader(env["editline_libname"], ["stdio.h", "editline/readline.h"], "c") :
- env["HAVE_EDITLINE"] = 1
- env["EDITLINE_FLAGS"] = { "LIBS": [env["editline_libname"]] }
- env["EDITLINE_FLAGS"].update(editline_flags)
+ env["HAVE_EDITLINE"] = 1
+ env["EDITLINE_FLAGS"] = { "LIBS": [env["editline_libname"]] }
+ env["EDITLINE_FLAGS"].update(editline_flags)
conf.Finish()
# Avahi
avahi_conf_env = conf_env.Clone()
avahi_flags = {}
if env.get("avahi_libdir", None) :
- avahi_flags["LIBPATH"] = [env["avahi_libdir"]]
+ avahi_flags["LIBPATH"] = [env["avahi_libdir"]]
if env.get("avahi_includedir", None) :
- avahi_flags["CPPPATH"] = [env["avahi_includedir"]]
+ avahi_flags["CPPPATH"] = [env["avahi_includedir"]]
avahi_conf_env.MergeFlags(avahi_flags)
conf = Configure(avahi_conf_env)
if env.get("try_avahi", True) and conf.CheckCHeader("avahi-client/client.h") and conf.CheckLib("avahi-client") and conf.CheckLib("avahi-common") :
- env["HAVE_AVAHI"] = True
- env["AVAHI_FLAGS"] = { "LIBS": ["avahi-client", "avahi-common"] }
- env["AVAHI_FLAGS"].update(avahi_flags)
+ env["HAVE_AVAHI"] = True
+ env["AVAHI_FLAGS"] = { "LIBS": ["avahi-client", "avahi-common"] }
+ env["AVAHI_FLAGS"].update(avahi_flags)
conf.Finish()
# Qt
if env["qt"] :
- env["QTDIR"] = env["qt"]
+ env["QTDIR"] = env["qt"]
################################################################################
@@ -546,123 +546,123 @@ if env["qt"] :
################################################################################
env["OPENSSL_FLAGS"] = {}
if env.get("tls_backend") == "native" :
- if env["PLATFORM"] == "win32" :
- env["HAVE_SCHANNEL"] = True
- elif env["PLATFORM"] == "darwin" and env["target"] == "native":
- env["HAVE_SECURETRANSPORT"] = True
- elif env["target"] in ("iphone-device", "iphone-simulator", "xcode", "android") :
- env["tls_backend"] = "openssl_bundled"
- else :
- env["tls_backend"] = "openssl"
+ if env["PLATFORM"] == "win32" :
+ env["HAVE_SCHANNEL"] = True
+ elif env["PLATFORM"] == "darwin" and env["target"] == "native":
+ env["HAVE_SECURETRANSPORT"] = True
+ elif env["target"] in ("iphone-device", "iphone-simulator", "xcode", "android") :
+ env["tls_backend"] = "openssl_bundled"
+ else :
+ env["tls_backend"] = "openssl"
# OpenSSL
if env.get("tls_backend") == "openssl_bundled" :
- env["OPENSSL_BUNDLED"] = True
- env["HAVE_OPENSSL"] = True
+ env["OPENSSL_BUNDLED"] = True
+ env["HAVE_OPENSSL"] = True
elif env.get("tls_backend") == "openssl" :
- openssl_env = conf_env.Clone()
- use_openssl = bool(env["openssl"])
- openssl_prefix = ""
- if isinstance(env["openssl"], str) :
- openssl_prefix = env["openssl"]
- openssl_flags = {}
- if openssl_prefix :
- openssl_include = env.get("openssl_include")
- openssl_libdir = env.get("openssl_libdir")
- if openssl_include:
- openssl_flags = {"CPPPATH":[openssl_include]}
- else:
- openssl_flags = { "CPPPATH": [os.path.join(openssl_prefix, "include")] }
- if openssl_libdir:
- openssl_flags["LIBPATH"] = [openssl_libdir]
- env["OPENSSL_DIR"] = openssl_prefix
- elif env["PLATFORM"] == "win32" :
- openssl_flags["LIBPATH"] = [os.path.join(openssl_prefix, "lib", "VC")]
- env["OPENSSL_DIR"] = openssl_prefix
- else :
- openssl_flags["LIBPATH"] = [os.path.join(openssl_prefix, "lib")]
- openssl_env.MergeFlags(openssl_flags)
-
- openssl_conf = Configure(openssl_env)
- if use_openssl and openssl_conf.CheckCHeader("openssl/ssl.h") :
- env["HAVE_OPENSSL"] = 1
- env["OPENSSL_FLAGS"] = openssl_flags
- openssl_libnames = env.get("openssl_libnames")
- if openssl_libnames:
- env["OPENSSL_FLAGS"]["LIBS"] = openssl_libnames.split(',')
- elif env["PLATFORM"] == "win32" :
- env["OPENSSL_FLAGS"]["LIBS"] = ["libeay32MD", "ssleay32MD"]
- else:
- env["OPENSSL_FLAGS"]["LIBS"] = ["ssl", "crypto"]
- if env["PLATFORM"] == "darwin" :
- if platform.mac_ver()[0].startswith("10.5") :
- env["OPENSSL_FLAGS"]["FRAMEWORKS"] = ["Security"]
- openssl_conf.Finish()
+ openssl_env = conf_env.Clone()
+ use_openssl = bool(env["openssl"])
+ openssl_prefix = ""
+ if isinstance(env["openssl"], str) :
+ openssl_prefix = env["openssl"]
+ openssl_flags = {}
+ if openssl_prefix :
+ openssl_include = env.get("openssl_include")
+ openssl_libdir = env.get("openssl_libdir")
+ if openssl_include:
+ openssl_flags = {"CPPPATH":[openssl_include]}
+ else:
+ openssl_flags = { "CPPPATH": [os.path.join(openssl_prefix, "include")] }
+ if openssl_libdir:
+ openssl_flags["LIBPATH"] = [openssl_libdir]
+ env["OPENSSL_DIR"] = openssl_prefix
+ elif env["PLATFORM"] == "win32" :
+ openssl_flags["LIBPATH"] = [os.path.join(openssl_prefix, "lib", "VC")]
+ env["OPENSSL_DIR"] = openssl_prefix
+ else :
+ openssl_flags["LIBPATH"] = [os.path.join(openssl_prefix, "lib")]
+ openssl_env.MergeFlags(openssl_flags)
+
+ openssl_conf = Configure(openssl_env)
+ if use_openssl and openssl_conf.CheckCHeader("openssl/ssl.h") :
+ env["HAVE_OPENSSL"] = 1
+ env["OPENSSL_FLAGS"] = openssl_flags
+ openssl_libnames = env.get("openssl_libnames")
+ if openssl_libnames:
+ env["OPENSSL_FLAGS"]["LIBS"] = openssl_libnames.split(',')
+ elif env["PLATFORM"] == "win32" :
+ env["OPENSSL_FLAGS"]["LIBS"] = ["libeay32MD", "ssleay32MD"]
+ else:
+ env["OPENSSL_FLAGS"]["LIBS"] = ["ssl", "crypto"]
+ if env["PLATFORM"] == "darwin" :
+ if platform.mac_ver()[0].startswith("10.5") :
+ env["OPENSSL_FLAGS"]["FRAMEWORKS"] = ["Security"]
+ openssl_conf.Finish()
if env["PLATFORM"] == "win32" :
- # On Windows link to secur32. It is needed by Swiften/SASL/WindowsAuthentication
- env.Append(LIBS = ["secur32"])
+ # On Windows link to secur32. It is needed by Swiften/SASL/WindowsAuthentication
+ env.Append(LIBS = ["secur32"])
#Hunspell
hunspell_env = conf_env.Clone()
hunspell_prefix = isinstance(env.get("hunspell_prefix", False), str) and env["hunspell_prefix"] or ""
hunspell_flags = {}
if hunspell_prefix :
- hunspell_flags = {"CPPPATH":[os.path.join(hunspell_prefix, "include")], "LIBPATH":[os.path.join(hunspell_prefix, "lib")]}
+ hunspell_flags = {"CPPPATH":[os.path.join(hunspell_prefix, "include")], "LIBPATH":[os.path.join(hunspell_prefix, "lib")]}
hunspell_env.MergeFlags(hunspell_flags)
env["HAVE_HUNSPELL"] = 0;
if env.get("hunspell_enable", False) :
- hunspell_conf = Configure(hunspell_env)
- if hunspell_conf.CheckCXXHeader("hunspell/hunspell.hxx") and hunspell_conf.CheckLib("hunspell") :
- env["HAVE_HUNSPELL"] = 1
- hunspell_flags["LIBS"] = ["hunspell"]
- env["HUNSPELL_FLAGS"] = hunspell_flags
- hunspell_conf.Finish()
+ hunspell_conf = Configure(hunspell_env)
+ if hunspell_conf.CheckCXXHeader("hunspell/hunspell.hxx") and hunspell_conf.CheckLib("hunspell") :
+ env["HAVE_HUNSPELL"] = 1
+ hunspell_flags["LIBS"] = ["hunspell"]
+ env["HUNSPELL_FLAGS"] = hunspell_flags
+ hunspell_conf.Finish()
# Bonjour
if env["PLATFORM"] == "darwin" and env["target"] == "native" :
- env["HAVE_BONJOUR"] = 1
+ env["HAVE_BONJOUR"] = 1
elif env.get("bonjour", False) :
- bonjour_env = conf_env.Clone()
- bonjour_conf = Configure(bonjour_env)
- bonjour_flags = {}
- if env.get("bonjour") != True :
- bonjour_prefix = env["bonjour"]
- bonjour_flags["CPPPATH"] = [os.path.join(bonjour_prefix, "include")]
- bonjour_flags["LIBPATH"] = [os.path.join(bonjour_prefix, "lib", "win32")]
- bonjour_env.MergeFlags(bonjour_flags)
- if bonjour_conf.CheckCHeader("dns_sd.h") and bonjour_conf.CheckLib("dnssd") :
- env["HAVE_BONJOUR"] = 1
- env["BONJOUR_FLAGS"] = bonjour_flags
- env["BONJOUR_FLAGS"]["LIBS"] = ["dnssd"]
- bonjour_conf.Finish()
+ bonjour_env = conf_env.Clone()
+ bonjour_conf = Configure(bonjour_env)
+ bonjour_flags = {}
+ if env.get("bonjour") != True :
+ bonjour_prefix = env["bonjour"]
+ bonjour_flags["CPPPATH"] = [os.path.join(bonjour_prefix, "include")]
+ bonjour_flags["LIBPATH"] = [os.path.join(bonjour_prefix, "lib", "win32")]
+ bonjour_env.MergeFlags(bonjour_flags)
+ if bonjour_conf.CheckCHeader("dns_sd.h") and bonjour_conf.CheckLib("dnssd") :
+ env["HAVE_BONJOUR"] = 1
+ env["BONJOUR_FLAGS"] = bonjour_flags
+ env["BONJOUR_FLAGS"]["LIBS"] = ["dnssd"]
+ bonjour_conf.Finish()
# Cocoa & IOKit
if env["PLATFORM"] == "darwin" :
- cocoa_conf = Configure(conf_env)
- if cocoa_conf.CheckCHeader("IOKit/IOKitLib.h") :
- env["HAVE_IOKIT"] = True
- cocoa_conf.Finish()
+ cocoa_conf = Configure(conf_env)
+ if cocoa_conf.CheckCHeader("IOKit/IOKitLib.h") :
+ env["HAVE_IOKIT"] = True
+ cocoa_conf.Finish()
# Qt
try :
- myenv = env.Clone()
- myenv.Tool("qt4", toolpath = ["#/BuildTools/SCons/Tools"])
- env["HAVE_QT"] = True
+ myenv = env.Clone()
+ myenv.Tool("qt4", toolpath = ["#/BuildTools/SCons/Tools"])
+ env["HAVE_QT"] = True
except SCons.Errors.StopError:
- env["HAVE_QT"] = False
+ env["HAVE_QT"] = False
except Exception as e:
- print "Info: %s" % str(e)
- env["HAVE_QT"] = False
+ print "Info: %s" % str(e)
+ env["HAVE_QT"] = False
################################################################################
# DocBook setup
################################################################################
if env.get("docbook_xml") :
- env["DOCBOOK_XML_DIR"] = env["docbook_xml"]
+ env["DOCBOOK_XML_DIR"] = env["docbook_xml"]
if env.get("docbook_xsl") :
- env["DOCBOOK_XSL_DIR"] = env["docbook_xsl"]
+ env["DOCBOOK_XSL_DIR"] = env["docbook_xsl"]
################################################################################
@@ -670,11 +670,11 @@ if env.get("docbook_xsl") :
################################################################################
try:
- if env.Dir("#/.git").exists() :
- if not env.GetOption("clean") and env.get("install_git_hooks", True) :
- env.Install("#/.git/hooks", Glob("#/BuildTools/Git/Hooks/*"))
+ if env.Dir("#/.git").exists() :
+ if not env.GetOption("clean") and env.get("install_git_hooks", True) :
+ env.Install("#/.git/hooks", Glob("#/BuildTools/Git/Hooks/*"))
except TypeError:
- print "You seem to be using Swift in a Git submodule. Not installing hooks."
+ print "You seem to be using Swift in a Git submodule. Not installing hooks."
################################################################################
@@ -682,23 +682,23 @@ except TypeError:
################################################################################
if ARGUMENTS.get("replace_pragma_once", False) :
- env.Tool("ReplacePragmaOnce", toolpath = ["#/BuildTools/SCons/Tools"])
-
- def relpath(path, start) :
- i = len(os.path.commonprefix([path, start]))
- return path[i+1:]
-
- for actual_root, dirs, files in os.walk(root) :
- if "3rdParty" in actual_root :
- continue
- for file in files :
- if not file.endswith(".h") :
- continue
- include = relpath(os.path.join(actual_root, file), root)
- env.ReplacePragmaOnce("#/include/" + include, "#/" + include)
- env.Append(CPPPATH = ["#/include"])
+ env.Tool("ReplacePragmaOnce", toolpath = ["#/BuildTools/SCons/Tools"])
+
+ def relpath(path, start) :
+ i = len(os.path.commonprefix([path, start]))
+ return path[i+1:]
+
+ for actual_root, dirs, files in os.walk(root) :
+ if "3rdParty" in actual_root :
+ continue
+ for file in files :
+ if not file.endswith(".h") :
+ continue
+ include = relpath(os.path.join(actual_root, file), root)
+ env.ReplacePragmaOnce("#/include/" + include, "#/" + include)
+ env.Append(CPPPATH = ["#/include"])
else :
- env.Append(CPPPATH = [root])
+ env.Append(CPPPATH = [root])
################################################################################
@@ -706,29 +706,29 @@ else :
################################################################################
if ARGUMENTS.get("dump_trace", False) :
- env.SetOption("no_exec", True)
- env["TEST"] = True
- env["BOOST_BUILD_BCP"] = True
- env.Decider(lambda x, y, z : True)
- SCons.Node.Python.Value.changed_since_last_build = (lambda x, y, z: True)
+ env.SetOption("no_exec", True)
+ env["TEST"] = True
+ env["BOOST_BUILD_BCP"] = True
+ env.Decider(lambda x, y, z : True)
+ SCons.Node.Python.Value.changed_since_last_build = (lambda x, y, z: True)
# Modules
modules = []
if os.path.isdir(Dir("#/3rdParty").abspath) :
- for dir in os.listdir(Dir("#/3rdParty").abspath) :
- full_dir = os.path.join(Dir("#/3rdParty").abspath, dir)
- if not os.path.isdir(full_dir) :
- continue
- sconscript = os.path.join(full_dir, "SConscript")
- if os.path.isfile(sconscript) :
- modules.append("3rdParty/" + dir)
+ for dir in os.listdir(Dir("#/3rdParty").abspath) :
+ full_dir = os.path.join(Dir("#/3rdParty").abspath, dir)
+ if not os.path.isdir(full_dir) :
+ continue
+ sconscript = os.path.join(full_dir, "SConscript")
+ if os.path.isfile(sconscript) :
+ modules.append("3rdParty/" + dir)
for dir in os.listdir(Dir("#").abspath) :
- full_dir = os.path.join(Dir("#").abspath, dir)
- if not os.path.isdir(full_dir) :
- continue
- sconscript = os.path.join(full_dir, "SConscript")
- if os.path.isfile(sconscript) :
- modules.append(dir)
+ full_dir = os.path.join(Dir("#").abspath, dir)
+ if not os.path.isdir(full_dir) :
+ continue
+ sconscript = os.path.join(full_dir, "SConscript")
+ if os.path.isfile(sconscript) :
+ modules.append(dir)
# QA comes last
modules.remove("QA")
@@ -737,13 +737,13 @@ modules.append("QA")
# Flags
env["PROJECTS"] = [m for m in modules if m not in ["Documentation", "QA", "SwifTools"] and not m.startswith("3rdParty")]
for stage in ["flags", "build"] :
- env["SCONS_STAGE"] = stage
- SConscript(dirs = map(lambda x : root + "/" + x, modules))
+ env["SCONS_STAGE"] = stage
+ SConscript(dirs = map(lambda x : root + "/" + x, modules))
# SLOCCount
if ARGUMENTS.get("sloccount", False) :
- for project in env["PROJECTS"] :
- env.SLOCCount("#/" + project)
+ for project in env["PROJECTS"] :
+ env.SLOCCount("#/" + project)
################################################################################
@@ -756,11 +756,11 @@ print " -------------------"
parsers = []
if env.get("HAVE_LIBXML", 0):
- parsers.append("LibXML")
+ parsers.append("LibXML")
if env.get("HAVE_EXPAT", 0):
- parsers.append("Expat")
- if env.get("EXPAT_BUNDLED", False) :
- parsers.append("(Bundled)")
+ parsers.append("Expat")
+ if env.get("EXPAT_BUNDLED", False) :
+ parsers.append("(Bundled)")
print " Projects: " + ' '.join(env["PROJECTS"])
print ""
print " XML Parsers: " + ' '.join(parsers)
@@ -768,3 +768,8 @@ print " XML Parsers: " + ' '.join(parsers)
print " TLS Support: " + (env.get("HAVE_OPENSSL",0) and "OpenSSL" or env.get("HAVE_SECURETRANSPORT",0) and "Secure Transport" or env.get("HAVE_SCHANNEL", 0) and "Schannel" or "Disabled")
print " DNSSD Support: " + (env.get("HAVE_BONJOUR") and "Bonjour" or (env.get("HAVE_AVAHI") and "Avahi" or "Disabled"))
print
+
+if not GetOption("help") and not env.get("HAVE_OPENSSL", 0) and not env.get("HAVE_SCHANNEL", 0) and not env.get("HAVE_SECURETRANSPORT", 0):
+ print "Error: A working TLS backend is required. Please check the documentation for more information."
+ Exit(1)
+