diff options
author | Tobias Markmann <tm@ayena.de> | 2017-06-19 10:17:40 (GMT) |
---|---|---|
committer | Tobias Markmann <tm@ayena.de> | 2017-06-21 15:56:21 (GMT) |
commit | 44917c5f63ee2373b65911ea953d19fc0d1f3272 (patch) | |
tree | af296ec2eef9197e337fefc9a559b2ca3e683d5b /BuildTools/SCons | |
parent | 027111dcd9f5812342066d3bd3e1dbb1f46b3c95 (diff) | |
download | swift-44917c5f63ee2373b65911ea953d19fc0d1f3272.zip swift-44917c5f63ee2373b65911ea953d19fc0d1f3272.tar.bz2 |
Add CircleCI configuration for basic GitHub PR checks
This also disables a couple compiler warnings raised by clang
trunk.
Test-Information:
Tested this on my personal GitHub fork of Swift and it works.
Change-Id: I646d3beb9fc0376e0b38ce8e323e5717a899ad45
Diffstat (limited to 'BuildTools/SCons')
-rw-r--r-- | BuildTools/SCons/SConscript.boot | 6 | ||||
-rw-r--r-- | BuildTools/SCons/Tools/Test.py | 2 | ||||
-rw-r--r-- | BuildTools/SCons/Tools/qt4.py | 2 |
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' : |