@@ -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,7 +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
877
- [switch ] $UseSwiftSwiftDriver = $false ,
884
+ [bool ] $UseEarlySwiftDriver = $true ,
878
885
[switch ] $AddAndroidCMakeEnv = $false ,
879
886
[string ] $SwiftSDK = " " ,
880
887
[hashtable ] $Defines = @ {}, # Values are either single strings or arrays of flags
@@ -912,14 +919,6 @@ function Build-CMakeProject {
912
919
$env: SCCACHE_DIR = $Cache
913
920
}
914
921
}
915
- if ($UseSwiftSwiftDriver ) {
916
- $env: SWIFT_DRIVER_SWIFT_FRONTEND_EXEC = ([IO.Path ]::Combine($CompilersBinaryCache , " bin" , " swift-frontend.exe" ))
917
- }
918
-
919
- # TODO(compnerd) workaround swiftc.exe symlink not existing.
920
- if ($UseSwiftSwiftDriver ) {
921
- Copy-Item - Force ([IO.Path ]::Combine($DriverBinaryCache , " bin" , " swift-driver.exe" )) ([IO.Path ]::Combine($DriverBinaryCache , " bin" , " swiftc.exe" ))
922
- }
923
922
924
923
# Add additional defines (unless already present)
925
924
$Defines = $Defines.Clone ()
@@ -1062,9 +1061,7 @@ function Build-CMakeProject {
1062
1061
if ($UsePinnedCompilers.Contains (" Swift" ) -Or $UseBuiltCompilers.Contains (" Swift" )) {
1063
1062
$SwiftArgs = @ ()
1064
1063
1065
- if ($UseSwiftSwiftDriver ) {
1066
- TryAdd- KeyValue $Defines CMAKE_Swift_COMPILER ([IO.Path ]::Combine($DriverBinaryCache , " bin" , " swiftc.exe" ))
1067
- } elseif ($UseBuiltCompilers.Contains (" Swift" )) {
1064
+ if ($UseBuiltCompilers.Contains (" Swift" )) {
1068
1065
TryAdd- KeyValue $Defines CMAKE_Swift_COMPILER ([IO.Path ]::Combine($CompilersBinaryCache , " bin" , " swiftc.exe" ))
1069
1066
} else {
1070
1067
TryAdd- KeyValue $Defines CMAKE_Swift_COMPILER (Join-Path - Path (Get-PinnedToolchainTool ) - ChildPath " swiftc.exe" )
@@ -1183,7 +1180,11 @@ function Build-CMakeProject {
1183
1180
}
1184
1181
1185
1182
if ($UseBuiltCompilers.Contains (" Swift" )) {
1186
- $env: Path = " $ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $Arch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} "
1183
+ $env: Path = if ($UseEarlySwiftDriver ) {
1184
+ " $ ( Get-PinnedToolchainRuntime ) ;$ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $BuildArch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} "
1185
+ } else {
1186
+ " $ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $BuildArch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} ;$ ( Get-PinnedToolchainRuntime ) "
1187
+ }
1187
1188
} elseif ($UsePinnedCompilers.Contains (" Swift" )) {
1188
1189
$env: Path = " $ ( Get-PinnedToolchainRuntime ) ;${env: Path} "
1189
1190
}
@@ -1493,6 +1494,7 @@ function Build-Compilers() {
1493
1494
Python3_ROOT_DIR = " $BinaryCache \Python$ ( $Arch.CMakeName ) -$PythonVersion \tools" ;
1494
1495
SWIFT_BUILD_SWIFT_SYNTAX = " YES" ;
1495
1496
SWIFT_CLANG_LOCATION = (Get-PinnedToolchainTool );
1497
+ SWIFT_EARLY_SWIFT_DRIVER_BUILD = " $ ( Get-BuildProjectBinaryCache Driver) \$ ( $BuildArch.LLVMTarget ) \release" ;
1496
1498
SWIFT_ENABLE_EXPERIMENTAL_CONCURRENCY = " YES" ;
1497
1499
SWIFT_ENABLE_EXPERIMENTAL_CXX_INTEROP = " YES" ;
1498
1500
SWIFT_ENABLE_EXPERIMENTAL_DIFFERENTIABLE_PROGRAMMING = " YES" ;
@@ -1835,6 +1837,7 @@ function Build-Dispatch([Platform]$Platform, $Arch, [switch]$Test = $false) {
1835
1837
- Arch $Arch `
1836
1838
- Platform $Platform `
1837
1839
- UseBuiltCompilers C, CXX, Swift `
1840
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
1838
1841
- Defines @ {
1839
1842
ENABLE_SWIFT = " YES" ;
1840
1843
}
@@ -1877,28 +1880,17 @@ function Build-Foundation([Platform]$Platform, $Arch, [switch]$Test = $false) {
1877
1880
$ShortArch = $Arch.LLVMName
1878
1881
1879
1882
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
1883
Build-CMakeProject `
1893
1884
- Src $SourceCache \swift- corelibs- foundation `
1894
1885
- Bin $FoundationBinaryCache `
1895
1886
- InstallTo " $ ( $Arch.SDKInstallRoot ) \usr" `
1896
1887
- Arch $Arch `
1897
1888
- Platform $Platform `
1898
1889
- UseBuiltCompilers ASM, C, CXX, Swift `
1899
- - SwiftSDK: $SDKRoot `
1890
+ - SwiftSDK $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot) `
1900
1891
- Defines (@ {
1901
1892
ENABLE_TESTING = " NO" ;
1893
+ CMAKE_Swift_COMPILER_USE_OLD_DRIVER = " YES" ;
1902
1894
FOUNDATION_BUILD_TOOLS = if ($Platform -eq " Windows" ) { " YES" } else { " NO" };
1903
1895
CURL_DIR = " $LibraryRoot \curl-8.9.1\usr\lib\$Platform \$ShortArch \cmake\CURL" ;
1904
1896
LIBXML2_LIBRARY = if ($Platform -eq " Windows" ) {
@@ -1942,7 +1934,7 @@ function Build-FoundationMacros() {
1942
1934
Get-HostProjectBinaryCache FoundationMacros
1943
1935
}
1944
1936
1945
- $SwiftSDK = $null
1937
+ $SwiftSDK = $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot)
1946
1938
if ($Build ) {
1947
1939
$SwiftSDK = $BuildArch.SDKInstallRoot
1948
1940
}
@@ -1967,7 +1959,7 @@ function Build-FoundationMacros() {
1967
1959
- Arch $Arch `
1968
1960
- Platform $Platform `
1969
1961
- UseBuiltCompilers Swift `
1970
- - SwiftSDK: $SwiftSDK `
1962
+ - SwiftSDK $SwiftSDK `
1971
1963
- BuildTargets:$Targets `
1972
1964
- Defines @ {
1973
1965
SwiftSyntax_DIR = $SwiftSyntaxCMakeModules ;
@@ -2004,6 +1996,7 @@ function Build-XCTest([Platform]$Platform, $Arch, [switch]$Test = $false) {
2004
1996
- Arch $Arch `
2005
1997
- Platform $Platform `
2006
1998
- UseBuiltCompilers Swift `
1999
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
2007
2000
- BuildTargets $Targets `
2008
2001
- Defines (@ {
2009
2002
CMAKE_BUILD_WITH_INSTALL_RPATH = " YES" ;
@@ -2033,6 +2026,7 @@ function Build-Testing([Platform]$Platform, $Arch, [switch]$Test = $false) {
2033
2026
- Arch $Arch `
2034
2027
- Platform $Platform `
2035
2028
- UseBuiltCompilers C, CXX, Swift `
2029
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
2036
2030
- Defines (@ {
2037
2031
BUILD_SHARED_LIBS = " YES" ;
2038
2032
CMAKE_BUILD_WITH_INSTALL_RPATH = " YES" ;
@@ -2258,29 +2252,79 @@ function Build-ArgumentParser($Arch) {
2258
2252
}
2259
2253
}
2260
2254
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" ;
2255
+ function Build-Driver () {
2256
+ [CmdletBinding (PositionalBinding = $false )]
2257
+ param
2258
+ (
2259
+ [Parameter (Position = 0 , Mandatory = $true )]
2260
+ [hashtable ]$Arch ,
2261
+ [switch ] $Build = $false
2262
+ )
2263
+
2264
+ if ($Build ) {
2265
+ $Stopwatch = [Diagnostics.Stopwatch ]::StartNew()
2266
+
2267
+ Isolate- EnvVars {
2268
+ $env: SWIFTCI_USE_LOCAL_DEPS = 1
2269
+ $env: SDKROOT = (Get-PinnedToolchainSDK )
2270
+ $env: Path = " $ ( Get-PinnedToolchainRuntime ) ;$ ( Get-PinnedToolchainTool ) ;${env: Path} "
2271
+
2272
+ $src = " $SourceCache \swift-driver"
2273
+ $dst = (Get-BuildProjectBinaryCache Driver)
2274
+
2275
+ if ($ToBatch ) {
2276
+ Write-Output " "
2277
+ Write-Output " echo Building '$src ' to '$dst ' for arch '$ ( $Arch.LLVMName ) '..."
2278
+ } else {
2279
+ Write-Host - ForegroundColor Cyan " [$ ( [DateTime ]::Now.ToString(" yyyy-MM-dd HH:mm:ss" )) ] Building '$src ' to '$dst ' for arch '$ ( $Arch.LLVMName ) '..."
2280
+ }
2281
+
2282
+ Invoke-Program `
2283
+ " $ ( Get-PinnedToolchainTool ) \swift.exe" build `
2284
+ - c release `
2285
+ -- scratch- path $dst `
2286
+ -- package- path $src `
2287
+ - Xcc - Xclang - Xcc - fno- split-cold - code `
2288
+ - Xlinker " $ ( Get-PinnedToolchainSDK ) \usr\lib\swift\windows\$ ( $BuildArch.LLVMName ) \swiftCore.lib"
2289
+
2290
+ if (-not $ToBatch ) {
2291
+ 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 ) "
2292
+ Write-Host " "
2293
+ }
2294
+
2295
+ if ($Summary ) {
2296
+ $TimingData.Add ([PSCustomObject ]@ {
2297
+ Arch = $BuildArch.LLVMName
2298
+ Checkout = $src.Replace ($SourceCache , ' ' )
2299
+ Platform = " Windows"
2300
+ " Elapsed Time" = $Stopwatch.Elapsed.ToString ()
2301
+ })
2302
+ }
2283
2303
}
2304
+ } else {
2305
+ Build-CMakeProject `
2306
+ - Src $SourceCache \swift- driver `
2307
+ - Bin (Get-HostProjectBinaryCache Driver) `
2308
+ - InstallTo " $ ( $Arch.ToolchainInstallRoot ) \usr" `
2309
+ - Arch $Arch `
2310
+ - Platform Windows `
2311
+ - UseBuiltCompilers C, CXX, Swift `
2312
+ - SwiftSDK (Get-HostSwiftSDK ) `
2313
+ - Defines @ {
2314
+ BUILD_SHARED_LIBS = " YES" ;
2315
+ SwiftSystem_DIR = (Get-HostProjectCMakeModules System);
2316
+ TSC_DIR = (Get-HostProjectCMakeModules ToolsSupportCore);
2317
+ LLBuild_DIR = (Get-HostProjectCMakeModules LLBuild);
2318
+ Yams_DIR = (Get-HostProjectCMakeModules Yams);
2319
+ ArgumentParser_DIR = (Get-HostProjectCMakeModules ArgumentParser);
2320
+ SQLite3_INCLUDE_DIR = " $LibraryRoot \sqlite-3.46.0\usr\include" ;
2321
+ SQLite3_LIBRARY = " $LibraryRoot \sqlite-3.46.0\usr\lib\SQLite3.lib" ;
2322
+ SWIFT_DRIVER_BUILD_TOOLS = " YES" ;
2323
+ LLVM_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\llvm" ;
2324
+ Clang_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\clang" ;
2325
+ Swift_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \tools\swift\lib\cmake\swift" ;
2326
+ }
2327
+ }
2284
2328
}
2285
2329
2286
2330
function Build-Crypto ($Arch ) {
@@ -2578,7 +2622,7 @@ function Build-TestingMacros() {
2578
2622
Get-HostProjectBinaryCache TestingMacros
2579
2623
}
2580
2624
2581
- $SwiftSDK = $null
2625
+ $SwiftSDK = $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot)
2582
2626
if ($Build ) {
2583
2627
$SwiftSDK = $BuildArch.SDKInstallRoot
2584
2628
}
@@ -2609,7 +2653,7 @@ function Build-TestingMacros() {
2609
2653
- Arch $Arch `
2610
2654
- Platform $Platform `
2611
2655
- UseBuiltCompilers Swift `
2612
- - SwiftSDK: $SwiftSDK `
2656
+ - SwiftSDK $SwiftSDK `
2613
2657
- BuildTargets:$Targets `
2614
2658
- Defines @ {
2615
2659
SwiftSyntax_DIR = $SwiftSyntaxCMakeModules ;
@@ -2645,7 +2689,6 @@ function Build-Inspect() {
2645
2689
- InstallTo " $ ( $HostArch.ToolchainInstallRoot ) \usr" `
2646
2690
- Arch $HostArch `
2647
2691
- UseBuiltCompilers Swift `
2648
- - UseSwiftSwiftDriver `
2649
2692
- SwiftSDK $SDKRoot `
2650
2693
- Defines @ {
2651
2694
CMAKE_Swift_FLAGS = @ (" -Xcc" , " -I$SDKRoot \usr\include\swift\SwiftRemoteMirror" );
@@ -2747,6 +2790,7 @@ Fetch-Dependencies
2747
2790
if (-not $SkipBuild ) {
2748
2791
Invoke-BuildStep Build-CMark $BuildArch
2749
2792
Invoke-BuildStep Build-BuildTools $BuildArch
2793
+ Invoke-BuildStep Build-Driver - Build $BuildArch
2750
2794
if ($IsCrossCompiling ) {
2751
2795
Invoke-BuildStep Build-Compilers - Build $BuildArch
2752
2796
}
0 commit comments