diff options
author | Kevin Smith <git@kismith.co.uk> | 2014-10-02 11:34:50 (GMT) |
---|---|---|
committer | Kevin Smith <git@kismith.co.uk> | 2014-10-06 14:37:20 (GMT) |
commit | e2385da3debfdd372630fa36f70e2440f9c13ac4 (patch) | |
tree | f0c9da71120d9d84b80dbc732f165251ab7ad057 /BuildTools/SCons/SConstruct | |
parent | 9d9dc201b24109c8d7fd8f85553659888c1d7747 (diff) | |
download | swift-contrib-e2385da3debfdd372630fa36f70e2440f9c13ac4.zip swift-contrib-e2385da3debfdd372630fa36f70e2440f9c13ac4.tar.bz2 |
Allow scons to not require an IDN library
This will clearly break all the tests, Swift, Sluift etc., but is useful
if someone wants to use Swiften and inject their own IDN provider.
Test-information:
Compiles with Isode's IDN provider
Change-Id: Ia55991054f42f332bf34b653d7b55f64f654820e
Diffstat (limited to 'BuildTools/SCons/SConstruct')
-rw-r--r-- | BuildTools/SCons/SConstruct | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct index 7bda9c1..5db30f8 100644 --- a/BuildTools/SCons/SConstruct +++ b/BuildTools/SCons/SConstruct @@ -296,112 +296,116 @@ if env.get("try_libxml", True) and not env.get("HAVE_LIBXML", 0) : 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 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() # 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 ################################################################################ +env["NEED_IDN"] = env.get("need_idn", True) + # ICU icu_env = conf_env.Clone() use_icu = bool(env["icu"]) 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")] } 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 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) 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 - else : + 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 else : 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() else : env["LIBMINIUPNPC_FLAGS"] = {} # LibNATPMP if env["experimental_ft"] : libnatpmp_flags = {} libnatpmp_conf_env = conf_env.Clone() if env.get("libnatpmp_libdir", None) : |