From 625d6a9f18c2377cdc3180e74b773ce3cbb2dcba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Remko=20Tron=C3=A7on?= <git@el-tramo.be>
Date: Sun, 28 Mar 2010 14:37:13 +0200
Subject: Moved SConscript guts to BuildTools dir.


diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
new file mode 100644
index 0000000..b730e98
--- /dev/null
+++ b/BuildTools/SCons/SConstruct
@@ -0,0 +1,412 @@
+import sys, os
+sys.path.append(Dir("BuildTools/SCons").abspath)
+import SCons.SConf
+
+################################################################################
+# Build variables
+################################################################################
+
+vars = Variables(os.path.join(Dir("#").abspath, "config.py"))
+vars.Add('ccflags', "Extra C(++) compiler flags")
+vars.Add('linkflags', "Extra linker flags")
+vars.Add(EnumVariable("test", "Compile and run tests", "none", ["none", "all", "unit", "system"]))
+vars.Add(BoolVariable("optimize", "Compile with optimizations turned on", "no"))
+vars.Add(BoolVariable("debug", "Compile with debug information", "yes" if os.name != "nt" else "no"))
+vars.Add(BoolVariable("warnings", "Compile with warnings turned on", 
+		"yes" if os.name != "nt" else "no"))
+vars.Add(BoolVariable("max_jobs", "Build with maximum number of parallel jobs", "no"))
+vars.Add(EnumVariable("target", "Choose a target platform for compilation", "native", ["native", "iphone-simulator", "iphone-device"]))
+if os.name != "nt" :
+	vars.Add(BoolVariable("coverage", "Compile with coverage information", "no"))
+if os.name == "posix" :
+	vars.Add(BoolVariable("valgrind", "Run tests with valgrind", "no"))
+if os.name == "mac" or (os.name == "posix" and os.uname()[0] == "Darwin"):
+	vars.Add(BoolVariable("universal", "Create universal binaries", "no"))
+if os.name == "nt" :
+	vars.Add(PathVariable("vcredist", "MSVC redistributable dir", "", PathVariable.PathAccept))
+if os.name == "nt" :
+	vars.Add(PackageVariable("bonjour", "Bonjour SDK location", "yes"))
+vars.Add(PackageVariable("openssl", "OpenSSL location", "yes"))
+vars.Add(PathVariable("qt", "Qt location", "", PathVariable.PathAccept))
+
+################################################################################
+# Set up default build & configure environment
+################################################################################
+
+env = Environment(CPPPATH = "#", ENV = {'PATH' : os.environ['PATH']}, variables = vars)
+
+Help(vars.GenerateHelpText(env))
+
+env.Alias("dist", ["."])
+
+# Default custom tools
+env.Tool("Test", toolpath = ["#/BuildTools/SCons/Tools"])
+env.Tool("WriteVal", toolpath = ["#/BuildTools/SCons/Tools"])
+env.Tool("BuildVersion", toolpath = ["#/BuildTools/SCons/Tools"])
+if env["PLATFORM"] == "darwin" :
+	env.Tool("Nib", toolpath = ["#/BuildTools/SCons/Tools"])
+	env.Tool("AppBundle", toolpath = ["#/BuildTools/SCons/Tools"])
+if env["PLATFORM"] == "win32" :
+	env.Tool("WindowsBundle", toolpath = ["#/BuildTools/SCons/Tools"])
+
+# 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)
+  
+# Max out the number of jobs
+if env["max_jobs"] :
+	try :
+		import multiprocessing
+		SetOption("num_jobs", multiprocessing.cpu_count())
+	except NotImplementedError :
+		pass
+
+# Default compiler flags
+env["CCFLAGS"] = env.get("ccflags", [])
+env["LINKFLAGS"] = env.get("linkflags", [])
+if env["optimize"] :
+	env.Append(CCFLAGS = "-O2")
+	if env["PLATFORM"] == "win32" :
+		env.Append(CCFLAGS = ["GL"])
+		env.Append(LINKFLAGS = ["/INCREMENTAL:NO", "/LTCG"])
+
+if env["debug"] :
+	if env["PLATFORM"] == "win32" :
+		env.Append(CCFLAGS = ["/Zi", "/MDd"])
+		env.Append(LINKFLAGS = ["/DEBUG"])
+	else :
+		env.Append(CCFLAGS = "-g")
+elif env["PLATFORM"] == "win32" :
+	env.Append(CCFLAGS = ["/MD"])
+
+if env.get("universal", 0) :
+	assert(env["PLATFORM"] == "darwin")
+	env.Append(CCFLAGS = [
+			"-isysroot", "/Developer/SDKs/MacOSX10.4u.sdk", 
+			"-arch", "i386", 
+			"-arch", "ppc"])
+	env.Append(LINKFLAGS = [
+			"-mmacosx-version-min=10.4", 
+			"-Wl", "-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk", 
+			"-arch", "i386", 
+			"-arch", "ppc"])
+
+if env["warnings"] :
+	if env["PLATFORM"] == "win32" :
+		env.Append(CCFLAGS = ["/Wall"])
+	else :
+		env.Append(CCFLAGS = ["-W", "-Wall"])
+		#env.Append(CCFLAGS = ["-W", "-Wall", "-Wredundant-decls", "-pedantic", "-Wno-long-long", "-Woverloaded-virtual", "-Wundef", "-Wfloat-equal", "-Wold-style-cast"])
+
+if env.get("coverage", 0) :
+	assert(env["PLATFORM"] != "win32")
+	env.Append(CCFLAGS = ["-fprofile-arcs", "-ftest-coverage"])
+	env.Append(LINKFLAGS = ["-fprofile-arcs", "-ftest-coverage"])
+
+if env["PLATFORM"] == "win32" :
+	env.Append(LIBS = ["user32", "dnsapi", "ws2_32", "wsock32"])
+	env.Append(CCFLAGS = ["/EHsc", "/nologo"])
+	env["LINKCOM"] = [env["LINKCOM"], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1']
+	env["SHLINKCOM"] = [env["SHLINKCOM"], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;2']
+
+if env["PLATFORM"] == "darwin" :
+	env.Append(FRAMEWORKS = ["IOKit", "AppKit"])
+
+# Testing
+env["TEST_TYPE"] = env["test"]
+env.Alias("check", ".")
+if "check" in ARGUMENTS or "check" in COMMAND_LINE_TARGETS :
+	env["TEST_TYPE"] = "unit"
+env["TEST"] = (env["TEST_TYPE"] != "none") or env.GetOption("clean")
+if env.get("valgrind", 0) :
+	env["TEST_RUNNER"] = "valgrind --suppressions=QA/valgrind.supp -q --leak-check=full --track-origins=yes "
+
+# Packaging
+if ARGUMENTS.get("SWIFT_INSTALLDIR", "") :
+	env["SWIFT_INSTALLDIR"] = Dir(ARGUMENTS["SWIFT_INSTALLDIR"]).abspath
+
+# cross-compiling
+target = env["target"]
+if target in ("iphone-device", "iphone-simulator"):
+   if target == "iphone-device":
+      sdkPart = "iPhoneOS"
+      env["CC"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1"
+      env["CXX"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-g++-4.0.1"
+      env["PATH"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/"
+      env["LD"] = env["CC"]
+#      env["openssl"] = "#/3rdParty/openssl-0.9.8l-arm"
+      targetIncludesArch = "arm"
+
+   if target == "iphone-simulator":
+      sdkPart = "iPhoneSimulator"
+      env.Append(CCFLAGS = ["-arch", "i386"])
+      env.Append(LINKFLAGS = ["-arch", "i386"])
+      targetIncludesArch = "i686"
+
+   sdkVer = "3.0"
+   sdk = "/Developer/Platforms/" + sdkPart + ".platform/Developer/SDKs/" + sdkPart + sdkVer + ".sdk"
+
+   env["FRAMEWORKS"] = ["CoreFoundation", "Foundation", "UIKit", "CoreGraphics"]
+   env.Append(LINKFLAGS = ["-L\"" + sdk + "/usr/lib\"", "-F\"" + sdk + "/System/Library/Frameworks\"", "-F\"" + sdk + "/System/Library/PrivateFrameworks\""])
+   env["CPPPATH"] = ["/Users/kismith/devel/swift/iPhone/Swiftly/swift/", "/Developer/Platforms/" + sdkPart + ".platform/Developer/usr/lib/gcc/" + targetIncludesArch + "-apple-darwin9/4.0.1/include/", sdk + "/usr/include", sdk + "/usr/include/c++/4.0.0/" + targetIncludesArch + "-apple-darwin9", sdk + "/usr/include/c++/4.0.0", "/Developer/Platforms/" + sdkPart + ".platform/Developer/usr/include/"]
+
+# end cross compiling stuff
+
+
+conf_env = env.Clone()
+
+Export("env")
+Export("conf_env")
+
+
+################################################################################
+# Extend the default build environment (not affecting the configure env)
+#
+# Keeping both environments separated mostly because of SCons Issue 2391,
+# although it doesn't hurt to separate them (e.g. not have pretty printed
+# strings in config.log)
+################################################################################
+
+#if env["PLATFORM"] == "win32" :
+#	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
+
+if int(ARGUMENTS.get("V", 0)) == 0:
+	env["CCCOMSTR"] = colorize("CC", "$TARGET", "green")
+	env["CXXCOMSTR"] = colorize("CXX", "$TARGET", "green")
+	env["LINKCOMSTR"] = colorize("LINK", "$TARGET", "red")
+	env["ARCOMSTR"] = colorize("AR", "$TARGET", "red")
+	env["RANLIBCOMSTR"] = colorize("RANLIB", "$TARGET", "red")
+	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["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")
+	#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
+
+################################################################################
+# Platform configuration
+################################################################################
+
+if ARGUMENTS.get("force-configure", 0) :
+  SCons.SConf.SetCacheMode("force")
+
+conf = Configure(conf_env)
+
+if not conf.CheckCXX() or not conf.CheckCC() :
+	print "Error: You need a working compiler"
+	Exit(1)
+
+if conf.CheckLib("z") :
+	env.Append(LIBS = "z")
+	env["ZLIB_FLAGS"] = ""
+else :
+	SConscript("#/3rdParty/ZLib/SConscript")
+
+if conf.CheckLib("dl") :
+	env.Append(LIBS = ["dl"])
+
+if conf.CheckLib("c") :
+	env.Append(LIBS = ["c"])
+
+if conf.CheckLib("resolv") :
+	env.Append(LIBS = ["resolv"])
+
+# Expat
+if conf.CheckCHeader("expat.h") and conf.CheckLib("expat") :
+	env["HAVE_EXPAT"] = 1
+	env["EXPAT_FLAGS"] = { "LIBS": ["expat"] }
+
+conf.Finish()
+
+# Xss
+env["HAVE_XSS"] = 0
+if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :
+	xss_flags = {
+			"LIBPATH": ["/usr/X11R6/lib"],
+			"LIBS": ["X11", "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()
+
+# 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()
+
+# LibXML
+conf = Configure(conf_env)
+if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
+	env["HAVE_LIBXML"] = 1
+	env["LIBXML_FLAGS"] = { "LIBS": ["xml2"] }
+conf.Finish()
+
+if not env.get("HAVE_LIBXML", 0) :
+	libxml_env = conf_env.Clone()
+	libxml_env.Append(CPPPATH = ["/usr/include/libxml2"])
+	conf = Configure(libxml_env)
+	if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
+		env["HAVE_LIBXML"] = 1
+		env["LIBXML_FLAGS"] = { "CPPPATH": ["/usr/include/libxml2"], "LIBS": ["xml2"] }
+	conf.Finish()
+
+# Bundled expat
+bundledExpat = False
+if not env.get("HAVE_EXPAT", 0) :
+	print "Expat or LibXML not found. Using bundled Expat"
+	SConscript("#/3rdParty/Expat/SConscript")
+	env["HAVE_EXPAT"] = 1
+	bundledExpat = True
+
+# Qt
+if env["qt"] :
+	env["QTDIR"] = env["qt"]
+
+# OpenSSL
+openssl_env = conf_env.Clone()
+use_openssl = bool(env["openssl"])
+openssl_prefix = env["openssl"] if isinstance(env["openssl"], str) else ""
+openssl_flags = {}
+if openssl_prefix :
+	openssl_flags = { "CPPPATH": [os.path.join(openssl_prefix, "include")] }
+	if 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
+	if env["PLATFORM"] == "win32" : 
+		env["OPENSSL_FLAGS"]["LIBS"] = ["libeay32MT", "ssleay32MT"]
+	else:
+		env["OPENSSL_FLAGS"]["LIBS"] = ["ssl", "crypto"]
+else :
+	env["OPENSSL_FLAGS"] = ""
+
+openssl_conf.Finish()
+
+# Bonjour
+if env["PLATFORM"] == "darwin" :
+	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()
+
+################################################################################
+# Project files
+# FIXME: We need to explicitly list the order of libraries here, because of
+# the exported FLAGS. We should put FLAGS in separate SConscript files, and
+# read these in before anything else, such that we don't need to manually
+# list modules in order.
+################################################################################
+
+# Third-party modules
+SConscript(dirs = [
+		"#/3rdParty/CppUnit",
+		"#/3rdParty/Boost",
+		"#/3rdParty/LibIDN"
+	])
+
+if env.get("target", 0) == "native":
+	SConscript(dirs = [
+			"#/3rdParty/CAres",
+			"#/3rdParty/SQLite"
+		])
+
+# Checker
+SConscript(dirs = ["#/QA/Checker"], test_only = True)
+
+# Libraries
+SConscript(dirs = [
+		"#/Swiften",
+		"#/SwifTools"
+	])
+
+# Projects
+for dir in os.listdir(Dir("#").abspath) :
+	full_dir = os.path.join(Dir("#").abspath, dir)
+	if not os.path.isdir(full_dir) :
+		continue
+	if dir in ["QA", "Swiften", "SwifTools"] :
+		continue 
+	sconscript = os.path.join(full_dir, "SConscript")
+	if os.path.isfile(sconscript) :
+		SConscript(sconscript)
+
+# Unit test runner
+SConscript(dirs = ["#/QA/UnitTest"], test_only = True)
+
+################################################################################
+# Print summary
+################################################################################
+
+print
+print "  Build Configuration"
+print "  -------------------"
+
+parsers = []
+if env.get("HAVE_LIBXML", 0):
+	parsers.append("LibXML")
+if env.get("HAVE_EXPAT", 0):
+	parsers.append("Expat")
+	if bundledExpat:
+		parsers.append("(Bundled)")
+print "  XML Parsers: " + ' '.join(parsers)
+
+print "  TLS Support: " + ("OpenSSL" if env.get("HAVE_OPENSSL",0) else "Disabled")
+print "  DNSSD Support: " + ("Bonjour" if env.get("HAVE_BONJOUR") else ("Avahi" if env.get("HAVE_AVAHI") else "Disabled"))
+print
diff --git a/SConstruct b/SConstruct
index 3e9b178..bad221a 100644
--- a/SConstruct
+++ b/SConstruct
@@ -1,406 +1 @@
-import sys, os
-sys.path.append(Dir("BuildTools/SCons").abspath)
-import SCons.SConf
-
-################################################################################
-# Build variables
-################################################################################
-
-vars = Variables("config.py")
-vars.Add('ccflags', "Extra C(++) compiler flags")
-vars.Add('linkflags', "Extra linker flags")
-vars.Add(EnumVariable("test", "Compile and run tests", "none", ["none", "all", "unit", "system"]))
-vars.Add(BoolVariable("optimize", "Compile with optimizations turned on", "no"))
-vars.Add(BoolVariable("debug", "Compile with debug information", "yes" if os.name != "nt" else "no"))
-vars.Add(BoolVariable("warnings", "Compile with warnings turned on", 
-		"yes" if os.name != "nt" else "no"))
-vars.Add(BoolVariable("max_jobs", "Build with maximum number of parallel jobs", "no"))
-vars.Add(EnumVariable("target", "Choose a target platform for compilation", "native", ["native", "iphone-simulator", "iphone-device"]))
-if os.name != "nt" :
-	vars.Add(BoolVariable("coverage", "Compile with coverage information", "no"))
-if os.name == "posix" :
-	vars.Add(BoolVariable("valgrind", "Run tests with valgrind", "no"))
-if os.name == "mac" or (os.name == "posix" and os.uname()[0] == "Darwin"):
-	vars.Add(BoolVariable("universal", "Create universal binaries", "no"))
-if os.name == "nt" :
-	vars.Add(PathVariable("vcredist", "MSVC redistributable dir", "", PathVariable.PathAccept))
-if os.name == "nt" :
-	vars.Add(PackageVariable("bonjour", "Bonjour SDK location", "yes"))
-vars.Add(PackageVariable("openssl", "OpenSSL location", "yes"))
-vars.Add(PathVariable("qt", "Qt location", "", PathVariable.PathAccept))
-
-################################################################################
-# Set up default build & configure environment
-################################################################################
-
-env = Environment(CPPPATH = "#", ENV = {'PATH' : os.environ['PATH']}, variables = vars)
-
-Help(vars.GenerateHelpText(env))
-
-env.Alias("dist", ["."])
-
-# Default custom tools
-env.Tool("Test", toolpath = ["#/BuildTools/SCons/Tools"])
-env.Tool("WriteVal", toolpath = ["#/BuildTools/SCons/Tools"])
-env.Tool("BuildVersion", toolpath = ["#/BuildTools/SCons/Tools"])
-if env["PLATFORM"] == "darwin" :
-	env.Tool("Nib", toolpath = ["#/BuildTools/SCons/Tools"])
-	env.Tool("AppBundle", toolpath = ["#/BuildTools/SCons/Tools"])
-if env["PLATFORM"] == "win32" :
-	env.Tool("WindowsBundle", toolpath = ["#/BuildTools/SCons/Tools"])
-
-# 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)
-  
-# Max out the number of jobs
-if env["max_jobs"] :
-	try :
-		import multiprocessing
-		SetOption("num_jobs", multiprocessing.cpu_count())
-	except NotImplementedError :
-		pass
-
-# Default compiler flags
-env["CCFLAGS"] = env.get("ccflags", [])
-env["LINKFLAGS"] = env.get("linkflags", [])
-if env["optimize"] :
-	env.Append(CCFLAGS = "-O2")
-	if env["PLATFORM"] == "win32" :
-		env.Append(CCFLAGS = ["GL"])
-		env.Append(LINKFLAGS = ["/INCREMENTAL:NO", "/LTCG"])
-
-if env["debug"] :
-	if env["PLATFORM"] == "win32" :
-		env.Append(CCFLAGS = ["/Zi", "/MDd"])
-		env.Append(LINKFLAGS = ["/DEBUG"])
-	else :
-		env.Append(CCFLAGS = "-g")
-elif env["PLATFORM"] == "win32" :
-	env.Append(CCFLAGS = ["/MD"])
-
-if env.get("universal", 0) :
-	assert(env["PLATFORM"] == "darwin")
-	env.Append(CCFLAGS = [
-			"-isysroot", "/Developer/SDKs/MacOSX10.4u.sdk", 
-			"-arch", "i386", 
-			"-arch", "ppc"])
-	env.Append(LINKFLAGS = [
-			"-mmacosx-version-min=10.4", 
-			"-Wl", "-syslibroot,/Developer/SDKs/MacOSX10.4u.sdk", 
-			"-arch", "i386", 
-			"-arch", "ppc"])
-
-if env["warnings"] :
-	if env["PLATFORM"] == "win32" :
-		env.Append(CCFLAGS = ["/Wall"])
-	else :
-		env.Append(CCFLAGS = ["-W", "-Wall"])
-		#env.Append(CCFLAGS = ["-W", "-Wall", "-Wredundant-decls", "-pedantic", "-Wno-long-long", "-Woverloaded-virtual", "-Wundef", "-Wfloat-equal", "-Wold-style-cast"])
-
-if env.get("coverage", 0) :
-	assert(env["PLATFORM"] != "win32")
-	env.Append(CCFLAGS = ["-fprofile-arcs", "-ftest-coverage"])
-	env.Append(LINKFLAGS = ["-fprofile-arcs", "-ftest-coverage"])
-
-if env["PLATFORM"] == "win32" :
-	env.Append(LIBS = ["user32", "dnsapi", "ws2_32", "wsock32"])
-	env.Append(CCFLAGS = ["/EHsc", "/nologo"])
-	env["LINKCOM"] = [env["LINKCOM"], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1']
-	env["SHLINKCOM"] = [env["SHLINKCOM"], 'mt.exe -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;2']
-
-if env["PLATFORM"] == "darwin" :
-	env.Append(FRAMEWORKS = ["IOKit", "AppKit"])
-
-# Testing
-env["TEST_TYPE"] = env["test"]
-env.Alias("check", ".")
-if "check" in ARGUMENTS or "check" in COMMAND_LINE_TARGETS :
-	env["TEST_TYPE"] = "unit"
-env["TEST"] = (env["TEST_TYPE"] != "none") or env.GetOption("clean")
-if env.get("valgrind", 0) :
-	env["TEST_RUNNER"] = "valgrind --suppressions=QA/valgrind.supp -q --leak-check=full --track-origins=yes "
-
-# Packaging
-if ARGUMENTS.get("SWIFT_INSTALLDIR", "") :
-	env["SWIFT_INSTALLDIR"] = Dir(ARGUMENTS["SWIFT_INSTALLDIR"]).abspath
-
-# cross-compiling
-target = env["target"]
-if target in ("iphone-device", "iphone-simulator"):
-   if target == "iphone-device":
-      sdkPart = "iPhoneOS"
-      env["CC"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-gcc-4.0.1"
-      env["CXX"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/arm-apple-darwin9-g++-4.0.1"
-      env["PATH"] = "/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/"
-      env["LD"] = env["CC"]
-#      env["openssl"] = "3rdParty/openssl-0.9.8l-arm"
-      targetIncludesArch = "arm"
-
-   if target == "iphone-simulator":
-      sdkPart = "iPhoneSimulator"
-      env.Append(CCFLAGS = ["-arch", "i386"])
-      env.Append(LINKFLAGS = ["-arch", "i386"])
-      targetIncludesArch = "i686"
-
-   sdkVer = "3.0"
-   sdk = "/Developer/Platforms/" + sdkPart + ".platform/Developer/SDKs/" + sdkPart + sdkVer + ".sdk"
-
-   env["FRAMEWORKS"] = ["CoreFoundation", "Foundation", "UIKit", "CoreGraphics"]
-   env.Append(LINKFLAGS = ["-L\"" + sdk + "/usr/lib\"", "-F\"" + sdk + "/System/Library/Frameworks\"", "-F\"" + sdk + "/System/Library/PrivateFrameworks\""])
-   env["CPPPATH"] = ["/Users/kismith/devel/swift/iPhone/Swiftly/swift/", "/Developer/Platforms/" + sdkPart + ".platform/Developer/usr/lib/gcc/" + targetIncludesArch + "-apple-darwin9/4.0.1/include/", sdk + "/usr/include", sdk + "/usr/include/c++/4.0.0/" + targetIncludesArch + "-apple-darwin9", sdk + "/usr/include/c++/4.0.0", "/Developer/Platforms/" + sdkPart + ".platform/Developer/usr/include/"]
-
-# end cross compiling stuff
-
-
-conf_env = env.Clone()
-
-Export("env")
-Export("conf_env")
-
-
-################################################################################
-# Extend the default build environment (not affecting the configure env)
-#
-# Keeping both environments separated mostly because of SCons Issue 2391,
-# although it doesn't hurt to separate them (e.g. not have pretty printed
-# strings in config.log)
-################################################################################
-
-#if env["PLATFORM"] == "win32" :
-#	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
-
-if int(ARGUMENTS.get("V", 0)) == 0:
-	env["CCCOMSTR"] = colorize("CC", "$TARGET", "green")
-	env["CXXCOMSTR"] = colorize("CXX", "$TARGET", "green")
-	env["LINKCOMSTR"] = colorize("LINK", "$TARGET", "red")
-	env["ARCOMSTR"] = colorize("AR", "$TARGET", "red")
-	env["RANLIBCOMSTR"] = colorize("RANLIB", "$TARGET", "red")
-	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["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")
-	#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
-
-################################################################################
-# Platform configuration
-################################################################################
-
-if ARGUMENTS.get("force-configure", 0) :
-  SCons.SConf.SetCacheMode("force")
-
-conf = Configure(conf_env)
-
-if not conf.CheckCXX() or not conf.CheckCC() :
-	print "Error: You need a working compiler"
-	Exit(1)
-
-if conf.CheckLib("z") :
-	env.Append(LIBS = "z")
-	env["ZLIB_FLAGS"] = ""
-else :
-	SConscript("3rdParty/ZLib/SConscript")
-
-if conf.CheckLib("dl") :
-	env.Append(LIBS = ["dl"])
-
-if conf.CheckLib("c") :
-	env.Append(LIBS = ["c"])
-
-if conf.CheckLib("resolv") :
-	env.Append(LIBS = ["resolv"])
-
-# Expat
-if conf.CheckCHeader("expat.h") and conf.CheckLib("expat") :
-	env["HAVE_EXPAT"] = 1
-	env["EXPAT_FLAGS"] = { "LIBS": ["expat"] }
-
-conf.Finish()
-
-# Xss
-env["HAVE_XSS"] = 0
-if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :
-	xss_flags = {
-			"LIBPATH": ["/usr/X11R6/lib"],
-			"LIBS": ["X11", "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()
-
-# 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()
-
-# LibXML
-conf = Configure(conf_env)
-if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
-	env["HAVE_LIBXML"] = 1
-	env["LIBXML_FLAGS"] = { "LIBS": ["xml2"] }
-conf.Finish()
-
-if not env.get("HAVE_LIBXML", 0) :
-	libxml_env = conf_env.Clone()
-	libxml_env.Append(CPPPATH = ["/usr/include/libxml2"])
-	conf = Configure(libxml_env)
-	if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") :
-		env["HAVE_LIBXML"] = 1
-		env["LIBXML_FLAGS"] = { "CPPPATH": ["/usr/include/libxml2"], "LIBS": ["xml2"] }
-	conf.Finish()
-
-# Bundled expat
-bundledExpat = False
-if not env.get("HAVE_EXPAT", 0) :
-	print "Expat or LibXML not found. Using bundled Expat"
-	SConscript("3rdParty/Expat/SConscript")
-	env["HAVE_EXPAT"] = 1
-	bundledExpat = True
-
-# Qt
-if env["qt"] :
-	env["QTDIR"] = env["qt"]
-
-# OpenSSL
-openssl_env = conf_env.Clone()
-use_openssl = bool(env["openssl"])
-openssl_prefix = env["openssl"] if isinstance(env["openssl"], str) else ""
-openssl_flags = {}
-if openssl_prefix :
-	openssl_flags = { "CPPPATH": [os.path.join(openssl_prefix, "include")] }
-	if 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
-	if env["PLATFORM"] == "win32" : 
-		env["OPENSSL_FLAGS"]["LIBS"] = ["libeay32MT", "ssleay32MT"]
-	else:
-		env["OPENSSL_FLAGS"]["LIBS"] = ["ssl", "crypto"]
-else :
-	env["OPENSSL_FLAGS"] = ""
-
-openssl_conf.Finish()
-
-# Bonjour
-if env["PLATFORM"] == "darwin" :
-	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()
-
-################################################################################
-# Project files
-# FIXME: We need to explicitly list the order of libraries here, because of
-# the exported FLAGS. We should put FLAGS in separate SConscript files, and
-# read these in before anything else, such that we don't need to manually
-# list modules in order.
-################################################################################
-
-# Third-party modules
-third_party_dirs = ["3rdParty/CppUnit",
-		"3rdParty/Boost",
-		"3rdParty/LibIDN"]
-if env.get("target", 0) == "native":
-   third_party_dirs += ["3rdParty/CAres",
-		"3rdParty/SQLite"]
-
-SConscript(dirs=third_party_dirs)
-
-# Checker
-SConscript(dirs = ["QA/Checker"], test_only = True)
-
-# Libraries
-SConscript(dirs = [
-		"Swiften",
-		"SwifTools"
-	])
-
-# Projects
-for dir in os.listdir(".") :
-	if dir in ["QA", "Swiften", "SwifTools"] :
-		continue 
-	sconscript = os.path.join(dir, "SConscript")
-	if os.path.isfile(sconscript) :
-		SConscript(sconscript)
-
-# Unit test runner
-SConscript(dirs = ["QA/UnitTest"], test_only = True)
-
-################################################################################
-# Print summary
-################################################################################
-
-print
-print "  Build Configuration"
-print "  -------------------"
-
-parsers = []
-if env.get("HAVE_LIBXML", 0):
-	parsers.append("LibXML")
-if env.get("HAVE_EXPAT", 0):
-	parsers.append("Expat")
-	if bundledExpat:
-		parsers.append("(Bundled)")
-print "  XML Parsers: " + ' '.join(parsers)
-
-print "  TLS Support: " + ("OpenSSL" if env.get("HAVE_OPENSSL",0) else "Disabled")
-print "  DNSSD Support: " + ("Bonjour" if env.get("HAVE_BONJOUR") else ("Avahi" if env.get("HAVE_AVAHI") else "Disabled"))
-print
+SConscript("BuildTools/SCons/SConstruct")
-- 
cgit v0.10.2-6-g49f6