summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'BuildTools')
-rw-r--r--BuildTools/SCons/SConscript.boot6
-rw-r--r--BuildTools/SCons/Tools/Test.py2
-rw-r--r--BuildTools/SCons/Tools/qt4.py2
3 files changed, 7 insertions, 3 deletions
diff --git a/BuildTools/SCons/SConscript.boot b/BuildTools/SCons/SConscript.boot
index d603ef4..f815bbc 100644
--- a/BuildTools/SCons/SConscript.boot
+++ b/BuildTools/SCons/SConscript.boot
@@ -315,78 +315,82 @@ if not env["assertions"] :
# disable file-transfer support on iOS
if env["target"] in ["iphone-device", "iphone-simulator", "xcode"] :
env["experimental_ft"] = False
if env["experimental_ft"] :
env.Append(CPPDEFINES = ["SWIFT_EXPERIMENTAL_FT"])
if env["experimental"] :
env.Append(CPPDEFINES = ["SWIFT_EXPERIMENTAL_HISTORY", "SWIFT_EXPERIMENTAL_WB"])
# If we build shared libs on AMD64, we need -fPIC.
# This should have no performance impact om AMD64
if env["PLATFORM"] == "posix" and platform.machine() in ["x86_64", "amd64"] :
env.Append(CCFLAGS = ["-fPIC"])
# Warnings
if env["PLATFORM"] == "win32" :
env.Append(CXXFLAGS = ["/wd4068"])
env.Append(CXXFLAGS = ["/wd4503"]) # Disable 'decorated name length exceeded, name was truncated' warning
if not env.get("allow_warnings", "False") :
env.Append(CXXFLAGS = ["/WX"])
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 os.path.basename(env["CXX"]) in ["clang", "clang++"] :
+ if os.path.basename(env["CXX"]).startswith(("clang", "clang++")) :
env.Append(CXXFLAGS = [
"-Weverything",
"-Wno-unknown-warning-option", # To stay compatible between CLang versions
"-Wno-unknown-pragmas", # To stay compatible between CLang versions
"-Wno-weak-vtables", # Virtually none of our elements have outlined methods. This also seems to affect classes in .cpp files, which in turn affects all our tests, which may need fixing in CLang
"-Wno-shadow", # Also warns for shadowing on constructor arguments, which we do a lot
"-Wno-documentation", # We don't care about documentation warnings
"-Wno-documentation-unknown-command", # We don't care about documentation warnings
"-Wno-exit-time-destructors", # Used a lot in e.g. CPPUnit
"-Wno-c++98-compat-pedantic", # We do different things that violate this, but they could be fixed
"-Wno-global-constructors", # We depend on this for e.g. string constants
"-Wno-disabled-macro-expansion", # Caused due to system headers
"-Wno-long-long", # We use long long
"-Wno-padded",
"-Wno-missing-variable-declarations", # Getting rid of CPPUnit warnings
"-Wno-direct-ivar-access", # Obj-C code warning
"-Wno-potentially-evaluated-expression", # Caused due to calling shared_ptr::get() inside typeid()
+
+ "-Wno-inconsistent-missing-destructor-override", # FIXME: fix source code issues regarding this warning later
+ "-Wno-shadow-field", # FIXME: fix source code issues regarding this warning later
+ "-Wno-unused-template", # FIXME: fix source code issues regarding this warning later
])
else :
env.Append(CXXFLAGS = ["-Wextra", "-Wall", "-Wnon-virtual-dtor", "-Wundef", "-Wold-style-cast", "-Wno-long-long", "-Woverloaded-virtual", "-Wfloat-equal", "-Wredundant-decls", "-Wno-unknown-pragmas"])
gccVersion = env.get("CCVERSION", "0.0.0").split(".")
if gccVersion >= ["4", "5", "0"] and not "clang" in env["CC"] :
env.Append(CXXFLAGS = ["-Wlogical-op"])
if not env.get("allow_warnings", False) :
env.Append(CXXFLAGS = ["-Werror"])
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", "crypt32", "dnsapi", "iphlpapi", "ws2_32", "wsock32", "Advapi32", "ntdsapi"])
env.Append(CCFLAGS = ["/EHsc", "/nologo", "/Zm256"])
env.Append(LINKFLAGS = ["/INCREMENTAL:no", "/NOLOGO"])
if int(env["MSVS_VERSION"].split(".")[0]) < 10 :
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" :
diff --git a/BuildTools/SCons/Tools/Test.py b/BuildTools/SCons/Tools/Test.py
index ebf9dc6..2106af4 100644
--- a/BuildTools/SCons/Tools/Test.py
+++ b/BuildTools/SCons/Tools/Test.py
@@ -1,52 +1,52 @@
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 :
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"
ignore_prefix = ""
if env.get("TEST_IGNORE_RESULT", False) :
ignore_prefix = "-"
# Set environment variables for running the test
test_env = env.Clone()
- for i in ["HOME", "PATH", "USERPROFILE", "APPDATA", "ASAN_OPTIONS", "LSAN_OPTIONS", "SWIFT_NETWORK_TEST_IPV4", "SWIFT_NETWORK_TEST_IPV6"]:
+ for i in ["HOME", "PATH", "USERPROFILE", "APPDATA", "GTEST_FILTER", "ASAN_OPTIONS", "LSAN_OPTIONS", "SWIFT_NETWORK_TEST_IPV4", "SWIFT_NETWORK_TEST_IPV6"]:
if os.environ.get(i, "") :
test_env["ENV"][i] = os.environ[i]
if env["target"] == "android" :
test_env["ENV"]["PATH"] = env["android_sdk_bin"] + ";" + test_env["ENV"]["PATH"]
else :
if test_env["PLATFORM"] == "darwin" :
test_env["ENV"]["DYLD_FALLBACK_LIBRARY_PATH"] = ":".join(map(lambda x : str(x), test_env.get("LIBPATH", [])))
elif test_env["PLATFORM"] == "win32" :
test_env["ENV"]["PATH"] = ";".join(map(lambda x : str(x), test_env.get("LIBRUNPATH", []))) + ";" + test_env["ENV"]["PATH"]
# Run the test
if env["target"] == "android":
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 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,
SCons.Action.Action(ignore_prefix + env.get("TEST_RUNNER", "") + cmd + " " + params, cmdstr = "$TESTCOMSTR"))
def registerScriptTests(env, scripts, name, type) :
if env["TEST_TYPE"] == "all" or env["TEST_TYPE"] == type :
pass
env.AddMethod(registerTest, "Test")
env.AddMethod(registerScriptTests, "ScriptTests")
def exists(env) :
diff --git a/BuildTools/SCons/Tools/qt4.py b/BuildTools/SCons/Tools/qt4.py
index b965e06..d5c14e2 100644
--- a/BuildTools/SCons/Tools/qt4.py
+++ b/BuildTools/SCons/Tools/qt4.py
@@ -450,61 +450,61 @@ def enable_modules(self, modules, debug=False, crosscompiling=False, version='4'
'QtUiTools',
]
invalidModules=[]
for module in modules:
if module not in validModules :
invalidModules.append(module)
if invalidModules :
raise Exception("Modules %s are not Qt4 modules. Valid Qt4 modules are: %s"% (
str(invalidModules),str(validModules)))
moduleDefines = {
'QtScript' : ['QT_SCRIPT_LIB'],
'QtSvg' : ['QT_SVG_LIB'],
'Qt3Support' : ['QT_QT3SUPPORT_LIB','QT3_SUPPORT'],
'QtSql' : ['QT_SQL_LIB'],
'QtXml' : ['QT_XML_LIB'],
'QtOpenGL' : ['QT_OPENGL_LIB'],
'QtGui' : ['QT_GUI_LIB'],
'QtWidgets' : ['QT_WIDGETS_LIB'],
'QtWebKitWidgets' : [],
'QtNetwork' : ['QT_NETWORK_LIB'],
'QtCore' : ['QT_CORE_LIB'],
}
for module in modules :
try : self.AppendUnique(CPPDEFINES=moduleDefines[module])
except: pass
debugSuffix = ''
include_flag = "-I"
- if os.path.basename(self["CC"]) in ("gcc", "clang"):
+ if os.path.basename(self["CC"]).startswith(("gcc", "clang")):
include_flag = "-isystem"
if sys.platform != "win32" and sys.platform != "darwin" and not crosscompiling :
if self["qt"]:
# The user specified qt path in config.py and we are going to use the
# installation under that location.
UsePkgConfig = False
else:
# The user did not specify a qt path in config py and we are going to
# ask pkg-config for the correct flags.
UsePkgConfig = True
if not UsePkgConfig:
if debug : debugSuffix = '_debug'
if version == '4' :
self.AppendUnique(CPPFLAGS = [include_flag + os.path.join("$QTDIR", "include", "phonon")])
for module in modules :
module_str = module
if not version == '4' :
module_str = module_str.replace('Qt', 'Qt5')
self.AppendUnique(LIBS=[module_str+debugSuffix])
self.AppendUnique(LIBPATH=[os.path.join("$QTDIR","lib")])
self.AppendUnique(CPPFLAGS = [include_flag + os.path.join("$QTDIR","include")])
self.AppendUnique(CPPFLAGS = [include_flag + os.path.join("$QTDIR","include", module)])
self["QT4_MOCCPPPATH"] = self["CPPPATH"]
return
else:
test_conf = self.Configure()
modules_str = " ".join(modules)
if not version == '4' :