diff options
Diffstat (limited to 'BuildTools')
| -rw-r--r-- | BuildTools/SCons/SConscript.boot | 83 | ||||
| -rw-r--r-- | BuildTools/SCons/SConstruct | 100 | ||||
| -rw-r--r-- | BuildTools/SCons/Tools/Test.py | 11 | ||||
| -rw-r--r-- | BuildTools/SCons/Version.py | 11 | 
4 files changed, 145 insertions, 60 deletions
diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot index 767c326..51be9ab 100644 --- a/BuildTools/SCons/SConscript.boot +++ b/BuildTools/SCons/SConscript.boot @@ -12,6 +12,9 @@ vars.Add('ccflags', "Extra C/C++/ObjC compiler flags")  vars.Add('cxxflags', "Extra C++ compiler flags")  vars.Add('link', "Linker")  vars.Add('linkflags', "Extra linker flags") +vars.Add('ar', "Archiver (ar or lib)") +if os.name == "nt": +	vars.Add('mt', "manifest tool")  vars.Add(BoolVariable("ccache", "Use CCache", "no"))  vars.Add(EnumVariable("test", "Compile and run tests", "none", ["none", "all", "unit", "system"]))  vars.Add(BoolVariable("optimize", "Compile with optimizations turned on", "no")) @@ -39,17 +42,30 @@ if os.name == "nt" :  if os.name == "nt" :  	vars.Add(PackageVariable("bonjour", "Bonjour SDK location", "yes"))  vars.Add(PackageVariable("openssl", "OpenSSL location", "yes")) +vars.Add("openssl_libnames", "Comma-separated openssl library names to override defaults", None)  vars.Add(BoolVariable("openssl_force_bundled", "Force use of the bundled OpenSSL", "no")) +vars.Add("openssl_include", "Location of OpenSSL include files (if not under (openssl)/include)", None) +vars.Add("openssl_libdir", "Location of OpenSSL library files (if not under (openssl)/lib)", None)  vars.Add(PackageVariable("hunspell", "Hunspell location", False))  vars.Add(PathVariable("boost_includedir", "Boost headers location", None, PathVariable.PathAccept))  vars.Add(PathVariable("boost_libdir", "Boost library location", None, PathVariable.PathAccept)) +vars.Add(BoolVariable("boost_bundled_enable", "Allow use of bundled Boost as last resort", "true")) +vars.Add(PathVariable("zlib_includedir", "Zlib headers location", None, PathVariable.PathAccept)) +vars.Add(PathVariable("zlib_libdir", "Zlib library location", None, PathVariable.PathAccept)) +vars.Add(PathVariable("zlib_libfile", "Zlib library file (full path to file)", None, PathVariable.PathAccept)) +vars.Add(BoolVariable("zlib_bundled_enable", "Allow use of bundled Zlib as last resort", "true")) +vars.Add(BoolVariable("try_gconf", "Try configuring for GConf?", "true")) +vars.Add(BoolVariable("try_libxml", "Try configuring for libXML?", "true")) +vars.Add(BoolVariable("try_expat", "Try configuring for expat?", "true"))  vars.Add(PathVariable("expat_includedir", "Expat headers location", None, PathVariable.PathAccept))  vars.Add(PathVariable("expat_libdir", "Expat library location", None, PathVariable.PathAccept)) -vars.Add("expat_libname", "Expat library name", "libexpat" if os.name == "nt" else "expat") +vars.Add("expat_libname", "Expat library name", os.name == "nt" and "libexpat" or "expat")  vars.Add(PackageVariable("icu", "ICU library location", "no")) +vars.Add(BoolVariable("libidn_bundled_enable", "Allow use of bunded Expat", "true")) +vars.Add(BoolVariable("try_libidn", "Try configuring for LibIDN?", "true"))  vars.Add(PathVariable("libidn_includedir", "LibIDN headers location", None, PathVariable.PathAccept))  vars.Add(PathVariable("libidn_libdir", "LibIDN library location", None, PathVariable.PathAccept)) -vars.Add("libidn_libname", "LibIDN library name", "libidn" if os.name == "nt" else "idn") +vars.Add("libidn_libname", "LibIDN library name",  os.name == "nt" and "libidn" or "idn")  vars.Add(PathVariable("libminiupnpc_includedir", "LibMiniUPNPC headers location", None, PathVariable.PathAccept))  vars.Add(PathVariable("libminiupnpc_libdir", "LibMiniUPNPC library location", None, PathVariable.PathAccept))  vars.Add("libminiupnpc_libname", "LibMiniUPNPC library name", "libminiupnpc" if os.name == "nt" else "miniupnpc") @@ -58,7 +74,7 @@ vars.Add(PathVariable("libnatpmp_libdir", "LibNATPMP library location", None, Pa  vars.Add("libnatpmp_libname", "LibNATPMP library name", "libnatpmp" if os.name == "nt" else "natpmp")  vars.Add(PathVariable("sqlite_includedir", "SQLite headers location", None, PathVariable.PathAccept))  vars.Add(PathVariable("sqlite_libdir", "SQLite library location", None, PathVariable.PathAccept)) -vars.Add("sqlite_libname", "SQLite library name", "libsqlite3" if os.name == "nt" else "sqlite3") +vars.Add("sqlite_libname", "SQLite library name", os.name == "nt" and "libsqlite3" or "sqlite3")  vars.Add("sqlite_force_bundled", "Force use of the bundled SQLite", None)  vars.Add(PathVariable("lua_includedir", "Lua headers location", None, PathVariable.PathAccept))  vars.Add(PathVariable("lua_libdir", "Lua library location", None, PathVariable.PathAccept)) @@ -69,6 +85,7 @@ vars.Add(PathVariable("editline_includedir", "Readline headers location", None,  vars.Add(PathVariable("editline_libdir", "Readline library location", None, PathVariable.PathAccept))  vars.Add("editline_libname", "Readline library name", "libedit" if os.name == "nt" else "edit") +vars.Add(BoolVariable("try_avahi", "Try configuring for avahi?", "true"))  vars.Add(PathVariable("avahi_includedir", "Avahi headers location", None, PathVariable.PathAccept))  vars.Add(PathVariable("avahi_libdir", "Avahi library location", None, PathVariable.PathAccept))  vars.Add(PathVariable("qt", "Qt location", "", PathVariable.PathAccept)) @@ -82,20 +99,22 @@ vars.Add(BoolVariable("experimental", "Build experimental features", "no"))  vars.Add(BoolVariable("set_iterator_debug_level", "Set _ITERATOR_DEBUG_LEVEL=0", "yes"))  vars.Add(BoolVariable("unbound", "Build bundled ldns and unbound. Use them for DNS lookup.", "no")) +vars.Add(BoolVariable("install_git_hooks", "Install git hooks", "true")) +  ################################################################################  # Set up default build & configure environment  ################################################################################ -  env_ENV = { -  'PATH' : os.environ['PATH'],  +  'PATH' : os.environ['PATH'],    'LD_LIBRARY_PATH' : os.environ.get("LD_LIBRARY_PATH", ""),    'TERM' : os.environ.get("TERM", ""),  } +  if "MSVC_VERSION" in ARGUMENTS : -  env = Environment(ENV = env_ENV, variables = vars, MSVC_VERSION = ARGUMENTS["MSVC_VERSION"]) +  env = Environment(ENV = env_ENV, variables = vars, MSVC_VERSION = ARGUMENTS["MSVC_VERSION"], platform = ARGUMENTS.get("PLATFORM", None))  else : -  env = Environment(ENV = env_ENV, variables = vars) +  env = Environment(ENV = env_ENV, variables = vars, platform = ARGUMENTS.get("PLATFORM", None))  Help(vars.GenerateHelpText(env)) @@ -124,7 +143,7 @@ if env["PLATFORM"] == "win32" :  	env.Tool("WindowsBundle", toolpath = ["#/BuildTools/SCons/Tools"])  	#So we don't need to escalate with UAC  	if "TMP" in os.environ.keys() : -		env['ENV']['TMP'] = os.environ['TMP']  +		env['ENV']['TMP'] = os.environ['TMP']  env.Tool("SLOCCount", toolpath = ["#/BuildTools/SCons/Tools"])  # Max out the number of jobs @@ -171,6 +190,9 @@ if "cc" in env :  	env["CC"] = env["cc"]  if "cxx" in env :  	env["CXX"] = env["cxx"] +if "ar" in env : +	env["AR"] = env["ar"] +  if "link" in env :  	env["SHLINK"] = env["link"]  	env["LINK"] = env["link"] @@ -213,13 +235,13 @@ elif env["PLATFORM"] == "win32" :  if env.get("universal", 0) :  	assert(env["PLATFORM"] == "darwin")  	env.Append(CCFLAGS = [ -			"-isysroot", "/Developer/SDKs/MacOSX10.4u.sdk",  -			"-arch", "i386",  +			"-isysroot", "/Developer/SDKs/MacOSX10.4u.sdk", +			"-arch", "i386",  			"-arch", "ppc"])  	env.Append(LINKFLAGS = [ -			"-mmacosx-version-min=10.4",  -			"-isysroot", "/Developer/SDKs/MacOSX10.4u.sdk",  -			"-arch", "i386",  +			"-mmacosx-version-min=10.4", +			"-isysroot", "/Developer/SDKs/MacOSX10.4u.sdk", +			"-arch", "i386",  			"-arch", "ppc"]) @@ -228,20 +250,20 @@ if env.get("universal", 0) :  if env.get("mac105", 0) :  	assert(env["PLATFORM"] == "darwin")  	env.Append(CCFLAGS = [ -			"-isysroot", "/Developer/SDKs/MacOSX10.5.sdk",  +			"-isysroot", "/Developer/SDKs/MacOSX10.5.sdk",  			"-arch", "i386"])  	env.Append(LINKFLAGS = [ -			"-mmacosx-version-min=10.5",  -			"-isysroot", "/Developer/SDKs/MacOSX10.5.sdk",  +			"-mmacosx-version-min=10.5", +			"-isysroot", "/Developer/SDKs/MacOSX10.5.sdk",  			"-arch", "i386"])  if env.get("mac106", 0) :  	assert(env["PLATFORM"] == "darwin")  	env.Append(CCFLAGS = [ -			"-isysroot", "/Developer/SDKs/MacOSX10.6.sdk",  +			"-isysroot", "/Developer/SDKs/MacOSX10.6.sdk",  			"-arch", "i386"])  	env.Append(LINKFLAGS = [ -			"-mmacosx-version-min=10.6",  -			"-isysroot", "/Developer/SDKs/MacOSX10.6.sdk",  +			"-mmacosx-version-min=10.6", +			"-isysroot", "/Developer/SDKs/MacOSX10.6.sdk",  			"-arch", "i386"])  if not env["assertions"] : @@ -261,6 +283,13 @@ if env["PLATFORM"] == "posix" and platform.machine() == "x86_64" :  # Warnings  if env["PLATFORM"] == "win32" :  	env.Append(CXXFLAGS = ["/wd4068"]) +elif env["PLATFORM"] == "hpux" : +	# HP-UX gives a flood of minor warnings if this is enabled +	#env.Append(CXXFLAGS = ["+w"]) +	pass +elif env["PLATFORM"] == "sunos" : +	#env.Append(CXXFLAGS = ["-z verbose"]) +	pass  else :  	if "clang" in env["CXX"] :  		env.Append(CXXFLAGS = [ @@ -298,12 +327,22 @@ if env["PLATFORM"] == "win32" :  	env.Append(CCFLAGS = ["/EHsc", "/nologo", "/Zm256"])  	env.Append(LINKFLAGS = ["/INCREMENTAL:no", "/NOLOGO"])  	if int(env["MSVS_VERSION"].split(".")[0]) < 10 : -		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'] +		mt = env.get('mt') +		if not mt: +			mt = 'mt.exe' +		env["LINKCOM"] = [env["LINKCOM"], '%s  -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;1' % mt] +		env["SHLINKCOM"] = [env["SHLINKCOM"], '%s  -nologo -manifest ${TARGET}.manifest -outputresource:$TARGET;2' % mt]  if env["PLATFORM"] == "darwin" and not env["target"] in ["iphone-device", "iphone-simulator", "xcode", "android"] :  	env["PLATFORM_FLAGS"]["FRAMEWORKS"] += ["IOKit", "AppKit", "SystemConfiguration", "Security", "SecurityInterface"] +# Required by boost headers on HP-UX +if env["PLATFORM"] == "hpux" : +	env.Append(CXXFLAGS = ["+hpxstd98", "-mt", "-AA"]) +	# FIXME: Need -AA for linking C++ but not C +	#env.Append(LINKFLAGS = ["-AA"]) + +  # Testing  env["TEST_TYPE"] = env["test"]  if "check" in ARGUMENTS : @@ -367,7 +406,7 @@ if target in ["iphone-device", "iphone-simulator", "xcode"] :  	env.Append(FRAMEWORKS = ["CoreFoundation", "Foundation", "UIKit", "CoreGraphics"])  	env.Append(LINKFLAGS = env["XCODE_ARCH_FLAGS"] + ["-isysroot", "$XCODE_SDKROOT", "-L\"$XCODE_SDKROOT/usr/lib\"", "-F\"$XCODE_SDKROOT/System/Library/Frameworks\"", "-F\"$XCODE_SDKROOT/System/Library/PrivateFrameworks\""])  	# Bit of a hack, because BOOST doesn't know the endianness for ARM -	env.Append(CPPDEFINES = ["_LITTLE_ENDIAN"])  +	env.Append(CPPDEFINES = ["_LITTLE_ENDIAN"])  ################################################################################  # Android diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct index 25a1ad3..7bda9c1 100644 --- a/BuildTools/SCons/SConstruct +++ b/BuildTools/SCons/SConstruct @@ -11,7 +11,7 @@ def SConscript(*arguments, **keywords) :  	if not keywords.get("test_only", False) or env["TEST"] :  		return apply(oldSConscript, arguments, keywords)  env.SConscript = SConscript -   +  ################################################################################  # Extend the default build environment (not affecting the configure env)  # @@ -111,8 +111,27 @@ if not conf.CheckCXX() or not conf.CheckCC() :  	Exit(1)  env["HAVE_ZLIB"] = True -if conf.CheckLib("z") : -	env["ZLIB_FLAGS"] = {"LIBS": ["z"]} +zlib_flags = {} +zlib_okay = False +if env.get("zlib_libdir", None) : +	zlib_flags["LIBPATH"] = [env["zlib_libdir"]] +	zlib_okay = True +if env.get("zlib_includedir", None) : +	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 +elif zlib_okay : +	zlib_flags["LIBS"] = ["z"] +if (not zlib_okay) and conf.CheckLib("z") : +	zlib_flags["LIBS"] = ["z"] +	zlib_okay = True +if zlib_okay : +	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)  else :  	env["ZLIB_BUNDLED"] = True @@ -132,9 +151,10 @@ if conf.CheckLib("m") :  if conf.CheckLib("c") :  	env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["c"] -if conf.CheckLib("stdc++") : -	env["PLATFORM_FLAGS"]["LIBS"] = env["PLATFORM_FLAGS"].get("LIBS", []) + ["stdc++"] - +# 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++"]  conf.Finish()  # Boost @@ -143,7 +163,7 @@ boost_flags = {}  if env.get("boost_libdir", None) :  	boost_flags["LIBPATH"] = [env["boost_libdir"]]  if env.get("boost_includedir", None) : -	if env["PLATFORM"] == "win32" : +	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 @@ -151,7 +171,7 @@ if env.get("boost_includedir", None) :  		boost_flags["CPPFLAGS"] = [("-isystem", env["boost_includedir"])]  boost_conf_env.MergeFlags(boost_flags)  conf = Configure(boost_conf_env) -boostLibs = [("signals", None), ("thread", None), ("regex", None), ("program_options", None), ("filesystem", None), ("serialization", "archive/text_oarchive.hpp"), ("system", "system/system_error.hpp"), ("date_time", "date_time/date.hpp")] +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 : @@ -164,9 +184,9 @@ for (lib, header) in boostLibs :  		break  	if env["PLATFORM"] != "win32" :  		libName = "boost_" + lib -		if not conf.CheckLib(libName) : +		if not conf.CheckLib(libName, language='CXX') :  			libName += "-mt" -			if not conf.CheckLib(libName) : +			if not conf.CheckLib(libName, language='CXX') :  				allLibsPresent = False  				break  		libNames.append(libName) @@ -177,7 +197,10 @@ if allLibsPresent :  	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"]["CPPDEFINES"] = ["BOOST_SIGNALS_NO_DEPRECATION_WARNING"] +		env["BOOST_FLAGS"]["CPPDEFINES"] = ["BOOST_SIGNALS_NO_DEPRECATION_WARNING"] +elif not env.get("boost_bundled_enable", True) : +	print "Error: Boost not found and boost_bundled_enable is false" +	Exit(1)  else :  	env["BOOST_BUNDLED"] = True  conf.Finish() @@ -200,7 +223,7 @@ if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" :  # GConf  env["HAVE_GCONF"] = 0 -if env["PLATFORM"] != "win32" and env["PLATFORM"] != "darwin" : +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") : @@ -261,13 +284,13 @@ if env["PLATFORM"] == "win32" :  # LibXML  conf = Configure(conf_env, custom_tests = {"CheckVersion": CheckVersion}) -if conf.CheckCHeader("libxml/parser.h") and conf.CheckLib("xml2") : +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"] }  conf.Finish() -if not env.get("HAVE_LIBXML", 0) : +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}) @@ -278,7 +301,7 @@ if not env.get("HAVE_LIBXML", 0) :  	conf.Finish()  # Expat -if not env.get("HAVE_LIBXML",0) : +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) : @@ -308,7 +331,9 @@ if not env.get("HAVE_EXPAT", 0) and not env.get("HAVE_LIBXML", 0) :  # ICU  icu_env = conf_env.Clone()  use_icu = bool(env["icu"]) -icu_prefix = env["icu"] if isinstance(env["icu"], str) else "" +icu_prefix = "" +if isinstance(env["icu"], str) : +        icu_prefix = env["icu"]  icu_flags = {}  if icu_prefix :  	icu_flags = { "CPPPATH": [os.path.join(icu_prefix, "include")] } @@ -331,7 +356,7 @@ if env.get("libidn_includedir", None) :  	libidn_flags["CPPPATH"] = [env["libidn_includedir"]]  libidn_conf_env.MergeFlags(libidn_flags)  conf = Configure(libidn_conf_env) -if not env.get("HAVE_ICU") and conf.CheckCHeader("idna.h") and conf.CheckLib(env["libidn_libname"]) : +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) @@ -339,8 +364,12 @@ conf.Finish()  # Fallback to bundled LibIDN  if not env.get("HAVE_ICU", False) and not env.get("HAVE_LIBIDN", False) : -	env["HAVE_LIBIDN"] = 1 -	env["LIBIDN_BUNDLED"] = 1 +	if env.get("libidn_bundled_enable", True)  : +		env["HAVE_LIBIDN"] = 1 +		env["LIBIDN_BUNDLED"] = 1 +	else : +		print "Error: ICU and LIBIDN not found, and libidn_bundled_enable is false" +		Exit(1)  # Unbound  if env["unbound"] : @@ -459,7 +488,7 @@ if env.get("avahi_includedir", None) :  	avahi_flags["CPPPATH"] = [env["avahi_includedir"]]  avahi_conf_env.MergeFlags(avahi_flags)  conf = Configure(avahi_conf_env) -if conf.CheckCHeader("avahi-client/client.h") and conf.CheckLib("avahi-client") and conf.CheckLib("avahi-common") : +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) @@ -476,11 +505,21 @@ if env.get("openssl_force_bundled", False) or env["target"] in ("iphone-device",  	env["HAVE_OPENSSL"] = True  else :  	use_openssl = bool(env["openssl"]) -	openssl_prefix = env["openssl"] if isinstance(env["openssl"], str) else "" +	openssl_prefix = "" +	if isinstance(env["openssl"], str) : +		openssl_prefix = env["openssl"]  	openssl_flags = {}  	if openssl_prefix : -		openssl_flags = { "CPPPATH": [os.path.join(openssl_prefix, "include")] } -		if env["PLATFORM"] == "win32" :  +		openssl_include = env.get("openssl_include", None) +		openssl_libdir = env.get("openssl_libdir", None) +		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 : @@ -491,7 +530,10 @@ else :  	if use_openssl and openssl_conf.CheckCHeader("openssl/ssl.h") :  		env["HAVE_OPENSSL"] = 1  		env["OPENSSL_FLAGS"] = openssl_flags -		if env["PLATFORM"] == "win32" :  +		openssl_libnames = env.get("openssl_libnames", None) +		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"] @@ -500,7 +542,7 @@ else :  					env["OPENSSL_FLAGS"]["FRAMEWORKS"] = ["Security"]  	else :  		env["OPENSSL_FLAGS"] = {} -		if env["PLATFORM"] == "win32" :  +		if env["PLATFORM"] == "win32" :  			env["HAVE_SCHANNEL"] = True  			# If we're compiling for Windows and OpenSSL isn't being used, use Schannel  			env.Append(LIBS = ["secur32"]) @@ -530,7 +572,7 @@ elif env.get("bonjour", False) :  	bonjour_env = conf_env.Clone()  	bonjour_conf = Configure(bonjour_env)  	bonjour_flags = {} -	if env.get("bonjour") != True :		 +	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")] @@ -572,7 +614,7 @@ if env.get("docbook_xsl") :  try:  	if env.Dir("#/.git").exists() : -		if not env.GetOption("clean") : +		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." @@ -666,6 +708,6 @@ print "  Projects: " + ' '.join(env["PROJECTS"])  print ""  print "  XML Parsers: " + ' '.join(parsers) -print "  TLS Support: " + ("OpenSSL" if env.get("HAVE_OPENSSL",0) else ("Schannel" if env.get("HAVE_SCHANNEL", 0) else "Disabled")) -print "  DNSSD Support: " + ("Bonjour" if env.get("HAVE_BONJOUR") else ("Avahi" if env.get("HAVE_AVAHI") else "Disabled")) +print "  TLS Support: " + (env.get("HAVE_OPENSSL",0) and "OpenSSL" 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 diff --git a/BuildTools/SCons/Tools/Test.py b/BuildTools/SCons/Tools/Test.py index 95fcce9..7e4609d 100644 --- a/BuildTools/SCons/Tools/Test.py +++ b/BuildTools/SCons/Tools/Test.py @@ -3,13 +3,16 @@ import SCons.Util, os  def generate(env) :  	def registerTest(env, target, type = "unit", is_checker = False) :  		if env["TEST_TYPE"] == "all" or env["TEST_TYPE"] == type : -			cmd = target[0].abspath if SCons.Util.is_List(target) else target.abspath +			if SCons.Util.is_List(target) : +				cmd = target[0].abspath +			else : +				cmd = target.abspath  			params = ""  			# Special support for unittest checker  			if is_checker and env.get("checker_report", False) :  				params = " --xml > " + os.path.join(target[0].dir.path, "checker-report.xml") -	 +  			ignore_prefix = ""  			if env.get("TEST_IGNORE_RESULT", False) :  				ignore_prefix = "-" @@ -33,10 +36,10 @@ def generate(env) :  				exec_name = os.path.basename(cmd)  				test_env.Command("**dummy**", target, SCons.Action.Action(  					["adb shell mount -o rw,remount /system", -					"adb push " + cmd + " /system/bin/" + exec_name,  +					"adb push " + cmd + " /system/bin/" + exec_name,  					"adb shell SWIFT_CLIENTTEST_JID=\"" + os.getenv("SWIFT_CLIENTTEST_JID") + "\" SWIFT_CLIENTTEST_PASS=\"" + os.getenv("SWIFT_CLIENTTEST_PASS") + "\" " + env.get("TEST_RUNNER", "") + "/system/bin/" + exec_name], cmdstr = "$TESTCOMSTR"))  			else : -				test_env.Command("**dummy**", target,  +				test_env.Command("**dummy**", target,  					SCons.Action.Action(ignore_prefix + env.get("TEST_RUNNER", "") + cmd + " " + params, cmdstr = "$TESTCOMSTR"))  	def registerScriptTests(env, scripts, name, type) : diff --git a/BuildTools/SCons/Version.py b/BuildTools/SCons/Version.py index f98a8b9..2f3b5a5 100644 --- a/BuildTools/SCons/Version.py +++ b/BuildTools/SCons/Version.py @@ -10,7 +10,7 @@ def getGitBuildVersion(root, project) :      if m :        return m.group(1) + "-dev" + m.group(2)    return None -     +  def git(cmd, root) :    full_cmd = "git " + cmd    p = subprocess.Popen(full_cmd, cwd=root, shell=True, stdin=subprocess.PIPE, stdout=subprocess.PIPE, stderr=subprocess.PIPE, close_fds=(os.name != "nt")) @@ -19,7 +19,9 @@ def git(cmd, root) :    # if error:    #   print "Git error: " + error    p.stdin.close() -  return gitVersion if p.wait() == 0 else None +  if p.wait() == 0 : +    return gitVersion +  return None  def getBuildVersion(root, project) :    versionFilename = os.path.join(root, "VERSION." + project) @@ -29,7 +31,7 @@ def getBuildVersion(root, project) :      f.close()      return version -  gitVersion = getGitBuildVersion(root, project)  +  gitVersion = getGitBuildVersion(root, project)    if gitVersion :      return gitVersion @@ -59,9 +61,8 @@ def convertToWindowsVersion(version) :            build_string = alpha_match.group(1)      if len(build_string) > 0 : -      build_match = re.match("^-dev(\d+)", build_string)  +      build_match = re.match("^-dev(\d+)", build_string)        if build_match :          patch += int(build_match.group(1))    return (major, minor, patch) -  | 
 Swift