summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRemko Tronçon <git@el-tramo.be>2012-06-04 17:15:34 (GMT)
committerRemko Tronçon <git@el-tramo.be>2012-06-05 07:32:01 (GMT)
commite43999d275ff27970ba973edd2be68fb6b998aaf (patch)
treeb3442e40a221b19f60535028e04712396dabe7ed /BuildTools/SCons
parent1514e787b28ee09ea28d75828bf41049696fd5c7 (diff)
downloadswift-contrib-e43999d275ff27970ba973edd2be68fb6b998aaf.zip
swift-contrib-e43999d275ff27970ba973edd2be68fb6b998aaf.tar.bz2
Added ICU support.
Diffstat (limited to 'BuildTools/SCons')
-rw-r--r--BuildTools/SCons/SConscript.boot1
-rw-r--r--BuildTools/SCons/SConstruct29
2 files changed, 27 insertions, 3 deletions
diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot
index 098df0a..16c05c3 100644
--- a/BuildTools/SCons/SConscript.boot
+++ b/BuildTools/SCons/SConscript.boot
@@ -35,18 +35,19 @@ if os.name == "nt" :
vars.Add(PathVariable("wix_bindir", "Path to WiX binaries", "", PathVariable.PathAccept))
if os.name == "nt" :
vars.Add(PackageVariable("bonjour", "Bonjour SDK location", "yes"))
vars.Add(PackageVariable("openssl", "OpenSSL location", "yes"))
vars.Add(PathVariable("boost_includedir", "Boost headers location", None, PathVariable.PathAccept))
vars.Add(PathVariable("boost_libdir", "Boost library location", None, PathVariable.PathAccept))
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(PackageVariable("icu", "ICU library location", "no"))
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(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(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))
diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
index e91dd6e..eef7a80 100644
--- a/BuildTools/SCons/SConstruct
+++ b/BuildTools/SCons/SConstruct
@@ -288,35 +288,58 @@ if not env.get("HAVE_LIBXML",0) :
# 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
+################################################################################
+# IDN library
+################################################################################
+
+# ICU
+icu_env = conf_env.Clone()
+use_icu = bool(env["icu"])
+icu_prefix = env["icu"] if isinstance(env["icu"], str) else ""
+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_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"]
+icu_conf.Finish()
+
# LibIDN
libidn_conf_env = conf_env.Clone()
libidn_flags = {}
if env.get("libidn_libdir", None) :
libidn_flags["LIBPATH"] = [env["libidn_libdir"]]
if env.get("libidn_includedir", None) :
libidn_flags["CPPPATH"] = [env["libidn_includedir"]]
libidn_conf_env.MergeFlags(libidn_flags)
conf = Configure(libidn_conf_env)
-if conf.CheckCHeader("idna.h") and conf.CheckLib(env["libidn_libname"]) :
+if 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)
-else :
- env["LIBIDN_BUNDLED"] = 1
conf.Finish()
+# Fallback to bundled LibIDN
+if not env.get("HAVE_ICU", False) and not env.get("HAVE_LIBIDN", False) :
+ env["LIBIDN_BUNDLED"] = 1
+
# LibMiniUPnPc
if env["experimental"] :
#libminiupnpc_conf_env = conf_env.Clone()
#conf = Configure(libminiupnpc_conf_env)
#if conf.CheckCHeader("miniupnpc.h") and conf.CheckLib(env["libminiupnpc_libname"]) :
# print "NOT IMPLEMENTED YET"
#else :
env["LIBMINIUPNPC_BUNDLED"] = 1
#conf.Finish()