From 8a71b91be885652f37c5aab5e1ecf25af4599fbc Mon Sep 17 00:00:00 2001
From: Tobias Markmann <tm@ayena.de>
Date: Mon, 7 Nov 2016 11:35:25 +0100
Subject: Add scons options forcing for bundled Boost, libminiupnpc, libnatpmp

Test-Information:

Build Swiften on Debian 8.6 with all installed dependencies
with and without passing these new options to scons. Either case
built fine.

Change-Id: I4867c0479a0d44b15e12918c5075e9039945ed95

diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot
index d6527f3..7efa8c9 100644
--- a/BuildTools/SCons/SConscript.boot
+++ b/BuildTools/SCons/SConscript.boot
@@ -52,6 +52,7 @@ vars.Add(BoolVariable("hunspell_enable", "Build with Hunspell support", True))
 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(BoolVariable("boost_force_bundled", "Force use of bundled Boost.", False))
 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))
@@ -69,12 +70,17 @@ vars.Add(PathVariable("libidn_includedir", "LibIDN headers location", None, Path
 vars.Add(PathVariable("libidn_libdir", "LibIDN library location", None, PathVariable.PathAccept))
 vars.Add("libidn_libname", "LibIDN library name",  os.name == "nt" and "libidn" or "idn")
 vars.Add(BoolVariable("need_idn", "Whether an IDN library is required. Without this, most internal binaries will fail", "true"))
+
 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", os.name == "nt" and "libminiupnpc" or "miniupnpc")
+vars.Add(BoolVariable("libminiupnpc_force_bundled", "Force use of bundled LibMiniUPNPC", False))
+
 vars.Add(PathVariable("libnatpmp_includedir", "LibNATPMP headers location", None, PathVariable.PathAccept))
 vars.Add(PathVariable("libnatpmp_libdir", "LibNATPMP library location", None, PathVariable.PathAccept))
 vars.Add("libnatpmp_libname", "LibNATPMP library name", os.name == "nt" and "libnatpmp" or "natpmp")
+vars.Add(BoolVariable("libnatpmp_force_bundled", "Force use of bundled LibNATPMP", False))
+
 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", os.name == "nt" and "libsqlite3" or "sqlite3")
diff --git a/BuildTools/SCons/SConstruct b/BuildTools/SCons/SConstruct
index 2da3787..c084cff 100644
--- a/BuildTools/SCons/SConstruct
+++ b/BuildTools/SCons/SConstruct
@@ -230,7 +230,7 @@ for (lib, header) in boostLibs :
                 allLibsPresent = False
                 break
         libNames.append(libName)
-if allLibsPresent :
+if not env.get("boost_force_bundled") and allLibsPresent :
     env["BOOST_FLAGS"] = boost_flags
     if env["PLATFORM"] != "win32" :
         env["BOOST_FLAGS"].update({"LIBS": libNames})
@@ -437,7 +437,7 @@ if env["experimental_ft"] :
         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"]) :
+    if not env.get("libminiupnpc_force_bundled") and conf.CheckCHeader("miniupnpc.h") and conf.CheckLib(env["libminiupnpc_libname"]) :
         env["HAVE_LIBMINIUPNPC"] = 1
         env["LIBMINIUPNPC_FLAGS"] = { "LIBS": ["miniupnpc"] }
         env["LIBMINIUPNPC_FLAGS"].update(libminiupnpc_flags)
@@ -457,7 +457,7 @@ if env["experimental_ft"] :
         libnatpmp_flags["CPPPATH"] = [env["libnatpmp_includedir"]]
     libnatpmp_conf_env.MergeFlags(libnatpmp_flags)
     conf = Configure(libnatpmp_conf_env)
-    if conf.CheckCHeader("natpmp.h") and conf.CheckLib(env["libnatpmp_libname"]) :
+    if  not env.get("libnatpmp_force_bundled") and conf.CheckCHeader("natpmp.h") and conf.CheckLib(env["libnatpmp_libname"]) :
         env["HAVE_LIBNATPMP"] = 1
         env["LIBNATPMP_FLAGS"] = { "LIBS": ["natpmp"] }
         env["LIBNATPMP_FLAGS"].update(libnatpmp_flags)
-- 
cgit v0.10.2-6-g49f6