@@ -2121,12 +2121,11 @@ jobs:
2121
2121
symbolsFolder : ${{ github.workspace }}/BinaryCache
2122
2122
searchPattern : ' **/*.exe'
2123
2123
2124
+
2124
2125
debugging_tools :
2125
2126
name : Debugging Tools
2126
2127
needs : [context, compilers, devtools, sdk]
2127
2128
runs-on : ${{ needs.context.outputs.windows_build_runner }}
2128
- env :
2129
- TOOLCHAIN_PATH : ${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin
2130
2129
2131
2130
strategy :
2132
2131
fail-fast : false
@@ -2135,42 +2134,85 @@ jobs:
2135
2134
- arch : amd64
2136
2135
cpu : x86_64
2137
2136
triple : x86_64-unknown-windows-msvc
2138
-
2139
- # TODO(thebrowsercompany/swift-build#125): Fix the layout of SDK files so we can cross-compile to arm64
2140
- # - arch: arm64
2141
- # cpu: aarch64
2142
- # triple: aarch64-unknown-windows-msvc
2137
+ - arch : arm64
2138
+ cpu : aarch64
2139
+ triple : aarch64-unknown-windows-msvc
2143
2140
2144
2141
steps :
2145
- - name : Download compilers
2142
+ - name : Download build compilers
2146
2143
uses : actions/download-artifact@v4
2147
2144
with :
2148
2145
name : compilers-amd64
2149
- path : ${{ github.workspace }}/BuildRoot/Library
2146
+ path : ${{ github.workspace }}/BuildRoot/
2150
2147
2151
- - name : Download devtools
2148
+ - name : Download build devtools
2152
2149
uses : actions/download-artifact@v4
2153
2150
with :
2154
2151
name : devtools-amd64
2155
- path : ${{ github.workspace }}/BuildRoot/Library
2152
+ path : ${{ github.workspace }}/BuildRoot/
2156
2153
2157
- - name : Download cmark-gfm-amd64
2154
+ # We're using the runtime libraries from this one.
2155
+ - name : Download Windows SDK (AMD64)
2158
2156
uses : actions/download-artifact@v4
2159
2157
with :
2160
- name : cmark-gfm -amd64-0.29.0.gfm.13
2161
- path : ${{ github.workspace }}/BuildRoot/Library/cmark-gfm-0.29.0.gfm.13/usr
2158
+ name : windows-sdk -amd64
2159
+ path : ${{ github.workspace }}/BinaryCache/
2162
2160
2163
- - name : Download amd64 Windows Runtime
2161
+ - name : Download Windows SDK (AMD64)
2164
2162
uses : actions/download-artifact@v4
2165
2163
with :
2166
2164
name : windows-sdk-amd64
2167
- path : ${{ github.workspace }}/BinaryCache
2165
+ path : ${{ github.workspace }}/BuildRoot/
2166
+
2167
+ - name : Update environment variables
2168
+ run : |
2169
+ $SDKRoot = cygpath -w "${{ github.workspace }}/BuildRoot/Developer/SDKs/Windows.sdk"
2170
+ $ToolchainPath = cygpath -w "${{ github.workspace }}/BuildRoot/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin"
2171
+ $RTLPath = cygpath -w "${{ github.workspace }}/BinaryCache/Developer/SDKs/Windows.sdk/usr/bin"
2172
+
2173
+ echo "SDKROOT=${SDKRoot}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
2174
+ echo "TOOLCHAIN_PATH=${ToolchainPath}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
2175
+ echo "AR=${ToolchainPath}\llvm-ar.exe" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
2176
+ echo "${ToolchainPath}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
2177
+ echo "${RTLPath}" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
2178
+
2179
+ - name : Patch the SDK to workaround https://github.com/thebrowsercompany/swift-build#50
2180
+ run : |
2181
+ mv ${{ env.SDKROOT }}/usr/lib/swift/dispatch ${{ env.SDKROOT }}/usr/include/
2182
+ mv ${{ env.SDKROOT }}/usr/lib/swift/os ${{ env.SDKROOT }}/usr/include/
2183
+ mv ${{ env.SDKROOT }}/usr/lib/swift/Block ${{ env.SDKROOT }}/usr/include/
2184
+
2185
+ mv ${{ env.SDKROOT }}/usr/lib/swift/windows/BlocksRuntime.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/x86_64/
2186
+ mv ${{ env.SDKROOT }}/usr/lib/swift/windows/dispatch.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/x86_64/
2187
+ mv ${{ env.SDKROOT }}/usr/lib/swift/windows/swiftDispatch.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/x86_64/
2188
+ mv ${{ env.SDKROOT }}/usr/lib/swift/windows/Foundation.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/x86_64/
2189
+ mv ${{ env.SDKROOT }}/usr/lib/swift/windows/FoundationXML.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/x86_64/
2190
+ mv ${{ env.SDKROOT }}/usr/lib/swift/windows/FoundationNetworking.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/x86_64/
2168
2191
2169
2192
- name : Download ${{ matrix.arch }} Windows SDK
2193
+ # Only necessary when cross-compiling
2194
+ if : ${{ matrix.arch != 'amd64' }}
2170
2195
uses : actions/download-artifact@v4
2171
2196
with :
2172
2197
name : windows-sdk-${{ matrix.arch }}
2173
- path : ${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/Windows.platform
2198
+ path : ${{ github.workspace }}/BuildRoot/
2199
+
2200
+ - name : Patch the SDK to workaround https://github.com/thebrowsercompany/swift-build#50
2201
+ # Only necessary when cross-compiling
2202
+ if : ${{ matrix.arch != 'amd64' }}
2203
+ run : |
2204
+ # We already copied these above.
2205
+ # Remove them to prevent 'module defined more than once' errors.
2206
+ rm -Force -Recurse ${{ env.SDKROOT }}/usr/lib/swift/dispatch
2207
+ rm -Force -Recurse ${{ env.SDKROOT }}/usr/lib/swift/os
2208
+ rm -Force -Recurse ${{ env.SDKROOT }}/usr/lib/swift/Block
2209
+
2210
+ mv -Force ${{ env.SDKROOT }}/usr/lib/swift/windows/BlocksRuntime.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/${{ matrix.cpu }}/
2211
+ mv -Force ${{ env.SDKROOT }}/usr/lib/swift/windows/dispatch.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/${{ matrix.cpu }}/
2212
+ mv -Force ${{ env.SDKROOT }}/usr/lib/swift/windows/swiftDispatch.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/${{ matrix.cpu }}/
2213
+ mv -Force ${{ env.SDKROOT }}/usr/lib/swift/windows/Foundation.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/${{ matrix.cpu }}/
2214
+ mv -Force ${{ env.SDKROOT }}/usr/lib/swift/windows/FoundationXML.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/${{ matrix.cpu }}/
2215
+ mv -Force ${{ env.SDKROOT }}/usr/lib/swift/windows/FoundationNetworking.lib ${{ env.SDKROOT }}/usr/lib/swift/windows/${{ matrix.cpu }}/
2174
2216
2175
2217
- name : Checkout apple/swift
2176
2218
uses : actions/checkout@v4
@@ -2180,49 +2222,32 @@ jobs:
2180
2222
path : ${{ github.workspace }}/SourceCache/swift
2181
2223
show-progress : false
2182
2224
2225
+ # Note: We didn't need to explicitly download cmark-gfm above because it's packaged inside
2226
+ # compilers-${{ matrix.arch }}.
2183
2227
- name : Setup cmark-gfm
2184
- run : Copy-Item ${{ github.workspace }}/BuildRoot/Library/cmark-gfm-0.29.0.gfm.13/usr/bin/*.dll ${env:TOOLCHAIN_PATH}
2185
-
2186
- - name : Add runtime libraries to path
2187
- run : |
2188
- $RTLPath = cygpath -w ${{ github.workspace }}/BinaryCache/Developer/SDKs/Windows.sdk/usr/bin
2189
- echo ${RTLPath} | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
2190
-
2191
- - name : Add Toolchain to path
2192
- run : |
2193
- echo ${env:TOOLCHAIN_PATH} | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append
2194
-
2195
- - uses : compnerd/gha-setup-vsdevenv@main
2196
- with :
2197
- host_arch : amd64
2198
- components : ' Microsoft.VisualStudio.Component.VC.Tools.x86.x64;Microsoft.VisualStudio.Component.VC.Tools.ARM64'
2199
- arch : ${{ matrix.arch }}
2200
-
2201
- # TODO(thebrowsercompany/swift-build#50): Workaround a file layout bug in the Windows SDK.
2202
- - name : Patch SDK file layout
2203
- run : |
2204
- $env:SDKROOT="${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk"
2205
- mv ${env:SDKROOT}/usr/lib/swift/dispatch ${env:SDKROOT}/usr/include/
2206
- mv ${env:SDKROOT}/usr/lib/swift/os ${env:SDKROOT}/usr/include/
2207
- mv ${env:SDKROOT}/usr/lib/swift/Block ${env:SDKROOT}/usr/include/
2208
- mv ${env:SDKROOT}/usr/lib/swift/windows/BlocksRuntime.lib ${env:SDKROOT}/usr/lib/swift/windows/${{ matrix.cpu }}/
2209
- mv ${env:SDKROOT}/usr/lib/swift/windows/dispatch.lib ${env:SDKROOT}/usr/lib/swift/windows/${{ matrix.cpu }}/
2210
- mv ${env:SDKROOT}/usr/lib/swift/windows/swiftDispatch.lib ${env:SDKROOT}/usr/lib/swift/windows/${{ matrix.cpu }}/
2211
- mv ${env:SDKROOT}/usr/lib/swift/windows/Foundation.lib ${env:SDKROOT}/usr/lib/swift/windows/${{ matrix.cpu }}/
2212
- mv ${env:SDKROOT}/usr/lib/swift/windows/FoundationXML.lib ${env:SDKROOT}/usr/lib/swift/windows/${{ matrix.cpu }}/
2213
- mv ${env:SDKROOT}/usr/lib/swift/windows/FoundationNetworking.lib ${env:SDKROOT}/usr/lib/swift/windows/${{ matrix.cpu }}/
2228
+ run : Copy-Item ${{ github.workspace }}/BuildRoot/cmark-gfm-0.29.0.gfm.13/usr/bin/*.dll ${{ env.TOOLCHAIN_PATH }}
2214
2229
2215
2230
- name : Build swift-inspect
2231
+ id : swift_inspect
2232
+ shell : cmd
2216
2233
run : |
2217
- $env:SDKROOT="${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/Windows.platform/Developer/SDKs/Windows.sdk"
2218
- # TODO(kendal): Figure out why Powershell won't execute this command when it's split into multiple lines.
2219
- swift build --triple=${{ matrix.triple }} --scratch-path="${{ github.workspace }}/BinaryCache/${{ matrix.arch }}/swift-inspect" --sdk="${env:SDKROOT}" --package-path="${{ github.workspace }}/SourceCache/swift/tools/swift-inspect" -c="release" -Xbuild-tools-swiftc="-I${env:SDKROOT}/usr/lib/swift" -Xbuild-tools-swiftc="-L${env:SDKROOT}/usr/lib/swift/windows" -Xcc="-I${env:SDKROOT}/usr/lib/swift" -Xlinker="-L${env:SDKROOT}/usr/lib/swift/windows" -debug-info-format="none" -Xcc="-I${env:SDKROOT}/usr/include/swift/SwiftRemoteMirror" -Xlinker="${env:SDKROOT}/usr/lib/swift/windows/${{ matrix.cpu }}/swiftRemoteMirror.lib"
2234
+ swift build ^
2235
+ --triple=${{ matrix.triple }} ^
2236
+ --scratch-path="${{ github.workspace }}/BinaryCache/${{ matrix.arch }}/swift-inspect" ^
2237
+ --sdk="${{ env.SDKROOT }}" ^
2238
+ --package-path="${{ github.workspace }}/SourceCache/swift/tools/swift-inspect" ^
2239
+ -c="release" ^
2240
+ -Xbuild-tools-swiftc="-L${{ env.SDKROOT }}/usr/lib/swift/windows" ^
2241
+ -Xbuild-tools-swiftc="-I${{ env.SDKROOT }}/usr/lib/swift -use-ld=lld" ^
2242
+ -Xcc="-I${{ env.SDKROOT }}/usr/include/swift/SwiftRemoteMirror" ^
2243
+ -Xlinker="${{ env.SDKROOT }}/usr/lib/swift/windows/${{ matrix.cpu }}/swiftRemoteMirror.lib" ^
2244
+ -Xswiftc="-use-ld=lld"
2220
2245
2221
2246
- name : Copy swift-inspect executable
2222
- id : copy-swift-inspect-exe
2223
2247
run : |
2224
2248
New-Item -Path ${{ github.workspace }}/BuildRoot-DebuggingTools/swift-inspect -ItemType Directory -Force | Out-Null
2225
- Copy-Item ${{ github.workspace }}/BinaryCache/${{ matrix.arch }}/swift-inspect/${{ matrix.triple }}/release/swift-inspect.exe -Destination ${{ github.workspace }}/BuildRoot-DebuggingTools/swift-inspect
2249
+ $SwiftInspectPath="${{ github.workspace }}/BinaryCache/${{ matrix.arch }}/swift-inspect/${{ matrix.triple }}/release/swift-inspect.exe"
2250
+ Copy-Item ${SwiftInspectPath} -Destination "${{ github.workspace }}/BuildRoot-DebuggingTools/swift-inspect/"
2226
2251
2227
2252
- uses : actions/upload-artifact@v4
2228
2253
with :
0 commit comments