@@ -238,6 +238,8 @@ $ArchX64 = @{
238
238
ToolchainInstallRoot = " $BinaryCache \x64\toolchains\$ProductVersion +Asserts" ;
239
239
}
240
240
241
+ $WindowsX64 = $ArchX64
242
+
241
243
$ArchX86 = @ {
242
244
VSName = " x86" ;
243
245
ShortName = " x86" ;
@@ -253,6 +255,8 @@ $ArchX86 = @{
253
255
SwiftTestingInstallRoot = " $BinaryCache \x86\Windows.platform\Developer\Library\Testing-development" ;
254
256
}
255
257
258
+ $WindowsX86 = $ArchX86
259
+
256
260
$ArchARM64 = @ {
257
261
VSName = " arm64" ;
258
262
ShortName = " arm64" ;
@@ -269,6 +273,8 @@ $ArchARM64 = @{
269
273
SwiftTestingInstallRoot = " $BinaryCache \arm64\Windows.platform\Developer\Library\Testing-development" ;
270
274
}
271
275
276
+ $WindowsARM64 = $ArchARM64
277
+
272
278
$AndroidARM64 = @ {
273
279
AndroidArchABI = " arm64-v8a" ;
274
280
BinaryDir = " bin64a" ;
@@ -433,7 +439,7 @@ function Get-TargetProjectBinaryCache($Arch, [TargetComponent]$Project) {
433
439
}
434
440
435
441
enum HostComponent {
436
- Compilers = 5
442
+ Compilers = 9
437
443
FoundationMacros = 10
438
444
TestingMacros
439
445
System
@@ -467,6 +473,7 @@ function Get-HostProjectCMakeModules([HostComponent]$Project) {
467
473
468
474
enum BuildComponent {
469
475
BuildTools
476
+ Driver
470
477
Compilers
471
478
FoundationMacros
472
479
TestingMacros
@@ -874,6 +881,7 @@ function Build-CMakeProject {
874
881
[string []] $UseMSVCCompilers = @ (), # C,CXX
875
882
[string []] $UseBuiltCompilers = @ (), # ASM,C,CXX,Swift
876
883
[string []] $UsePinnedCompilers = @ (), # ASM,C,CXX,Swift
884
+ [bool ] $UseEarlySwiftDriver = $true ,
877
885
[switch ] $UseSwiftSwiftDriver = $false ,
878
886
[switch ] $AddAndroidCMakeEnv = $false ,
879
887
[string ] $SwiftSDK = " " ,
@@ -1183,7 +1191,11 @@ function Build-CMakeProject {
1183
1191
}
1184
1192
1185
1193
if ($UseBuiltCompilers.Contains (" Swift" )) {
1186
- $env: Path = " $ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $Arch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} "
1194
+ $env: Path = if ($UseEarlySwiftDriver ) {
1195
+ " $ ( Get-PinnedToolchainRuntime ) ;$ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $BuildArch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} "
1196
+ } else {
1197
+ " $ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $BuildArch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} ;$ ( Get-PinnedToolchainRuntime ) "
1198
+ }
1187
1199
} elseif ($UsePinnedCompilers.Contains (" Swift" )) {
1188
1200
$env: Path = " $ ( Get-PinnedToolchainRuntime ) ;${env: Path} "
1189
1201
}
@@ -1493,6 +1505,7 @@ function Build-Compilers() {
1493
1505
Python3_ROOT_DIR = " $BinaryCache \Python$ ( $Arch.CMakeName ) -$PythonVersion \tools" ;
1494
1506
SWIFT_BUILD_SWIFT_SYNTAX = " YES" ;
1495
1507
SWIFT_CLANG_LOCATION = (Get-PinnedToolchainTool );
1508
+ SWIFT_EARLY_SWIFT_DRIVER_BUILD = " $ ( Get-BuildProjectBinaryCache Driver) \$ ( $BuildArch.LLVMTarget ) \release" ;
1496
1509
SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY = " YES" ;
1497
1510
SWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP = " YES" ;
1498
1511
SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING = " YES" ;
@@ -1835,6 +1848,7 @@ function Build-Dispatch([Platform]$Platform, $Arch, [switch]$Test = $false) {
1835
1848
- Arch $Arch `
1836
1849
- Platform $Platform `
1837
1850
- UseBuiltCompilers C, CXX, Swift `
1851
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
1838
1852
- Defines @ {
1839
1853
ENABLE_SWIFT = " YES" ;
1840
1854
}
@@ -1877,28 +1891,17 @@ function Build-Foundation([Platform]$Platform, $Arch, [switch]$Test = $false) {
1877
1891
$ShortArch = $Arch.LLVMName
1878
1892
1879
1893
Isolate- EnvVars {
1880
- $SDKRoot = if ($Platform -eq " Windows" ) {
1881
- " "
1882
- } else {
1883
- (Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot
1884
- }
1885
-
1886
- $SDKRoot = if ($Platform -eq " Windows" ) {
1887
- " "
1888
- } else {
1889
- (Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot
1890
- }
1891
-
1892
1894
Build-CMakeProject `
1893
1895
- Src $SourceCache \swift- corelibs- foundation `
1894
1896
- Bin $FoundationBinaryCache `
1895
1897
- InstallTo " $ ( $Arch.SDKInstallRoot ) \usr" `
1896
1898
- Arch $Arch `
1897
1899
- Platform $Platform `
1898
1900
- UseBuiltCompilers ASM, C, CXX, Swift `
1899
- - SwiftSDK: $SDKRoot `
1901
+ - SwiftSDK $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot) `
1900
1902
- Defines (@ {
1901
1903
ENABLE_TESTING = " NO" ;
1904
+ CMAKE_Swift_COMPILER_USE_OLD_DRIVER = " YES" ;
1902
1905
FOUNDATION_BUILD_TOOLS = if ($Platform -eq " Windows" ) { " YES" } else { " NO" };
1903
1906
CURL_DIR = " $LibraryRoot \curl-8.9.1\usr\lib\$Platform \$ShortArch \cmake\CURL" ;
1904
1907
LIBXML2_LIBRARY = if ($Platform -eq " Windows" ) {
@@ -1942,7 +1945,7 @@ function Build-FoundationMacros() {
1942
1945
Get-HostProjectBinaryCache FoundationMacros
1943
1946
}
1944
1947
1945
- $SwiftSDK = $null
1948
+ $SwiftSDK = $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot)
1946
1949
if ($Build ) {
1947
1950
$SwiftSDK = $BuildArch.SDKInstallRoot
1948
1951
}
@@ -1967,7 +1970,7 @@ function Build-FoundationMacros() {
1967
1970
- Arch $Arch `
1968
1971
- Platform $Platform `
1969
1972
- UseBuiltCompilers Swift `
1970
- - SwiftSDK: $SwiftSDK `
1973
+ - SwiftSDK $SwiftSDK `
1971
1974
- BuildTargets:$Targets `
1972
1975
- Defines @ {
1973
1976
SwiftSyntax_DIR = $SwiftSyntaxCMakeModules ;
@@ -2004,6 +2007,7 @@ function Build-XCTest([Platform]$Platform, $Arch, [switch]$Test = $false) {
2004
2007
- Arch $Arch `
2005
2008
- Platform $Platform `
2006
2009
- UseBuiltCompilers Swift `
2010
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
2007
2011
- BuildTargets $Targets `
2008
2012
- Defines (@ {
2009
2013
CMAKE_BUILD_WITH_INSTALL_RPATH = " YES" ;
@@ -2033,6 +2037,7 @@ function Build-Testing([Platform]$Platform, $Arch, [switch]$Test = $false) {
2033
2037
- Arch $Arch `
2034
2038
- Platform $Platform `
2035
2039
- UseBuiltCompilers C, CXX, Swift `
2040
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
2036
2041
- Defines (@ {
2037
2042
BUILD_SHARED_LIBS = " YES" ;
2038
2043
CMAKE_BUILD_WITH_INSTALL_RPATH = " YES" ;
@@ -2258,29 +2263,79 @@ function Build-ArgumentParser($Arch) {
2258
2263
}
2259
2264
}
2260
2265
2261
- function Build-Driver ($Arch ) {
2262
- Build-CMakeProject `
2263
- - Src $SourceCache \swift- driver `
2264
- - Bin (Get-HostProjectBinaryCache Driver) `
2265
- - InstallTo " $ ( $Arch.ToolchainInstallRoot ) \usr" `
2266
- - Arch $Arch `
2267
- - Platform Windows `
2268
- - UseBuiltCompilers C, CXX, Swift `
2269
- - SwiftSDK (Get-HostSwiftSDK ) `
2270
- - Defines @ {
2271
- BUILD_SHARED_LIBS = " YES" ;
2272
- SwiftSystem_DIR = (Get-HostProjectCMakeModules System);
2273
- TSC_DIR = (Get-HostProjectCMakeModules ToolsSupportCore);
2274
- LLBuild_DIR = (Get-HostProjectCMakeModules LLBuild);
2275
- Yams_DIR = (Get-HostProjectCMakeModules Yams);
2276
- ArgumentParser_DIR = (Get-HostProjectCMakeModules ArgumentParser);
2277
- SQLite3_INCLUDE_DIR = " $LibraryRoot \sqlite-3.46.0\usr\include" ;
2278
- SQLite3_LIBRARY = " $LibraryRoot \sqlite-3.46.0\usr\lib\SQLite3.lib" ;
2279
- SWIFT_DRIVER_BUILD_TOOLS = " YES" ;
2280
- LLVM_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\llvm" ;
2281
- Clang_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\clang" ;
2282
- Swift_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \tools\swift\lib\cmake\swift" ;
2266
+ function Build-Driver () {
2267
+ [CmdletBinding (PositionalBinding = $false )]
2268
+ param
2269
+ (
2270
+ [Parameter (Position = 0 , Mandatory = $true )]
2271
+ [hashtable ]$Arch ,
2272
+ [switch ] $Build = $false
2273
+ )
2274
+
2275
+ if ($Build ) {
2276
+ $Stopwatch = [Diagnostics.Stopwatch ]::StartNew()
2277
+
2278
+ Isolate- EnvVars {
2279
+ $env: SWIFTCI_USE_LOCAL_DEPS = 1
2280
+ $env: SDKROOT = (Get-PinnedToolchainSDK )
2281
+ $env: Path = " $ ( Get-PinnedToolchainRuntime ) ;$ ( Get-PinnedToolchainTool ) ;${env: Path} "
2282
+
2283
+ $src = " $SourceCache \swift-driver"
2284
+ $dst = (Get-BuildProjectBinaryCache Driver)
2285
+
2286
+ if ($ToBatch ) {
2287
+ Write-Output " "
2288
+ Write-Output " echo Building '$src ' to '$dst ' for arch '$ ( $Arch.LLVMName ) '..."
2289
+ } else {
2290
+ Write-Host - ForegroundColor Cyan " [$ ( [DateTime ]::Now.ToString(" yyyy-MM-dd HH:mm:ss" )) ] Building '$src ' to '$dst ' for arch '$ ( $Arch.LLVMName ) '..."
2291
+ }
2292
+
2293
+ Invoke-Program `
2294
+ " $ ( Get-PinnedToolchainTool ) \swift.exe" build `
2295
+ - c release `
2296
+ -- scratch- path $dst `
2297
+ -- package- path $src `
2298
+ - Xcc - Xclang - Xcc - fno- split-cold - code `
2299
+ - Xlinker " $ ( Get-PinnedToolchainSDK ) \usr\lib\swift\windows\$ ( $BuildArch.LLVMName ) \swiftCore.lib"
2300
+
2301
+ if (-not $ToBatch ) {
2302
+ Write-Host - ForegroundColor Cyan " [$ ( [DateTime ]::Now.ToString(" yyyy-MM-dd HH:mm:ss" )) ] Finished building '$src ' to '$dst ' for arch '$ ( $Arch.LLVMName ) ' in $ ( $Stopwatch.Elapsed ) "
2303
+ Write-Host " "
2304
+ }
2305
+
2306
+ if ($Summary ) {
2307
+ $TimingData.Add ([PSCustomObject ]@ {
2308
+ Arch = $BuildArch.LLVMName
2309
+ Checkout = $src.Replace ($SourceCache , ' ' )
2310
+ Platform = " Windows"
2311
+ " Elapsed Time" = $Stopwatch.Elapsed.ToString ()
2312
+ })
2313
+ }
2283
2314
}
2315
+ } else {
2316
+ Build-CMakeProject `
2317
+ - Src $SourceCache \swift- driver `
2318
+ - Bin (Get-HostProjectBinaryCache Driver) `
2319
+ - InstallTo " $ ( $Arch.ToolchainInstallRoot ) \usr" `
2320
+ - Arch $Arch `
2321
+ - Platform Windows `
2322
+ - UseBuiltCompilers C, CXX, Swift `
2323
+ - SwiftSDK (Get-HostSwiftSDK ) `
2324
+ - Defines @ {
2325
+ BUILD_SHARED_LIBS = " YES" ;
2326
+ SwiftSystem_DIR = (Get-HostProjectCMakeModules System);
2327
+ TSC_DIR = (Get-HostProjectCMakeModules ToolsSupportCore);
2328
+ LLBuild_DIR = (Get-HostProjectCMakeModules LLBuild);
2329
+ Yams_DIR = (Get-HostProjectCMakeModules Yams);
2330
+ ArgumentParser_DIR = (Get-HostProjectCMakeModules ArgumentParser);
2331
+ SQLite3_INCLUDE_DIR = " $LibraryRoot \sqlite-3.46.0\usr\include" ;
2332
+ SQLite3_LIBRARY = " $LibraryRoot \sqlite-3.46.0\usr\lib\SQLite3.lib" ;
2333
+ SWIFT_DRIVER_BUILD_TOOLS = " YES" ;
2334
+ LLVM_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\llvm" ;
2335
+ Clang_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\clang" ;
2336
+ Swift_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \tools\swift\lib\cmake\swift" ;
2337
+ }
2338
+ }
2284
2339
}
2285
2340
2286
2341
function Build-Crypto ($Arch ) {
@@ -2578,7 +2633,7 @@ function Build-TestingMacros() {
2578
2633
Get-HostProjectBinaryCache TestingMacros
2579
2634
}
2580
2635
2581
- $SwiftSDK = $null
2636
+ $SwiftSDK = $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot)
2582
2637
if ($Build ) {
2583
2638
$SwiftSDK = $BuildArch.SDKInstallRoot
2584
2639
}
@@ -2609,7 +2664,7 @@ function Build-TestingMacros() {
2609
2664
- Arch $Arch `
2610
2665
- Platform $Platform `
2611
2666
- UseBuiltCompilers Swift `
2612
- - SwiftSDK: $SwiftSDK `
2667
+ - SwiftSDK $SwiftSDK `
2613
2668
- BuildTargets:$Targets `
2614
2669
- Defines @ {
2615
2670
SwiftSyntax_DIR = $SwiftSyntaxCMakeModules ;
@@ -2645,7 +2700,6 @@ function Build-Inspect() {
2645
2700
- InstallTo " $ ( $HostArch.ToolchainInstallRoot ) \usr" `
2646
2701
- Arch $HostArch `
2647
2702
- UseBuiltCompilers Swift `
2648
- - UseSwiftSwiftDriver `
2649
2703
- SwiftSDK $SDKRoot `
2650
2704
- Defines @ {
2651
2705
CMAKE_Swift_FLAGS = @ (" -Xcc" , " -I$SDKRoot \usr\include\swift\SwiftRemoteMirror" );
@@ -2747,6 +2801,7 @@ Fetch-Dependencies
2747
2801
if (-not $SkipBuild ) {
2748
2802
Invoke-BuildStep Build-CMark $BuildArch
2749
2803
Invoke-BuildStep Build-BuildTools $BuildArch
2804
+ Invoke-BuildStep Build-Driver - Build $BuildArch
2750
2805
if ($IsCrossCompiling ) {
2751
2806
Invoke-BuildStep Build-Compilers - Build $BuildArch
2752
2807
}
0 commit comments