@@ -2017,8 +2017,9 @@ jobs:
2017
2017
cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
2018
2018
swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
2019
2019
os : Windows
2020
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}" -D CMAKE_STATIC_LIBRARY_PREFIX_Swift=lib'
2021
- extra_flags :
2020
+ exe_linker_flags : ${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}
2021
+ shared_linker_flags : ${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}
2022
+ extra_flags : ' -D CMAKE_STATIC_LIBRARY_PREFIX_Swift=lib'
2022
2023
2023
2024
- arch : arm64
2024
2025
cpu : ' aarch64'
@@ -2030,8 +2031,9 @@ jobs:
2030
2031
cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
2031
2032
swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
2032
2033
os : Windows
2033
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}" -D CMAKE_STATIC_LIBRARY_PREFIX_Swift=lib'
2034
- extra_flags :
2034
+ exe_linker_flags : ${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}
2035
+ shared_linker_flags : ${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}
2036
+ extra_flags : ' -D CMAKE_STATIC_LIBRARY_PREFIX_Swift=lib'
2035
2037
2036
2038
- arch : x86
2037
2039
cpu : ' i686'
@@ -2043,8 +2045,9 @@ jobs:
2043
2045
cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
2044
2046
swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
2045
2047
os : Windows
2046
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}" -D CMAKE_STATIC_LIBRARY_PREFIX_Swift=lib'
2047
- extra_flags :
2048
+ exe_linker_flags : ${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}
2049
+ shared_linker_flags : ${{ inputs.WINDOWS_CMAKE_SHARED_LINKER_FLAGS }}
2050
+ extra_flags : ' -D CMAKE_STATIC_LIBRARY_PREFIX_Swift=lib'
2048
2051
2049
2052
- arch : arm64
2050
2053
cpu : ' aarch64'
@@ -2056,7 +2059,8 @@ jobs:
2056
2059
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2057
2060
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
2058
2061
os : Android
2059
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2062
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2063
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2060
2064
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
2061
2065
2062
2066
- arch : armv7
@@ -2069,7 +2073,8 @@ jobs:
2069
2073
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2070
2074
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
2071
2075
os : Android
2072
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2076
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2077
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2073
2078
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
2074
2079
2075
2080
- arch : i686
@@ -2082,7 +2087,8 @@ jobs:
2082
2087
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2083
2088
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
2084
2089
os : Android
2085
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2090
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2091
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2086
2092
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
2087
2093
2088
2094
- arch : x86_64
@@ -2095,7 +2101,8 @@ jobs:
2095
2101
cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
2096
2102
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
2097
2103
os : Android
2098
- linker_flags : ' -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}" -D CMAKE_SHARED_LINKER_FLAGS="${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}"'
2104
+ exe_linker_flags : ${{ inputs.ANDROID_CMAKE_EXE_LINKER_FLAGS }}
2105
+ shared_linker_flags : ${{ inputs.ANDROID_CMAKE_SHARED_LINKER_FLAGS }}
2099
2106
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
2100
2107
2101
2108
name : ${{ matrix.os }} ${{ matrix.arch }} SDK
@@ -2197,11 +2204,6 @@ jobs:
2197
2204
components : ' Microsoft.VisualStudio.Component.VC.Tools.x86.x64;Microsoft.VisualStudio.Component.VC.Tools.ARM64'
2198
2205
arch : ${{ matrix.arch }}
2199
2206
2200
- # FIXME(compnerd): workaround CMake 3.29-3.30 issue
2201
- - uses : lukka/get-cmake@aa1df13cce8c30d2cb58efa871271c5a764623f8 # main
2202
- with :
2203
- cmakeVersion : 3.28.6
2204
-
2205
2207
- uses : nttld/setup-ndk@v1
2206
2208
if : matrix.os == 'Android' && inputs.build_android
2207
2209
id : setup-ndk
@@ -2250,7 +2252,8 @@ jobs:
2250
2252
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2251
2253
-D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
2252
2254
-D MSVC_CXX_ARCHITECTURE_ID=${{ matrix.arch }} `
2253
- ${{ matrix.linker_flags }} `
2255
+ -D CMAKE_EXE_LINKER_FLAGS="${{ matrix.exe_linker_flags }}" `
2256
+ -D CMAKE_SHARED_LINKER_FLAGS="${{ matrix.shared_linker_flags }}" `
2254
2257
${{ matrix.extra_flags }} `
2255
2258
$CMAKE_NDK_FLAG `
2256
2259
$SWIFT_NDK_FLAG `
@@ -2270,6 +2273,13 @@ jobs:
2270
2273
$CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr/bin/clang-cl.exe
2271
2274
$SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr/bin/swiftc.exe
2272
2275
2276
+ # Worarkound CMake 3.30 issue where CMAKE_[*]_FLAGS are passed as-is to the linker driver.
2277
+ # TODO: Once we have CMake 4.0, set CMP0181 to NEW and pass these as "LINKER:" flags.
2278
+ $CMAKE_SHARED_LINKER_FLAGS =
2279
+ ("${{ matrix.shared_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2280
+ $CMAKE_EXE_LINKER_FLAGS =
2281
+ ("${{ matrix.exe_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2282
+
2273
2283
if ("${{ matrix.os }}" -eq "Android") {
2274
2284
$NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
2275
2285
# Since win/arm64 doesn't have one, this logic is necessary because
@@ -2307,7 +2317,6 @@ jobs:
2307
2317
-D CMAKE_CXX_COMPILER=${{ matrix.cxx }} `
2308
2318
-D CMAKE_CXX_COMPILER_TARGET=${{ matrix.triple }} `
2309
2319
-D CMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" `
2310
- -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" `
2311
2320
-D CMAKE_FIND_PACKAGE_PREFER_CONFIG=YES `
2312
2321
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/${{ matrix.os }}.platform/Developer/SDKs/${{ matrix.os }}.sdk/usr `
2313
2322
-D CMAKE_Swift_COMPILER=${SWIFTC} `
@@ -2318,7 +2327,10 @@ jobs:
2318
2327
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2319
2328
-D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
2320
2329
-D MSVC_CXX_ARCHITECTURE_ID=${{ matrix.arch }} `
2321
- ${{ matrix.linker_flags }} `
2330
+ -D CMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" `
2331
+ -D CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" `
2332
+ -D CMAKE_EXE_LINKER_FLAGS_RELEASE="" `
2333
+ -D CMAKE_SHARED_LINKER_FLAGS_RELEASE="" `
2322
2334
${{ matrix.extra_flags }} `
2323
2335
$CMAKE_NDK_FLAG `
2324
2336
$SWIFT_NDK_FLAG `
@@ -2349,6 +2361,14 @@ jobs:
2349
2361
$CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr/bin/clang-cl.exe
2350
2362
$SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr/bin/swiftc.exe
2351
2363
2364
+ # Worarkound CMake 3.30 issue where CMAKE_[*]_FLAGS are passed as-is to the linker driver.
2365
+ # Pass these as "-Xlinker" flags to avoid the issue.
2366
+ # TODO: Once we use CMake 4.0, set CMP0181 to NEW and pass these as "LINKER:" flags.
2367
+ $CMAKE_SHARED_LINKER_FLAGS =
2368
+ ("${{ matrix.shared_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2369
+ $CMAKE_EXE_LINKER_FLAGS =
2370
+ ("${{ matrix.exe_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2371
+
2352
2372
if ("${{ matrix.os }}" -eq "Android") {
2353
2373
$NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
2354
2374
# Since win/arm64 doesn't have one, this logic is necessary because
@@ -2383,7 +2403,10 @@ jobs:
2383
2403
-D CMAKE_Swift_FLAGS_RELEASE="-O" `
2384
2404
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
2385
2405
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2386
- ${{ matrix.linker_flags }} `
2406
+ -D CMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" `
2407
+ -D CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" `
2408
+ -D CMAKE_EXE_LINKER_FLAGS_RELEASE="" `
2409
+ -D CMAKE_SHARED_LINKER_FLAGS_RELEASE="" `
2387
2410
${{ matrix.extra_flags }} `
2388
2411
$CMAKE_NDK_FLAG `
2389
2412
$SWIFT_NDK_FLAG `
@@ -2438,7 +2461,8 @@ jobs:
2438
2461
-D CMAKE_Swift_FLAGS_RELEASE="-O" `
2439
2462
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
2440
2463
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2441
- ${{ matrix.linker_flags }} `
2464
+ -D CMAKE_EXE_LINKER_FLAGS="${{ matrix.exe_linker_flags }}" `
2465
+ -D CMAKE_SHARED_LINKER_FLAGS="${{ matrix.shared_linker_flags }}" `
2442
2466
${{ matrix.extra_flags }} `
2443
2467
$CMAKE_NDK_FLAG `
2444
2468
$SWIFT_NDK_FLAG `
0 commit comments