diff options
Diffstat (limited to 'BuildTools/SCons/SConstruct')
| m--------- | BuildTools | 0 | ||||
| -rw-r--r-- | BuildTools/SCons/SConstruct | 412 | 
2 files changed, 0 insertions, 412 deletions
diff --git a/BuildTools b/BuildTools new file mode 160000 +Subproject b6864b9b41e259534e2889693422f5a3f36f2b4 diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct deleted file mode 100644 index b730e98..0000000 --- a/BuildTools/SCons/SConstruct +++ /dev/null @@ -1,412 +0,0 @@ -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  | 
 Swift