Files
swift-mirror/utils/build-windows-toolchain.bat
Saleem Abdulrasool 2f073715cc build: update build rules for new MSI set
This corresponds to apple/swift-installer-scripts#207 which restructures
the MSIs and enables a number of new features.  It switches us to:
- durable GUIDs which will enable upgrades
- enables dual-purpose MSIs
- switches the installer to per-user installs
- should drop the requirement on Administrator rights
- splits the MSIs into smaller chunks to provide a nicer installer
  experience
- reduces the complexity in the management of the manifest
2023-06-09 16:32:58 -07:00

1044 lines
37 KiB
Batchfile

:: build-windows-toolchain.bat
::
:: This source file is part of the Swift.org open source project
::
:: Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors
:: Licensed under Apache License v2.0 with Runtime Library Exception
::
:: See https://swift.org/LICENSE.txt for license information
:: See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
setlocal enableextensions enabledelayedexpansion
path %PATH%;%PYTHON_HOME%
:: Identify the SourceRoot
:: Normalize the SourceRoot to make it easier to read the output.
cd %~dp0\..\..
set SourceRoot=%CD%
:: Identify the BuildRoot
set BuildRoot=%SourceRoot%\build
md %BuildRoot%
subst T: /d
subst T: %BuildRoot% || (exit /b)
set BuildRoot=T:
:: Identify the PackageRoot
set PackageRoot=%BuildRoot%\package
md %PackageRoot%
:: Identify the InstallRoot
set InstallRoot=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain\usr
set PlatformRoot=%BuildRoot%\Library\Developer\Platforms\Windows.platform
set SDKInstallRoot=%PlatformRoot%\Developer\SDKs\Windows.sdk
:: Setup temporary directories
md %BuildRoot%\tmp
set TEMP=%BuildRoot%\tmp
set TMP=%BuildRoot%\tmp
set TMPDIR=%BuildRoot%\tmp
set NINJA_STATUS=[%%f/%%t][%%p][%%es]
rem TODO(compnerd) remove this clean up code once we have had enough time for
rem the injection to soak.
:: Clean up old deployments as that breaks the tests
del /f /q "%UniversalCRTSdkDir%\Include\%UCRTVersion%\ucrt\module.modulemap"
del /f /q "%UniversalCRTSdkDir%\Include\%UCRTVersion%\um\module.modulemap"
del /f /q "%VCToolsInstallDir%\include\module.modulemap"
del /f /q "%VCToolsInstallDir%\include\vcruntime.apinotes"
call :CloneDependencies || (exit /b)
call :CloneRepositories || (exit /b)
md "%BuildRoot%\Library"
:: Build ICU
copy %SourceRoot%\swift-installer-scripts\shared\ICU\CMakeLists.txt %SourceRoot%\icu\icu4c\ || (exit /b)
cmake ^
-B %BuildRoot%\icu ^
-D BUILD_SHARED_LIBS=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=cl ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=cl ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%BuildRoot%\Library\icu-69.1\usr ^
-D BUILD_TOOLS=YES ^
-G Ninja ^
-S %SourceRoot%\icu\icu4c || (exit /b)
cmake --build "%BuildRoot%\icu" || (exit /b)
cmake --build "%BuildRoot%\icu" --target install || (exit /b)
:: FIXME(compnerd) is there a way to build the sources without downloading the amalgamation?
curl.exe -sOL "https://sqlite.org/2021/sqlite-amalgamation-3360000.zip" || (exit /b)
"%SystemDrive%\Program Files\Git\usr\bin\unzip.exe" -o sqlite-amalgamation-3360000.zip -d %SourceRoot%
:: TODO(compnerd) use CMakeLists.txt from compnerd/swift-build
md %BuildRoot%\sqlite
cl /nologo /DWIN32 /D_WINDOWS /W3 /MD /O2 /Ob2 /DNDEBUG /Fo%BuildRoot%\sqlite\sqlite3.c.obj /Fd%BuildRoot%\sqlite\SQLite3.pdb /FS -c %SourceRoot%\sqlite-amalgamation-3360000\sqlite3.c
lib /nologo /machine:x64 /out:%BuildRoot%\sqlite\SQLite3.lib %BuildRoot%\sqlite\sqlite3.c.obj
md %BuildRoot%\Library\sqlite-3.36.0\usr\lib
md %BuildRoot%\Library\sqlite-3.36.0\usr\include
copy %BuildRoot%\sqlite\SQLite3.lib %BuildRoot%\Library\sqlite-3.36.0\usr\lib
copy %SourceRoot%\sqlite-amalgamation-3360000\sqlite3.h %BuildRoot%\Library\sqlite-3.36.0\usr\include
copy %SourceRoot%\sqlite-amalgamation-3360000\sqlite3ext.h %BuildRoot%\Library\sqlite-3.36.0\usr\include
:: build zlib
cmake ^
-B %BuildRoot%\zlib ^
-D BUILD_SHARED_LIBS=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=cl ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%BuildRoot%\Library\zlib-1.2.11\usr ^
-D SKIP_INSTALL_FILES=YES ^
-G Ninja ^
-S %SourceRoot%\zlib || (exit /b)
cmake --build "%BUildRoot%\zlib" || (exit /b)
cmake --build "%BUildRoot%\zlib" --target install || (exit /b)
:: build libxml2
cmake ^
-B %BuildRoot%\libxml2 ^
-D BUILD_SHARED_LIBS=OFF ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=cl ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%BuildRoot%\Library\libxml2-2.9.12\usr ^
-D LIBXML2_WITH_ICONV=NO ^
-D LIBXML2_WITH_ICU=NO ^
-D LIBXML2_WITH_LZMA=NO ^
-D LIBXML2_WITH_PYTHON=NO ^
-D LIBXML2_WITH_TESTS=NO ^
-D LIBXML2_WITH_THREADS=YES ^
-D LIBXML2_WITH_ZLIB=NO ^
-G Ninja ^
-S %SourceRoot%\libxml2 || (exit /b)
cmake --build "%BUildRoot%\libxml2" || (exit /b)
cmake --build "%BUildRoot%\libxml2" --target install || (exit /b)
:: build curl
cmake ^
-B %BuildRoot%\curl ^
-D BUILD_SHARED_LIBS=NO ^
-D BUILD_TESTING=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=cl ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%BuildRoot%\Library\curl-7.77.0\usr ^
-D BUILD_CURL_EXE=NO ^
-D CMAKE_USE_OPENSSL=NO ^
-D CURL_CA_PATH=none ^
-D CMAKE_USE_SCHANNEL=YES ^
-D CMAKE_USE_LIBSSH2=NO ^
-D HAVE_POLL_FINE=NO ^
-D CURL_DISABLE_LDAP=YES ^
-D CURL_DISABLE_LDAPS=YES ^
-D CURL_DISABLE_TELNET=YES ^
-D CURL_DISABLE_DICT=YES ^
-D CURL_DISABLE_FILE=YES ^
-D CURL_DISABLE_TFTP=YES ^
-D CURL_DISABLE_RTSP=YES ^
-D CURL_DISABLE_PROXY=YES ^
-D CURL_DISABLE_POP3=YES ^
-D CURL_DISABLE_IMAP=YES ^
-D CURL_DISABLE_SMTP=YES ^
-D CURL_DISABLE_GOPHER=YES ^
-D CURL_ZLIB=YES ^
-D ENABLE_UNIX_SOCKETS=NO ^
-D ENABLE_THREADED_RESOLVER=NO ^
-D ZLIB_ROOT=%BuildRoot%\Library\zlib-1.2.11\usr ^
-D ZLIB_LIBRARY=%BuildRoot%\Library\zlib-1.2.11\usr\lib\zlibstatic.lib ^
-G Ninja ^
-S %SourceRoot%\curl || (exit /b)
cmake --build "%BuildRoot%\curl" || (exit /b)
cmake --build "%BuildRoot%\curl" --target install || (exit /b)
:: Build Toolchain
cmake ^
-B "%BuildRoot%\1" ^
-C %SourceRoot%\swift\cmake\caches\Windows-x86_64.cmake ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=cl ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=cl ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX="%InstallRoot%" ^
-D LLVM_DEFAULT_TARGET_TRIPLE=x86_64-unknown-windows-msvc ^
-D PACKAGE_VENDOR="swift.org" ^
-D CLANG_VENDOR="swift.org" ^
-D CLANG_VENDOR_UTI="org.swift" ^
-D LLVM_APPEND_VC_REV=NO ^
-D LLVM_VERSION_SUFFIX="" ^
-D SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION=YES ^
-D LLVM_EXTERNAL_SWIFT_SOURCE_DIR="%SourceRoot%\swift" ^
-D LLVM_EXTERNAL_CMARK_SOURCE_DIR="%SourceRoot%\cmark" ^
-D PYTHON_HOME=%PYTHON_HOME% ^
-D PYTHON_EXECUTABLE=%PYTHON_HOME%\python.exe ^
-D SWIFT_PATH_TO_LIBDISPATCH_SOURCE="%SourceRoot%\swift-corelibs-libdispatch" ^
-D SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE="%SourceRoot%\swift-syntax" ^
-D SWIFT_PATH_TO_STRING_PROCESSING_SOURCE=%SourceRoot%\swift-experimental-string-processing ^
-G Ninja ^
-S llvm-project\llvm || (exit /b)
cmake --build "%BuildRoot%\1" || (exit /b)
cmake --build "%BuildRoot%\1" --target install || (exit /b)
:: Build Swift Standard Library
cmake ^
-B %BuildRoot%\2 ^
-C %SourceRoot%\swift\cmake\caches\Runtime-Windows-x86_64.cmake ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%SDKInstallRoot%\usr ^
-D LLVM_DIR=%BuildRoot%\1\lib\cmake\llvm ^
-D SWIFT_NATIVE_SWIFT_TOOLS_PATH=%BuildRoot%\1\bin ^
-D SWIFT_PATH_TO_LIBDISPATCH_SOURCE=%SourceRoot%\swift-corelibs-libdispatch ^
-D SWIFT_PATH_TO_SWIFT_SYNTAX_SOURCE="%SourceRoot%\swift-syntax" ^
-D SWIFT_PATH_TO_STRING_PROCESSING_SOURCE=%SourceRoot%\swift-experimental-string-processing ^
-D SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_DISTRIBUTED=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_STRING_PROCESSING=YES ^
-D SWIFT_ENABLE_EXPERIMENTAL_OBSERVATION=YES ^
-G Ninja ^
-S %SourceRoot%\swift || (exit /b)
cmake --build %BuildRoot%\2 || (exit /b)
cmake --build %BuildRoot%\2 --target install || (exit /b)
:: Build libdispatch
cmake ^
-B %BuildRoot%\3 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%SDKInstallRoot%\usr ^
-D ENABLE_SWIFT=YES ^
-G Ninja ^
-S %SourceRoot%\swift-corelibs-libdispatch || (exit /b)
cmake --build %BuildRoot%\3 || (exit /b)
cmake --build %BuildRoot%\3 --target install || (exit /b)
:: Build Foundation
cmake ^
-B %BuildRoot%\4 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%SDKInstallRoot%\usr ^
-D CURL_DIR=%BuildRoot%\Library\curl-7.77.0\usr\lib\cmake\CURL ^
-D ICU_ROOT=%BuildRoot%\Library\icu-69.1\usr ^
-D ICU_DATA_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicudt69.lib ^
-D ICU_UC_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuuc69.lib ^
-D ICU_I18N_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuin69.lib ^
-D LIBXML2_LIBRARY=%BuildRoot%\Library\libxml2-2.9.12\usr\lib\libxml2s.lib ^
-D LIBXML2_INCLUDE_DIR=%BuildRoot%\Library\libxml2-2.9.12\usr\include\libxml2 ^
-D LIBXML2_DEFINITIONS="/DLIBXML_STATIC" ^
-D ZLIB_LIBRARY=%BuildRoot%\Library\zlib-1.2.11\usr\lib\zlibstatic.lib ^
-D ZLIB_INCLUDE_DIR=%BuildRoot%\Library\zlib-1.2.11\usr\include ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D ENABLE_TESTING=NO ^
-G Ninja ^
-S %SourceRoot%\swift-corelibs-foundation || (exit /b)
cmake --build %BuildRoot%\4 || (exit /b)
cmake --build %BuildRoot%\4 --target install || (exit /b)
:: Build XCTest
cmake ^
-B %BuildRoot%\5 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%PlatformRoot%\Developer\Library\XCTest-development\usr ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D ENABLE_TESTING=NO ^
-G Ninja ^
-S %SourceRoot%\swift-corelibs-xctest || (exit /b)
cmake --build %BuildRoot%\5 || (exit /b)
cmake --build %BuildRoot%\5 --target install || (exit /b)
:: Build swift-system
cmake ^
-B %BuildRoot%\6 ^
-D BUILD_SHARED_LIBS=YES ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-G Ninja ^
-S %SourceRoot%\swift-system || (exit /b)
cmake --build %BuildRoot%\6 || (exit /b)
cmake --build %BuildRoot%\6 --target install || (exit /b)
:: Build swift-tools-support-core
cmake ^
-B %BuildRoot%\7 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D SwiftSystem_DIR=%BuildRoot%\6\cmake\modules ^
-D SQLite3_INCLUDE_DIR=%BuildRoot%\Library\sqlite-3.36.0\usr\include ^
-D SQLite3_LIBRARY=%BuildRoot%\Library\sqlite-3.36.0\usr\lib\SQLite3.lib ^
-G Ninja ^
-S %SourceRoot%\swift-tools-support-core || (exit /b)
cmake --build %BuildRoot%\7 || (exit /b)
cmake --build %BuildRoot%\7 --target install || (exit /b)
:: Build llbuild
cmake ^
-B %BuildRoot%\8 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy -Xclang -fno-split-cold-code" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D LLBUILD_SUPPORT_BINDINGS=Swift ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D SQLite3_INCLUDE_DIR=%BuildRoot%\Library\sqlite-3.36.0\usr\include ^
-D SQLite3_LIBRARY=%BuildRoot%\Library\sqlite-3.36.0\usr\lib\SQLite3.lib ^
-G Ninja ^
-S %SourceRoot%\llbuild || (exit /b)
cmake --build %BuildRoot%\8 || (exit /b)
cmake --build %BuildRoot%\8 --target install || (exit /b)
:: Build swift-argument-parser
cmake ^
-B %BuildRoot%\9 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D XCTest_DIR=%BuildRoot%\5\cmake\modules ^
-G Ninja ^
-S %SourceRoot%\swift-argument-parser || (exit /b)
cmake --build %BuildRoot%\9 || (exit /b)
cmake --build %BuildRoot%\9 --target install || (exit /b)
:: Build Yams
cmake ^
-B %BuildRoot%\10 ^
-D BUILD_SHARED_LIBS=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy /DYAML_DECLARE_EXPORT /DWIN32" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-Xcc -DYAML_DECLARE_EXPORT -Xcc -DWIN32 -vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D XCTest_DIR=%BuildRoot%\5\cmake\modules ^
-G Ninja ^
-S %SourceRoot%\Yams || (exit /b)
cmake --build %BuildRoot%\10 || (exit /b)
:: Build swift-driver
cmake ^
-B %BuildRoot%\11 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D XCTest_DIR=%BuildRoot%\5\cmake\modules ^
-D SwiftSystem_DIR=%BuildRoot%\6\cmake\modules ^
-D TSC_DIR=%BuildRoot%\7\cmake\modules ^
-D LLBuild_DIR=%BuildRoot%\8\cmake\modules ^
-D ArgumentParser_DIR=%BuildRoot%\9\cmake\modules ^
-D Yams_DIR=%BuildRoot%\10\cmake\modules ^
-D SQLite3_INCLUDE_DIR=%BuildRoot%\Library\sqlite-3.36.0\usr\include ^
-D SQLite3_LIBRARY=%BuildRoot%\Library\sqlite-3.36.0\usr\lib\SQLite3.lib ^
-G Ninja ^
-S %SourceRoot%\swift-driver || (exit /b)
cmake --build %BuildRoot%\11 || (exit /b)
cmake --build %BuildRoot%\11 --target install || (exit /b)
:: Build swift-crypto
cmake ^
-B %BuildRoot%\12 ^
-D BUILD_SHARED_LIBS=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=cl ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=cl ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-G Ninja ^
-S %SourceRoot%\swift-crypto || (exit /b)
cmake --build %BuildRoot%\12 || (exit /b)
:: Build swift-collections
cmake ^
-B %BuildRoot%\13 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-G Ninja ^
-S %SourceRoot%\swift-collections || (exit /b)
cmake --build %BuildRoot%\13 || (exit /b)
cmake --build %BuildRoot%\13 --target install || (exit /b)
:: Build swift-asn1
cmake ^
-B %BuildRoot%\14 ^
-D BUILD_SHARED_LIBS=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-G Ninja ^
-S %SourceRoot%\swift-asn1 || (exit /b)
cmake --build %BuildRoot%\14 || (exit /b)
cmake --build %BuildRoot%\14 --target install || (exit /b)
:: Build swift-certificates
cmake ^
-B %BuildRoot%\15 ^
-D BUILD_SHARED_LIBS=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D SwiftCrypto_DIR=%BuildRoot%\12\cmake\modules ^
-D SwiftASN1_DIR=%BuildRoot%\14\cmake\modules ^
-G Ninja ^
-S %SourceRoot%\swift-certificates || (exit /b)
cmake --build %BuildRoot%\15 || (exit /b)
cmake --build %BuildRoot%\15 --target install || (exit /b)
:: Build swift-package-manager
cmake ^
-B %BuildRoot%\16 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D SwiftSystem_DIR=%BuildRoot%\6\cmake\modules ^
-D TSC_DIR=%BuildRoot%\7\cmake\modules ^
-D LLBuild_DIR=%BuildRoot%\8\cmake\modules ^
-D ArgumentParser_DIR=%BuildRoot%\9\cmake\modules ^
-D Yams_DIR=%BuildRoot%\10\cmake\modules ^
-D SwiftDriver_DIR=%BuildRoot%\11\cmake\modules ^
-D SwiftCrypto_DIR=%BuildRoot%\12\cmake\modules ^
-D SwiftCollections_DIR=%BuildRoot%\13\cmake\modules ^
-D SwiftASN1_DIR=%BuildRoot%\14\cmake\modules ^
-D SwiftCertificates_DIR=%BuildRoot%\15\cmake\modules ^
-D SQLite3_INCLUDE_DIR=%BuildRoot%\Library\sqlite-3.36.0\usr\include ^
-D SQLite3_LIBRARY=%BuildRoot%\Library\sqlite-3.36.0\usr\lib\SQLite3.lib ^
-G Ninja ^
-S %SourceRoot%\swiftpm || (exit /b)
cmake --build %BuildRoot%\16 || (exit /b)
cmake --build %BuildRoot%\16 --target install || (exit /b)
:: Build IndexStoreDB
cmake ^
-B %BuildRoot%\17 ^
-D BUILD_SHARED_LIBS=NO ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy -Xclang -fno-split-cold-code" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-G Ninja ^
-S %SourceRoot%\indexstore-db || (exit /b)
cmake --build %BuildRoot%\17 || (exit /b)
:: Build swift-syntax
cmake ^
-B %BuildRoot%\18 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-G Ninja ^
-S %SourceRoot%\swift-syntax || (exit /b)
cmake --build %BuildRoot%\18 || (exit /b)
cmake --build %BuildRoot%\18 --target install || (exit /b)
:: Build SourceKit-LSP
cmake ^
-B %BuildRoot%\19 ^
-D BUILD_SHARED_LIBS=YES ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy -Xclang -fno-split-cold-code" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_Swift_FLAGS="-vfsoverlay %BuildRoot%/2/stdlib/windows-vfs-overlay.yaml" ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%InstallRoot% ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D SwiftSystem_DIR=%BuildRoot%\6\cmake\modules ^
-D TSC_DIR=%BuildRoot%\7\cmake\modules ^
-D LLBuild_DIR=%BuildRoot%\8\cmake\modules ^
-D ArgumentParser_DIR=%BuildRoot%\9\cmake\modules ^
-D Yams_DIR=%BuildRoot%\10\cmake\modules ^
-D SwiftPM_DIR=%BuildRoot%\16\cmake\modules ^
-D IndexStoreDB_DIR=%BuildRoot%\17\cmake\modules ^
-D SwiftCollections_DIR=%BuildRoot%\13\cmake\modules ^
-D SwiftSyntax_DIR=%BuildRoot%\18\cmake\modules ^
-G Ninja ^
-S %SourceRoot%\sourcekit-lsp || (exit /b)
cmake --build %BuildRoot%\19 || (exit /b)
cmake --build %BuildRoot%\19 --target install || (exit /b)
:: Create Configuration Files
python -c "import plistlib; print(str(plistlib.dumps({ 'DefaultProperties': { 'DEFAULT_USE_RUNTIME': 'MD' } }), encoding='utf-8'))" > %SDKInstallRoot%\SDKSettings.plist
:: TODO(compnerd) match the XCTest installation name
python -c "import plistlib; print(str(plistlib.dumps({ 'DefaultProperties': { 'XCTEST_VERSION': 'development', 'SWIFTC_FLAGS': ['-use-ld=lld'] } }), encoding='utf-8'))" > %PlatformRoot%\Info.plist
IF NOT "%SKIP_PACKAGING%"=="1" call :PackageToolchain
:: TODO(compnerd) test LLVM
SET SKIP_TEST=0
FOR %%T IN (%SKIP_TESTS%) DO (IF /I %%T==swift SET SKIP_TEST=1)
IF "%SKIP_TEST%"=="0" call :TestSwift
IF %ERRORLEVEL% NEQ 0 (EXIT /B)
SET SKIP_TEST=0
FOR %%T IN (%SKIP_TESTS%) DO (IF /I %%T==dispatch SET SKIP_TEST=1)
IF "%SKIP_TEST%"=="0" call :TestDispatch
IF %ERRORLEVEL% NEQ 0 (EXIT /B)
SET SKIP_TEST=0
FOR %%T IN (%SKIP_TESTS%) DO (IF /I %%T==foundation SET SKIP_TEST=1)
IF "%SKIP_TEST%"=="0" call :TestFoundation
IF %ERRORLEVEL% NEQ 0 (EXIT /B)
SET SKIP_TEST=0
FOR %%T IN (%SKIP_TESTS%) DO (IF /I %%T==xctest SET SKIP_TEST=1)
IF "%SKIP_TEST%"=="0" call :TestXCTest
IF %ERRORLEVEL% NEQ 0 (EXIT /B)
:: Clean up the module cache
rd /s /q %LocalAppData%\clang\ModuleCache
goto :end
endlocal
:CloneRepositories
setlocal enableextensions enabledelayedexpansion
if defined SKIP_UPDATE_CHECKOUT goto :eof
if defined REPO_SCHEME set "args=--scheme %REPO_SCHEME%"
:: Always enable symbolic links
git config --global core.symlink true
:: Ensure that we have the files in the original line endings, the swift tests
:: depend on this being the case.
git -C "%SourceRoot%\swift" config --local core.autocrlf input
git -C "%SourceRoot%\swift" checkout-index --force --all
set "args=%args% --skip-repository swift"
set "args=%args% --skip-repository ninja"
set "args=%args% --skip-repository icu"
set "args=%args% --skip-repository swift-integration-tests"
set "args=%args% --skip-repository swift-stress-tester"
set "args=%args% --skip-repository swift-xcode-playground-support"
call "%SourceRoot%\swift\utils\update-checkout.cmd" %args% --clone --skip-history --github-comment "%ghprbCommentBody%"
goto :eof
endlocal
:CloneDependencies
setlocal enableextensions enabledelayedexpansion
:: Always enable symbolic links
git config --global core.symlink true
:: FIXME(compnerd) avoid the fresh clone
rd /s /q zlib libxml2 sqlite icu curl
git clone --quiet --no-tags --depth 1 --branch v1.2.11 https://github.com/madler/zlib
git clone --quiet --no-tags --depth 1 --branch v2.9.12 https://github.com/gnome/libxml2
git clone --quiet --no-tags --depth 1 --branch version-3.36.0 https://github.com/sqlite/sqlite
git clone --quiet --no-tags --depth 1 --branch maint/maint-69 https://github.com/unicode-org/icu
git clone --quiet --no-tags --depth 1 --branch curl-7_77_0 https://github.com/curl/curl
goto :eof
endlocal
:TestSwift
setlocal enableextensions enabledelayedexpansion
:: Test Swift
:: TODO(compnerd) make lit adjust the path properly
path %BuildRoot%\3;%BuildRoot%\1\bin;%PATH%;%SystemDrive%\Program Files\Git\usr\bin
cmake --build %BuildRoot%\1 --target check-swift || (exit /b)
goto :eof
endlocal
:TestDispatch
setlocal enableextensions enabledelayedexpansion
:: Test dispatch
cmake --build %BuildRoot%\3 --target ExperimentalTest || (exit /b)
goto :eof
endlocal
:TestFoundation
setlocal enableextensions enabledelayedexpansion
:: NOTE(compnerd) update the path *before* the build because the tests are
:: executed to shard the test suite.
path %BuildRoot%\5;%BuildRoot%\4\bin;%BuildRoot%\3;%BuildRoot%\1\bin;%PATH%;%SystemDrive%\Program Files\Git\usr\bin
:: Rebuild Foundation (w/ testing)
cmake ^
-B %BuildRoot%\4 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%SDKInstallRoot%\usr ^
-D CURL_DIR=%BuildRoot%\Library\curl-7.77.0\usr\lib\cmake\CURL ^
-D ICU_ROOT=%BuildRoot%\Library\icu-69.1\usr ^
-D ICU_DATA_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicudt69.lib ^
-D ICU_I18N_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuin69.lib ^
-D ICU_UC_LIBRARY_RELEASE=%BuildRoot%\Library\icu-69.1\usr\lib\sicuuc69.lib ^
-D LIBXML2_LIBRARY=%BuildRoot%\Library\libxml2-2.9.12\usr\lib\libxml2s.lib ^
-D LIBXML2_INCLUDE_DIR=%BuildRoot%\Library\libxml2-2.9.12\usr\include\libxml2 ^
-D LIBXML2_DEFINITIONS="/DLIBXML_STATIC" ^
-D ZLIB_LIBRARY=%BuildRoot%\Library\zlib-1.2.11\usr\lib\zlibstatic.lib ^
-D ZLIB_INCLUDE_DIR=%BuildRoot%\Library\zlib-1.2.11\usr\include ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D XCTest_DIR=%BuildRoot%\5\cmake\modules ^
-D ENABLE_TESTING=YES ^
-G Ninja ^
-S %SourceRoot%\swift-corelibs-foundation || (exit /b)
cmake --build %BuildRoot%\4 || (exit /b)
:: Test Foundation
set CTEST_OUTPUT_ON_FAILURE=1
cmake --build %BuildRoot%\4 --target test || (exit /b)
goto :eof
endlocal
:TestXCTest
setlocal enableextensions enabledelayedexpansion
:: NOTE(compnerd) update the path *before* the build because the tests are
:: executed to shard the test suite.
path %BuildRoot%\5;%BuildRoot%\4\bin;%BuildRoot%\3;%BuildRoot%\1\bin;%PATH%;%SystemDrive%\Program Files\Git\usr\bin
:: Rebuild XCTest (w/ testing)
cmake ^
-B %BuildRoot%\5 ^
-D CMAKE_BUILD_TYPE=%CMAKE_BUILD_TYPE% ^
-D CMAKE_C_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_C_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_CXX_COMPILER=%BuildRoot%/1/bin/clang-cl.exe ^
-D CMAKE_CXX_FLAGS="/GS- /Oy /Gw /Gy" ^
-D CMAKE_MT=mt ^
-D CMAKE_Swift_COMPILER=%BuildRoot%/1/bin/swiftc.exe ^
-D CMAKE_EXE_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_SHARED_LINKER_FLAGS="/INCREMENTAL:NO" ^
-D CMAKE_INSTALL_PREFIX=%PlatformRoot%\Developer\Library\XCTest-development\usr ^
-D dispatch_DIR=%BuildRoot%\3\cmake\modules ^
-D Foundation_DIR=%BuildRoot%\4\cmake\modules ^
-D ENABLE_TESTING=YES ^
-D XCTEST_PATH_TO_LIBDISPATCH_BUILD=%BuildRoot%\3 ^
-D XCTEST_PATH_TO_LIBDISPATCH_SOURCE=%SourceRoot%\swift-corelibs-libdispatch ^
-D XCTEST_PATH_TO_FOUNDATION_BUILD=%BuildRoot%\4 ^
-G Ninja ^
-S %SourceRoot%\swift-corelibs-xctest || (exit /b)
cmake --build %BuildRoot%\5 || (exit /b)
:: Test XCTest
cmake --build %BuildRoot%\5 --target check-xctest || (exit /b)
goto :eof
endlocal
:PackageToolchain
setlocal enableextensions enabledelayedexpansion
:: Package bld.msi
msbuild %SourceRoot%\swift-installer-scripts\platforms\Windows\bld.wixproj ^
-restore ^
-p:Configuration=Release ^
-p:IntermediateOutputPath=%PackageRoot%\bld\ ^
-p:OutputPath=%PackageRoot%\bld\ ^
-p:RunWixToolsOutOfProc=true ^
-p:DEVTOOLS_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain ^
-p:TOOLCHAIN_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain
:: TODO(compnerd) actually perform the code-signing
:: signtool sign /f Apple_CodeSign.pfx /p Apple_CodeSign_Password /tr http://timestamp.digicert.com /fd sha256 %PackageRoot%\bld\bld.msi
:: Package cli.msi
msbuild %SourceRoot%\swift-installer-scripts\platforms\Windows\cli.wixproj ^
-restore ^
-p:Configuration=Release ^
-p:IntermediateOutputPath=%PackageRoot%\cli\ ^
-p:OutputPath=%PackageRoot%\cli\ ^
-p:RunWixToolsOutOfProc=true ^
-p:DEVTOOLS_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain ^
-p:TOOLCHAIN_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain
:: TODO(compnerd) actually perform the code-signing
:: signtool sign /f Apple_CodeSign.pfx /p Apple_CodeSign_Password /tr http://timestamp.digicert.com /fd sha256 %PackageRoot%\cli\cli.msi
:: Package dbg.msi
msbuild %SourceRoot%\swift-installer-scripts\platforms\Windows\dbg.wixproj ^
-restore ^
-p:Configuration=Release ^
-p:IntermediateOutputPath=%PackageRoot%\dbg\ ^
-p:OutputPath=%PackageRoot%\dbg\ ^
-p:RunWixToolsOutOfProc=true ^
-p:DEVTOOLS_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain ^
-p:TOOLCHAIN_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain
:: TODO(compnerd) actually perform the code-signing
:: signtool sign /f Apple_CodeSign.pfx /p Apple_CodeSign_Password /tr http://timestamp.digicert.com /fd sha256 %PackageRoot%\dbg\dbg.msi
:: Package ide.msi
msbuild %SourceRoot%\swift-installer-scripts\platforms\Windows\ide.wixproj ^
-restore ^
-p:Configuration=Release ^
-p:IntermediateOutputPath=%PackageRoot%\ide\ ^
-p:OutputPath=%PackageRoot%\ide\ ^
-p:RunWixToolsOutOfProc=true ^
-p:DEVTOOLS_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain ^
-p:TOOLCHAIN_ROOT=%BuildRoot%\Library\Developer\Toolchains\unknown-Asserts-development.xctoolchain
:: TODO(compnerd) actually perform the code-signing
:: signtool sign /f Apple_CodeSign.pfx /p Apple_CodeSign_Password /tr http://timestamp.digicert.com /fd sha256 %PackageRoot%\ide\ide.msi
:: Package sdk.msi
msbuild %SourceRoot%\swift-installer-scripts\platforms\Windows\sdk.wixproj ^
-restore ^
-p:Configuration=Release ^
-p:IntermediateOutputPath=%PackageRoot%\sdk\ ^
-p:OutputPath=%PackageRoot%\sdk\ ^
-p:RunWixToolsOutOfProc=true ^
-p:PLATFORM_ROOT=%PlatformRoot%\ ^
-p:SDK_ROOT=%SDKInstallRoot%\
:: TODO(compnerd) actually perform the code-signing
:: signtool sign /f Apple_CodeSign.pfx /p Apple_CodeSign_Password /tr http://timestamp.digicert.com /fd sha256 %PackageRoot%\sdk\sdk.msi
:: Package runtime.msi
msbuild %SourceRoot%\swift-installer-scripts\platforms\Windows\runtime.wixproj ^
-restore ^
-p:Configuration=Release ^
-p:IntermediateOutputPath=%PackageRoot%\runtime\ ^
-p:OutputPath=%PackageRoot%\runtime\ ^
-p:RunWixToolsOutOfProc=true ^
-p:SDK_ROOT=%SDKInstallRoot%\
:: TODO(compnerd) actually perform the code-signing
:: signtool sign /f Apple_CodeSign.pfx /p Apple_CodeSign_Password /tr http://timestamp.digicert.com /fd sha256 %PackageRoot%\runtime\runtime.msi
:: Collate MSIs
move %PackageRoot%\bld\bld.msi %PackageRoot% || (exit /b)
move %PackageRoot%\cli\cli.msi %PackageRoot% || (exit /b)
move %PackageRoot%\dbg\dbg.msi %PackageRoot% || (exit /b)
move %PackageRoot%\ide\ide.msi %PackageRoot% || (exit /b)
move %PackageRoot%\sdk\sdk.msi %PackageRoot% || (exit /b)
move %PackageRoot%\runtime\runtime.msi %PackageRoot% || (exit /b)
:: Build Installer
msbuild %SourceRoot%\swift-installer-scripts\platforms\Windows\installer.wixproj ^
-restore ^
-p:Configuration=Release ^
-p:IntermediateOutputPath=%PackageRoot%\installer\ ^
-p:OutputPath=%PackageRoot%\installer\ ^
-p:RunWixToolsOutOfProc=true ^
-p:MSI_LOCATION=%PackageRoot%\
:: TODO(compnerd) actually perform the code-signing
:: signtool sign /f Apple_CodeSign.pfx /p Apple_CodeSign_Password /tr http://timestamp.digicert.com /fd sha256 %PackageRoot%\installer\installer.exe
:: Stage Artifacts
md %BuildRoot%\artifacts
:: Redistributable libraries for developers
:: bld
move %PackageRoot%\bld.msi %BuildRoot%\artifacts || (exit /b)
:: cli
move %PackageRoot%\cli.msi %BuildRoot%\artifacts || (exit /b)
:: dbg
move %PackageRoot%\dbg.msi %BuildRoot%\artifacts || (exit /b)
:: ide
move %PackageRoot%\ide.msi %BuildRoot%\artifacts || (exit /b)
:: sdk
move %PackageRoot%\sdk.msi %BuildRoot%\artifacts || (exit /b)
:: runtime
move %PackageRoot%\runtime.msi %BuildRoot%\artifacts || (exit /b)
:: installer
move %PackageRoot%\installer\installer.exe %BuildRoot%\artifacts || (exit /b)
goto :eof
endlocal
:end