diff --git a/XCTest.xcodeproj/project.pbxproj b/XCTest.xcodeproj/project.pbxproj
index 6cc4dbd..1544f7f 100644
--- a/XCTest.xcodeproj/project.pbxproj
+++ b/XCTest.xcodeproj/project.pbxproj
@@ -473,7 +473,10 @@
 			buildSettings = {
 				DEFINES_MODULE = YES;
 				DYLIB_INSTALL_NAME_BASE = "@rpath";
-				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = $BUILT_PRODUCTS_DIR;
+				"FRAMEWORK_SEARCH_PATHS[sdk=macosx*]" = (
+					$BUILT_PRODUCTS_DIR,
+					"../swift-corelibs-foundation/build/Debug",
+				);
 				IPHONEOS_DEPLOYMENT_TARGET = 10.0;
 				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
 				"LD_RUNPATH_SEARCH_PATHS[sdk=macosx*]" = "@executable_path/../Frameworks @loader_path/Frameworks";
@@ -482,6 +485,7 @@
 					"-framework",
 					SwiftFoundation,
 				);
+				OTHER_SWIFT_FLAGS = "-swift-version 3";
 				PRODUCT_BUNDLE_PACKAGE_TYPE = FMWK;
 				SKIP_INSTALL = YES;
 				SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator";
@@ -506,6 +510,7 @@
 					"-framework",
 					SwiftFoundation,
 				);
+				OTHER_SWIFT_FLAGS = "-swift-version 3";
 				PRODUCT_BUNDLE_PACKAGE_TYPE = FMWK;
 				SKIP_INSTALL = YES;
 				SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator macosx watchos watchsimulator";
diff --git a/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTest.xcscheme b/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTest.xcscheme
index f4df857..75eb3a5 100644
--- a/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTest.xcscheme
+++ b/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTest.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0800"
+   LastUpgradeVersion = "0830"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "NO"
diff --git a/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTestFunctionalTests.xcscheme b/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTestFunctionalTests.xcscheme
index 68a5569..f901e26 100644
--- a/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTestFunctionalTests.xcscheme
+++ b/XCTest.xcodeproj/xcshareddata/xcschemes/SwiftXCTestFunctionalTests.xcscheme
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <Scheme
-   LastUpgradeVersion = "0800"
+   LastUpgradeVersion = "0830"
    version = "1.3">
    <BuildAction
       parallelizeBuildables = "NO"
diff --git a/build_script.py b/build_script.py
index 8681155..e2b9504 100755
--- a/build_script.py
+++ b/build_script.py
@@ -152,6 +152,7 @@
         """
         swiftc = os.path.abspath(args.swiftc)
         build_dir = os.path.abspath(args.build_dir)
+        static_lib_build_dir = GenericUnixStrategy.static_lib_build_dir(build_dir)
         foundation_build_dir = os.path.abspath(args.foundation_build_dir)
         core_foundation_build_dir = GenericUnixStrategy.core_foundation_build_dir(
             foundation_build_dir, args.foundation_install_prefix)
@@ -206,6 +207,12 @@
                 build_dir=build_dir,
                 foundation_build_dir=foundation_build_dir))
 
+        # Build the static library.
+        run("mkdir -p {static_lib_build_dir}".format(static_lib_build_dir=static_lib_build_dir))
+        run("ar rcs {static_lib_build_dir}/libXCTest.a {build_dir}/XCTest.o".format(
+            static_lib_build_dir=static_lib_build_dir,
+            build_dir=build_dir))
+
         if args.test:
             # Execute main() using the arguments necessary to run the tests.
             main(args=["test",
@@ -217,9 +224,13 @@
         # we also install the built XCTest products.
         if args.module_path is not None and args.lib_path is not None:
             # Execute main() using the arguments necessary for installation.
-            main(args=["install", build_dir,
+            install_args = ["install", build_dir,
                        "--module-install-path", args.module_path,
-                       "--library-install-path", args.lib_path])
+                       "--library-install-path", args.lib_path]
+            if args.static_lib_path:
+                       install_args += ["--static-library-install-path",
+                           args.static_lib_path]
+            main(args=install_args)
 
         note('Done.')
 
@@ -286,6 +297,7 @@
         products into the given module and library paths.
         """
         build_dir = os.path.abspath(args.build_dir)
+        static_lib_build_dir = GenericUnixStrategy.static_lib_build_dir(build_dir)
         module_install_path = os.path.abspath(args.module_install_path)
         library_install_path = os.path.abspath(args.library_install_path)
 
@@ -307,6 +319,14 @@
             os.path.join(build_dir, xctest_swiftdoc),
             os.path.join(module_install_path, xctest_swiftdoc)))
 
+        if args.static_library_install_path:
+               static_library_install_path = os.path.abspath(args.static_library_install_path)
+               _mkdirp(static_library_install_path)
+               xctest_a = "libXCTest.a"
+               run("cp {} {}".format(
+                   os.path.join(static_lib_build_dir, xctest_a),
+                   os.path.join(static_library_install_path, xctest_a)))
+
     @staticmethod
     def core_foundation_build_dir(foundation_build_dir, foundation_install_prefix):
         """
@@ -322,6 +342,16 @@
         return os.path.join(foundation_build_dir,
                             foundation_install_prefix.strip("/"), 'lib', 'swift')
 
+    @staticmethod
+    def static_lib_build_dir(build_dir):
+        """
+        Given the path to the build directory, return the path to be used for
+        the static library libXCTest.a. Putting it in a separate directory to
+        libXCTest.so simplifies static linking when building a static test
+        foundation.
+        """
+        return os.path.join(build_dir, "static")
+
 
 def main(args=sys.argv[1:]):
     """
@@ -352,6 +382,7 @@
                 --build-dir="/tmp/XCTest_build" \\
                 --foundation-build-dir "/swift/usr/lib/swift/linux" \\
                 --library-install-path="/swift/usr/lib/swift/linux" \\
+                --static-library-install-path="/swift/usr/lib/swift_static/linux" \\
                 --module-install-path="/swift/usr/lib/swift/linux/x86_64"
 
             Note that installation is not supported on Darwin as this library
@@ -417,6 +448,11 @@
              "created if it doesn't already exist.",
         dest="lib_path")
     build_parser.add_argument(
+        "--static-library-install-path",
+        help="Location at which to install XCTest.a. This directory will be "
+             "created if it doesn't already exist.",
+        dest="static_lib_path")
+    build_parser.add_argument(
         "--release",
         help="builds for release",
         action="store_const",
@@ -508,6 +544,10 @@
         "-l", "--library-install-path",
         help="Location at which to install XCTest.so. This directory will be "
              "created if it doesn't already exist.")
+    install_parser.add_argument(
+        "-s", "--static-library-install-path",
+        help="Location at which to install XCTest.a. This directory will be "
+             "created if it doesn't already exist.")
 
     # Many versions of Python require a subcommand must be specified.
     # We handle this here: if no known subcommand (or none of the help options)
