@@ -2029,7 +2029,8 @@ jobs:
2029
2029
cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
2030
2030
swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
2031
2031
os : Windows
2032
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}"'
2032
+ exe_linker_flags : ${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}
2033
+ shared_linker_flags : ${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}
2033
2034
extra_flags :
2034
2035
2035
2036
- arch : arm64
@@ -2042,7 +2043,8 @@ jobs:
2042
2043
cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
2043
2044
swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
2044
2045
os : Windows
2045
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}"'
2046
+ exe_linker_flags : ${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}
2047
+ shared_linker_flags : ${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}
2046
2048
extra_flags :
2047
2049
2048
2050
- arch : x86
@@ -2055,7 +2057,8 @@ jobs:
2055
2057
cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
2056
2058
swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
2057
2059
os : Windows
2058
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}"'
2060
+ exe_linker_flags : ${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}
2061
+ shared_linker_flags : ${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}
2059
2062
extra_flags :
2060
2063
2061
2064
- arch : arm64
@@ -2068,7 +2071,8 @@ jobs:
2068
2071
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2069
2072
swiftflags : -sdk $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -target -Xclang-linker aarch64-unknown-linux-android${{ inputs.ANDROID_API_LEVEL }} -Xclang-linker --sysroot -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -resource-dir -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/17 -L ${{ github.workspace }}/BinaryCache/swift/lib/swift/android -g
2070
2073
os : Android
2071
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2074
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2075
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2072
2076
extra_flags : -DSWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT=YES -DLLVM_ENABLE_LIBCXX=YES -DSWIFT_USE_LINKER=lld -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a
2073
2077
2074
2078
- arch : armv7
@@ -2081,7 +2085,8 @@ jobs:
2081
2085
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2082
2086
swiftflags : -sdk $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -target -Xclang-linker armv7a-unknown-linux-androideabi${{ inputs.ANDROID_API_LEVEL }} -Xclang-linker --sysroot -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -resource-dir -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/17 -L ${{ github.workspace }}/BinaryCache/swift/lib/swift/android -g
2083
2087
os : Android
2084
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2088
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2089
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2085
2090
extra_flags : -DSWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT=YES -DLLVM_ENABLE_LIBCXX=YES -DSWIFT_USE_LINKER=lld -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=armeabi-v7a
2086
2091
2087
2092
- arch : i686
@@ -2094,7 +2099,8 @@ jobs:
2094
2099
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2095
2100
swiftflags : -sdk $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -target -Xclang-linker i686-unknown-linux-android${{ inputs.ANDROID_API_LEVEL }} -Xclang-linker --sysroot -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -resource-dir -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/17 -L ${{ github.workspace }}/BinaryCache/swift/lib/swift/android -g
2096
2101
os : Android
2097
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2102
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2103
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2098
2104
extra_flags : -DSWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT=YES -DLLVM_ENABLE_LIBCXX=YES -DSWIFT_USE_LINKER=lld -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=x86
2099
2105
2100
2106
- arch : x86_64
@@ -2107,7 +2113,8 @@ jobs:
2107
2113
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2108
2114
swiftflags : -sdk $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -target -Xclang-linker x86_64-unknown-linux-android${{ inputs.ANDROID_API_LEVEL }} -Xclang-linker --sysroot -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/sysroot -Xclang-linker -resource-dir -Xclang-linker $NDKPATH/toolchains/llvm/prebuilt/windows-x86_64/lib/clang/17 -L ${{ github.workspace }}/BinaryCache/swift/lib/swift/android -g
2109
2115
os : Android
2110
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2116
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2117
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2111
2118
extra_flags : -DSWIFT_BUILD_CLANG_OVERLAYS_SKIP_BUILTIN_FLOAT=YES -DLLVM_ENABLE_LIBCXX=YES -DSWIFT_USE_LINKER=lld -DCMAKE_ANDROID_API=${{ inputs.ANDROID_API_LEVEL }} -DCMAKE_ANDROID_ARCH_ABI=x86_64
2112
2119
2113
2120
name : ${{ matrix.os }} ${{ matrix.arch }} SDK
@@ -2209,11 +2216,6 @@ jobs:
2209
2216
components : ' Microsoft.VisualStudio.Component.VC.Tools.x86.x64;Microsoft.VisualStudio.Component.VC.Tools.ARM64'
2210
2217
arch : ${{ matrix.arch }}
2211
2218
2212
- # FIXME(compnerd): workaround CMake 3.29-3.30 issue
2213
- - uses : lukka/get-cmake@aa1df13cce8c30d2cb58efa871271c5a764623f8 # main
2214
- with :
2215
- cmakeVersion : 3.28.6
2216
-
2217
2219
- uses : nttld/setup-ndk@v1
2218
2220
if : matrix.os == 'Android' && inputs.build_android
2219
2221
id : setup-ndk
@@ -2262,7 +2264,8 @@ jobs:
2262
2264
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2263
2265
-D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
2264
2266
-D MSVC_CXX_ARCHITECTURE_ID=${{ matrix.arch }} `
2265
- ${{ matrix.linker_flags }} `
2267
+ -D CMAKE_EXE_LINKER_FLAGS="${{ matrix.exe_linker_flags }}" `
2268
+ -D CMAKE_SHARED_LINKER_FLAGS="${{ matrix.shared_linker_flags }}" `
2266
2269
${{ matrix.extra_flags }} `
2267
2270
$CMAKE_NDK_FLAG `
2268
2271
$SWIFT_NDK_FLAG `
@@ -2282,6 +2285,13 @@ jobs:
2282
2285
$CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
2283
2286
$SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
2284
2287
2288
+ # Worarkound CMake 3.30 issue where CMAKE_[*]_FLAGS are passed as-is to the linker driver.
2289
+ # TODO: Once we have CMake 4.0, set CMP0181 to NEW and pass these as "LINKER:" flags.
2290
+ $CMAKE_SHARED_LINKER_FLAGS =
2291
+ ("${{ matrix.shared_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2292
+ $CMAKE_EXE_LINKER_FLAGS =
2293
+ ("${{ matrix.exe_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2294
+
2285
2295
if ("${{ matrix.os }}" -eq "Android") {
2286
2296
$NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
2287
2297
# Since win/arm64 doesn't have one, this logic is necessary because
@@ -2319,7 +2329,6 @@ jobs:
2319
2329
-D CMAKE_CXX_COMPILER=${{ matrix.cxx }} `
2320
2330
-D CMAKE_CXX_COMPILER_TARGET=${{ matrix.triple }} `
2321
2331
-D CMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" `
2322
- -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" `
2323
2332
-D CMAKE_FIND_PACKAGE_PREFER_CONFIG=YES `
2324
2333
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/${{ matrix.os }}.platform/Developer/SDKs/${{ matrix.os }}.sdk/usr `
2325
2334
-D CMAKE_Swift_COMPILER=${SWIFTC} `
@@ -2330,8 +2339,10 @@ jobs:
2330
2339
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2331
2340
-D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
2332
2341
-D MSVC_CXX_ARCHITECTURE_ID=${{ matrix.arch }} `
2333
- ${{ matrix.linker_flags }} `
2334
- ${{ matrix.extra_flags }} `
2342
+ -D CMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" `
2343
+ -D CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" `
2344
+ -D CMAKE_EXE_LINKER_FLAGS_RELEASE="" `
2345
+ -D CMAKE_SHARED_LINKER_FLAGS_RELEASE="" `
2335
2346
$CMAKE_NDK_FLAG `
2336
2347
$SWIFT_NDK_FLAG `
2337
2348
-G Ninja `
@@ -2361,6 +2372,14 @@ jobs:
2361
2372
$CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
2362
2373
$SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
2363
2374
2375
+ # Worarkound CMake 3.30 issue where CMAKE_[*]_FLAGS are passed as-is to the linker driver.
2376
+ # Pass these as "-Xlinker" flags to avoid the issue.
2377
+ # TODO: Once we use CMake 4.0, set CMP0181 to NEW and pass these as "LINKER:" flags.
2378
+ $CMAKE_SHARED_LINKER_FLAGS =
2379
+ ("${{ matrix.shared_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2380
+ $CMAKE_EXE_LINKER_FLAGS =
2381
+ ("${{ matrix.exe_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2382
+
2364
2383
if ("${{ matrix.os }}" -eq "Android") {
2365
2384
$NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
2366
2385
# Since win/arm64 doesn't have one, this logic is necessary because
@@ -2395,8 +2414,10 @@ jobs:
2395
2414
-D CMAKE_Swift_FLAGS_RELEASE="-O" `
2396
2415
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
2397
2416
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2398
- ${{ matrix.linker_flags }} `
2399
- ${{ matrix.extra_flags }} `
2417
+ -D CMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" `
2418
+ -D CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" `
2419
+ -D CMAKE_EXE_LINKER_FLAGS_RELEASE="" `
2420
+ -D CMAKE_SHARED_LINKER_FLAGS_RELEASE="" `
2400
2421
$CMAKE_NDK_FLAG `
2401
2422
$SWIFT_NDK_FLAG `
2402
2423
-G Ninja `
@@ -2450,7 +2471,8 @@ jobs:
2450
2471
-D CMAKE_Swift_FLAGS_RELEASE="-O" `
2451
2472
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
2452
2473
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2453
- ${{ matrix.linker_flags }} `
2474
+ -D CMAKE_EXE_LINKER_FLAGS="${{ matrix.exe_linker_flags }}" `
2475
+ -D CMAKE_SHARED_LINKER_FLAGS="${{ matrix.shared_linker_flags }}" `
2454
2476
${{ matrix.extra_flags }} `
2455
2477
$CMAKE_NDK_FLAG `
2456
2478
$SWIFT_NDK_FLAG `
0 commit comments