@@ -230,6 +230,8 @@ $ArchX64 = @{
230
230
ToolchainInstallRoot = " $BinaryCache \x64\toolchains\$ProductVersion +Asserts" ;
231
231
}
232
232
233
+ $WindowsX64 = $ArchX64
234
+
233
235
$ArchX86 = @ {
234
236
VSName = " x86" ;
235
237
ShortName = " x86" ;
@@ -245,6 +247,8 @@ $ArchX86 = @{
245
247
SwiftTestingInstallRoot = " $BinaryCache \x86\Windows.platform\Developer\Library\Testing-development" ;
246
248
}
247
249
250
+ $WindowsX86 = $ArchX86
251
+
248
252
$ArchARM64 = @ {
249
253
VSName = " arm64" ;
250
254
ShortName = " arm64" ;
@@ -261,6 +265,8 @@ $ArchARM64 = @{
261
265
SwiftTestingInstallRoot = " $BinaryCache \arm64\Windows.platform\Developer\Library\Testing-development" ;
262
266
}
263
267
268
+ $WindowsARM64 = $ArchARM64
269
+
264
270
$AndroidARM64 = @ {
265
271
AndroidArchABI = " arm64-v8a" ;
266
272
BinaryDir = " bin64a" ;
@@ -429,7 +435,7 @@ function Get-TargetProjectBinaryCache($Arch, [TargetComponent]$Project) {
429
435
}
430
436
431
437
enum HostComponent {
432
- Compilers = 5
438
+ Compilers = 9
433
439
FoundationMacros = 10
434
440
TestingMacros
435
441
System
@@ -463,6 +469,7 @@ function Get-HostProjectCMakeModules([HostComponent]$Project) {
463
469
464
470
enum BuildComponent {
465
471
BuildTools
472
+ Driver
466
473
Compilers
467
474
FoundationMacros
468
475
TestingMacros
@@ -903,7 +910,7 @@ function Build-CMakeProject {
903
910
[string []] $UseMSVCCompilers = @ (), # C,CXX
904
911
[string []] $UseBuiltCompilers = @ (), # ASM,C,CXX,Swift
905
912
[string []] $UsePinnedCompilers = @ (), # ASM,C,CXX,Swift
906
- [switch ] $UseSwiftSwiftDriver = $false ,
913
+ [bool ] $UseEarlySwiftDriver = $true ,
907
914
[switch ] $AddAndroidCMakeEnv = $false ,
908
915
[string ] $SwiftSDK = " " ,
909
916
[hashtable ] $Defines = @ {}, # Values are either single strings or arrays of flags
@@ -941,14 +948,6 @@ function Build-CMakeProject {
941
948
$env: SCCACHE_DIR = $Cache
942
949
}
943
950
}
944
- if ($UseSwiftSwiftDriver ) {
945
- $env: SWIFT_DRIVER_SWIFT_FRONTEND_EXEC = ([IO.Path ]::Combine($CompilersBinaryCache , " bin" , " swift-frontend.exe" ))
946
- }
947
-
948
- # TODO(compnerd) workaround swiftc.exe symlink not existing.
949
- if ($UseSwiftSwiftDriver ) {
950
- Copy-Item - Force ([IO.Path ]::Combine($DriverBinaryCache , " bin" , " swift-driver.exe" )) ([IO.Path ]::Combine($DriverBinaryCache , " bin" , " swiftc.exe" ))
951
- }
952
951
953
952
# Add additional defines (unless already present)
954
953
$Defines = $Defines.Clone ()
@@ -1080,9 +1079,7 @@ function Build-CMakeProject {
1080
1079
if ($UsePinnedCompilers.Contains (" Swift" ) -Or $UseBuiltCompilers.Contains (" Swift" )) {
1081
1080
$SwiftArgs = @ ()
1082
1081
1083
- if ($UseSwiftSwiftDriver ) {
1084
- TryAdd- KeyValue $Defines CMAKE_Swift_COMPILER ([IO.Path ]::Combine($DriverBinaryCache , " bin" , " swiftc.exe" ))
1085
- } elseif ($UseBuiltCompilers.Contains (" Swift" )) {
1082
+ if ($UseBuiltCompilers.Contains (" Swift" )) {
1086
1083
TryAdd- KeyValue $Defines CMAKE_Swift_COMPILER ([IO.Path ]::Combine($CompilersBinaryCache , " bin" , " swiftc.exe" ))
1087
1084
} else {
1088
1085
TryAdd- KeyValue $Defines CMAKE_Swift_COMPILER (Join-Path - Path (Get-PinnedToolchainTool ) - ChildPath " swiftc.exe" )
@@ -1201,7 +1198,11 @@ function Build-CMakeProject {
1201
1198
}
1202
1199
1203
1200
if ($UseBuiltCompilers.Contains (" Swift" )) {
1204
- $env: Path = " $ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $Arch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} "
1201
+ $env: Path = if ($UseEarlySwiftDriver ) {
1202
+ " $ ( Get-PinnedToolchainRuntime ) ;$ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $BuildArch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} "
1203
+ } else {
1204
+ " $ ( $BuildArch.SDKInstallRoot ) \usr\bin;$ ( Get-CMarkBinaryCache $BuildArch ) \src;$ ( $BuildArch.ToolchainInstallRoot ) \usr\bin;${env: Path} ;$ ( Get-PinnedToolchainRuntime ) "
1205
+ }
1205
1206
} elseif ($UsePinnedCompilers.Contains (" Swift" )) {
1206
1207
$env: Path = " $ ( Get-PinnedToolchainRuntime ) ;${env: Path} "
1207
1208
}
@@ -1459,6 +1460,7 @@ function Build-Compilers() {
1459
1460
SWIFT_BUILD_DYNAMIC_STDLIB = " YES" ;
1460
1461
SWIFT_BUILD_REMOTE_MIRROR = " YES" ;
1461
1462
SWIFT_NATIVE_SWIFT_TOOLS_PATH = " " ;
1463
+ SWIFT_EARLY_SWIFT_DRIVER_BUILD = " $ ( Get-HostProjectBinaryCache Driver) \bin" ;
1462
1464
}
1463
1465
1464
1466
if ($TestClang ) { $Targets += @ (" check-clang" ) }
@@ -1473,6 +1475,7 @@ function Build-Compilers() {
1473
1475
SWIFT_BUILD_DYNAMIC_STDLIB = " NO" ;
1474
1476
SWIFT_BUILD_REMOTE_MIRROR = " NO" ;
1475
1477
SWIFT_NATIVE_SWIFT_TOOLS_PATH = $BuildTools ;
1478
+ SWIFT_EARLY_SWIFT_DRIVER_BUILD = " $ ( Get-BuildProjectBinaryCache Driver) \$ ( $BuildArch.LLVMTarget ) \release" ;
1476
1479
}
1477
1480
}
1478
1481
@@ -1497,6 +1500,7 @@ function Build-Compilers() {
1497
1500
- UsePinnedCompilers Swift `
1498
1501
- BuildTargets $Targets `
1499
1502
- CacheScript $SourceCache \swift\cmake\caches\Windows- $ ($Arch.LLVMName ).cmake `
1503
+ - UseEarlySwiftDriver (-not ($TestClang -or $TestLLD -or $TestLLDB -or $TestLLVM -or $TestSwift )) `
1500
1504
- Defines ($TestingDefines + @ {
1501
1505
CLANG_TABLEGEN = (Join-Path - Path $BuildTools - ChildPath " clang-tblgen.exe" );
1502
1506
CLANG_TIDY_CONFUSABLE_CHARS_GEN = (Join-Path - Path $BuildTools - ChildPath " clang-tidy-confusable-chars-gen.exe" );
@@ -1865,6 +1869,7 @@ function Build-Dispatch([Platform]$Platform, $Arch, [switch]$Test = $false) {
1865
1869
- Arch $Arch `
1866
1870
- Platform $Platform `
1867
1871
- UseBuiltCompilers C, CXX, Swift `
1872
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
1868
1873
- Defines @ {
1869
1874
ENABLE_SWIFT = " YES" ;
1870
1875
}
@@ -1907,28 +1912,17 @@ function Build-Foundation([Platform]$Platform, $Arch, [switch]$Test = $false) {
1907
1912
$ShortArch = $Arch.LLVMName
1908
1913
1909
1914
Isolate- EnvVars {
1910
- $SDKRoot = if ($Platform -eq " Windows" ) {
1911
- " "
1912
- } else {
1913
- (Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot
1914
- }
1915
-
1916
- $SDKRoot = if ($Platform -eq " Windows" ) {
1917
- " "
1918
- } else {
1919
- (Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot
1920
- }
1921
-
1922
1915
Build-CMakeProject `
1923
1916
- Src $SourceCache \swift- corelibs- foundation `
1924
1917
- Bin $FoundationBinaryCache `
1925
1918
- InstallTo " $ ( $Arch.SDKInstallRoot ) \usr" `
1926
1919
- Arch $Arch `
1927
1920
- Platform $Platform `
1928
1921
- UseBuiltCompilers ASM, C, CXX, Swift `
1929
- - SwiftSDK: $SDKRoot `
1922
+ - SwiftSDK $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot) `
1930
1923
- Defines (@ {
1931
1924
ENABLE_TESTING = " NO" ;
1925
+ CMAKE_Swift_COMPILER_USE_OLD_DRIVER = " YES" ;
1932
1926
FOUNDATION_BUILD_TOOLS = if ($Platform -eq " Windows" ) { " YES" } else { " NO" };
1933
1927
CMAKE_FIND_PACKAGE_PREFER_CONFIG = " YES" ;
1934
1928
CURL_DIR = " $LibraryRoot \curl-8.9.1\usr\lib\$Platform \$ShortArch \cmake\CURL" ;
@@ -1967,7 +1961,7 @@ function Build-FoundationMacros() {
1967
1961
Get-HostProjectBinaryCache FoundationMacros
1968
1962
}
1969
1963
1970
- $SwiftSDK = $null
1964
+ $SwiftSDK = $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot)
1971
1965
if ($Build ) {
1972
1966
$SwiftSDK = $BuildArch.SDKInstallRoot
1973
1967
}
@@ -1992,7 +1986,7 @@ function Build-FoundationMacros() {
1992
1986
- Arch $Arch `
1993
1987
- Platform $Platform `
1994
1988
- UseBuiltCompilers Swift `
1995
- - SwiftSDK: $SwiftSDK `
1989
+ - SwiftSDK $SwiftSDK `
1996
1990
- BuildTargets:$Targets `
1997
1991
- Defines @ {
1998
1992
SwiftSyntax_DIR = $SwiftSyntaxCMakeModules ;
@@ -2029,6 +2023,7 @@ function Build-XCTest([Platform]$Platform, $Arch, [switch]$Test = $false) {
2029
2023
- Arch $Arch `
2030
2024
- Platform $Platform `
2031
2025
- UseBuiltCompilers Swift `
2026
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
2032
2027
- BuildTargets $Targets `
2033
2028
- Defines (@ {
2034
2029
CMAKE_BUILD_WITH_INSTALL_RPATH = " YES" ;
@@ -2058,6 +2053,7 @@ function Build-Testing([Platform]$Platform, $Arch, [switch]$Test = $false) {
2058
2053
- Arch $Arch `
2059
2054
- Platform $Platform `
2060
2055
- UseBuiltCompilers C, CXX, Swift `
2056
+ - SwiftSDK $ ((Get-Variable " ${Platform} $ ( $Arch.ShortName ) " - ValueOnly).SDKInstallRoot) `
2061
2057
- Defines (@ {
2062
2058
BUILD_SHARED_LIBS = " YES" ;
2063
2059
CMAKE_BUILD_WITH_INSTALL_RPATH = " YES" ;
@@ -2283,29 +2279,78 @@ function Build-ArgumentParser($Arch) {
2283
2279
}
2284
2280
}
2285
2281
2286
- function Build-Driver ($Arch ) {
2287
- Build-CMakeProject `
2288
- - Src $SourceCache \swift- driver `
2289
- - Bin (Get-HostProjectBinaryCache Driver) `
2290
- - InstallTo " $ ( $Arch.ToolchainInstallRoot ) \usr" `
2291
- - Arch $Arch `
2292
- - Platform Windows `
2293
- - UseBuiltCompilers C, CXX, Swift `
2294
- - SwiftSDK (Get-HostSwiftSDK ) `
2295
- - Defines @ {
2296
- BUILD_SHARED_LIBS = " YES" ;
2297
- SwiftSystem_DIR = (Get-HostProjectCMakeModules System);
2298
- TSC_DIR = (Get-HostProjectCMakeModules ToolsSupportCore);
2299
- LLBuild_DIR = (Get-HostProjectCMakeModules LLBuild);
2300
- Yams_DIR = (Get-HostProjectCMakeModules Yams);
2301
- ArgumentParser_DIR = (Get-HostProjectCMakeModules ArgumentParser);
2302
- SQLite3_INCLUDE_DIR = " $LibraryRoot \sqlite-3.46.0\usr\include" ;
2303
- SQLite3_LIBRARY = " $LibraryRoot \sqlite-3.46.0\usr\lib\SQLite3.lib" ;
2304
- SWIFT_DRIVER_BUILD_TOOLS = " YES" ;
2305
- LLVM_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\llvm" ;
2306
- Clang_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\clang" ;
2307
- Swift_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \tools\swift\lib\cmake\swift" ;
2282
+ function Build-Driver () {
2283
+ [CmdletBinding (PositionalBinding = $false )]
2284
+ param
2285
+ (
2286
+ [Parameter (Position = 0 , Mandatory = $true )]
2287
+ [hashtable ]$Arch ,
2288
+ [switch ] $Build = $false
2289
+ )
2290
+
2291
+ if ($Build ) {
2292
+ $Stopwatch = [Diagnostics.Stopwatch ]::StartNew()
2293
+
2294
+ Isolate- EnvVars {
2295
+ $env: SWIFTCI_USE_LOCAL_DEPS = 1
2296
+ $env: SDKROOT = (Get-PinnedToolchainSDK )
2297
+ $env: Path = " $ ( Get-PinnedToolchainRuntime ) ;$ ( Get-PinnedToolchainTool ) ;${env: Path} "
2298
+
2299
+ $src = " $SourceCache \swift-driver"
2300
+ $dst = (Get-BuildProjectBinaryCache Driver)
2301
+
2302
+ if ($ToBatch ) {
2303
+ Write-Output " "
2304
+ Write-Output " echo Building '$src ' to '$dst ' for arch '$ ( $Arch.LLVMName ) '..."
2305
+ } else {
2306
+ Write-Host - ForegroundColor Cyan " [$ ( [DateTime ]::Now.ToString(" yyyy-MM-dd HH:mm:ss" )) ] Building '$src ' to '$dst ' for arch '$ ( $Arch.LLVMName ) '..."
2307
+ }
2308
+
2309
+ Invoke-Program `
2310
+ " $ ( Get-PinnedToolchainTool ) \swift.exe" build `
2311
+ - c release `
2312
+ -- scratch- path $dst `
2313
+ -- package- path $src `
2314
+ - Xlinker " $ ( Get-PinnedToolchainSDK ) \usr\lib\swift\windows\$ ( $BuildArch.LLVMName ) \swiftCore.lib"
2315
+
2316
+ if (-not $ToBatch ) {
2317
+ 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 ) "
2318
+ Write-Host " "
2319
+ }
2320
+
2321
+ if ($Summary ) {
2322
+ $TimingData.Add ([PSCustomObject ]@ {
2323
+ Arch = $BuildArch.LLVMName
2324
+ Checkout = $src.Replace ($SourceCache , ' ' )
2325
+ Platform = " Windows"
2326
+ " Elapsed Time" = $Stopwatch.Elapsed.ToString ()
2327
+ })
2328
+ }
2308
2329
}
2330
+ } else {
2331
+ Build-CMakeProject `
2332
+ - Src $SourceCache \swift- driver `
2333
+ - Bin (Get-HostProjectBinaryCache Driver) `
2334
+ - InstallTo " $ ( $Arch.ToolchainInstallRoot ) \usr" `
2335
+ - Arch $Arch `
2336
+ - Platform Windows `
2337
+ - UseBuiltCompilers C, CXX, Swift `
2338
+ - SwiftSDK (Get-HostSwiftSDK ) `
2339
+ - Defines @ {
2340
+ BUILD_SHARED_LIBS = " YES" ;
2341
+ SwiftSystem_DIR = (Get-HostProjectCMakeModules System);
2342
+ TSC_DIR = (Get-HostProjectCMakeModules ToolsSupportCore);
2343
+ LLBuild_DIR = (Get-HostProjectCMakeModules LLBuild);
2344
+ Yams_DIR = (Get-HostProjectCMakeModules Yams);
2345
+ ArgumentParser_DIR = (Get-HostProjectCMakeModules ArgumentParser);
2346
+ SQLite3_INCLUDE_DIR = " $LibraryRoot \sqlite-3.46.0\usr\include" ;
2347
+ SQLite3_LIBRARY = " $LibraryRoot \sqlite-3.46.0\usr\lib\SQLite3.lib" ;
2348
+ SWIFT_DRIVER_BUILD_TOOLS = " YES" ;
2349
+ LLVM_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\llvm" ;
2350
+ Clang_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \lib\cmake\clang" ;
2351
+ Swift_DIR = " $ ( Get-HostProjectBinaryCache Compilers) \tools\swift\lib\cmake\swift" ;
2352
+ }
2353
+ }
2309
2354
}
2310
2355
2311
2356
function Build-Crypto ($Arch ) {
@@ -2603,7 +2648,7 @@ function Build-TestingMacros() {
2603
2648
Get-HostProjectBinaryCache TestingMacros
2604
2649
}
2605
2650
2606
- $SwiftSDK = $null
2651
+ $SwiftSDK = $ (( Get-Variable " ${Platform} $ ( $Arch .ShortName ) " - ValueOnly).SDKInstallRoot)
2607
2652
if ($Build ) {
2608
2653
$SwiftSDK = $BuildArch.SDKInstallRoot
2609
2654
}
@@ -2634,7 +2679,7 @@ function Build-TestingMacros() {
2634
2679
- Arch $Arch `
2635
2680
- Platform $Platform `
2636
2681
- UseBuiltCompilers Swift `
2637
- - SwiftSDK: $SwiftSDK `
2682
+ - SwiftSDK $SwiftSDK `
2638
2683
- BuildTargets:$Targets `
2639
2684
- Defines @ {
2640
2685
SwiftSyntax_DIR = $SwiftSyntaxCMakeModules ;
@@ -2670,7 +2715,6 @@ function Build-Inspect() {
2670
2715
- InstallTo " $ ( $HostArch.ToolchainInstallRoot ) \usr" `
2671
2716
- Arch $HostArch `
2672
2717
- UseBuiltCompilers Swift `
2673
- - UseSwiftSwiftDriver `
2674
2718
- SwiftSDK $SDKRoot `
2675
2719
- Defines @ {
2676
2720
CMAKE_Swift_FLAGS = @ (" -Xcc" , " -I$SDKRoot \usr\include\swift\SwiftRemoteMirror" );
@@ -2774,6 +2818,7 @@ if (-not $SkipBuild) {
2774
2818
2775
2819
Invoke-BuildStep Build-CMark $BuildArch
2776
2820
Invoke-BuildStep Build-BuildTools $BuildArch
2821
+ Invoke-BuildStep Build-Driver - Build $BuildArch
2777
2822
if ($IsCrossCompiling ) {
2778
2823
Invoke-BuildStep Build-XML2 Windows $BuildArch
2779
2824
Invoke-BuildStep Build-Compilers - Build $BuildArch
0 commit comments