@@ -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
@@ -2262,7 +2269,8 @@ jobs:
2262
2269
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2263
2270
-D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
2264
2271
-D MSVC_CXX_ARCHITECTURE_ID=${{ matrix.arch }} `
2265
- ${{ matrix.linker_flags }} `
2272
+ -D CMAKE_EXE_LINKER_FLAGS="${{ matrix.exe_linker_flags }}" `
2273
+ -D CMAKE_SHARED_LINKER_FLAGS="${{ matrix.shared_linker_flags }}" `
2266
2274
${{ matrix.extra_flags }} `
2267
2275
$CMAKE_NDK_FLAG `
2268
2276
$SWIFT_NDK_FLAG `
@@ -2282,6 +2290,13 @@ jobs:
2282
2290
$CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
2283
2291
$SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
2284
2292
2293
+ # Worarkound CMake 3.30 issue where CMAKE_[*]_FLAGS are passed as-is to the linker driver.
2294
+ # TODO: Once we have CMake 4.0, set CMP0181 to NEW and pass these as "LINKER:" flags.
2295
+ $CMAKE_SHARED_LINKER_FLAGS =
2296
+ ("${{ matrix.shared_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2297
+ $CMAKE_EXE_LINKER_FLAGS =
2298
+ ("${{ matrix.exe_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2299
+
2285
2300
if ("${{ matrix.os }}" -eq "Android") {
2286
2301
$NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
2287
2302
# Since win/arm64 doesn't have one, this logic is necessary because
@@ -2319,7 +2334,6 @@ jobs:
2319
2334
-D CMAKE_CXX_COMPILER=${{ matrix.cxx }} `
2320
2335
-D CMAKE_CXX_COMPILER_TARGET=${{ matrix.triple }} `
2321
2336
-D CMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" `
2322
- -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" `
2323
2337
-D CMAKE_FIND_PACKAGE_PREFER_CONFIG=YES `
2324
2338
-D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/${{ matrix.os }}.platform/Developer/SDKs/${{ matrix.os }}.sdk/usr `
2325
2339
-D CMAKE_Swift_COMPILER=${SWIFTC} `
@@ -2330,8 +2344,10 @@ jobs:
2330
2344
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2331
2345
-D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
2332
2346
-D MSVC_CXX_ARCHITECTURE_ID=${{ matrix.arch }} `
2333
- ${{ matrix.linker_flags }} `
2334
- ${{ matrix.extra_flags }} `
2347
+ -D CMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" `
2348
+ -D CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" `
2349
+ -D CMAKE_EXE_LINKER_FLAGS_RELEASE="" `
2350
+ -D CMAKE_SHARED_LINKER_FLAGS_RELEASE="" `
2335
2351
$CMAKE_NDK_FLAG `
2336
2352
$SWIFT_NDK_FLAG `
2337
2353
-G Ninja `
@@ -2361,6 +2377,14 @@ jobs:
2361
2377
$CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
2362
2378
$SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
2363
2379
2380
+ # Worarkound CMake 3.30 issue where CMAKE_[*]_FLAGS are passed as-is to the linker driver.
2381
+ # Pass these as "-Xlinker" flags to avoid the issue.
2382
+ # TODO: Once we use CMake 4.0, set CMP0181 to NEW and pass these as "LINKER:" flags.
2383
+ $CMAKE_SHARED_LINKER_FLAGS =
2384
+ ("${{ matrix.shared_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2385
+ $CMAKE_EXE_LINKER_FLAGS =
2386
+ ("${{ matrix.exe_linker_flags }}".Split(" ").Where({ $_.Trim() -ne ''}) | ForEach-Object { "-Xlinker $_" }) -join " "
2387
+
2364
2388
if ("${{ matrix.os }}" -eq "Android") {
2365
2389
$NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
2366
2390
# Since win/arm64 doesn't have one, this logic is necessary because
@@ -2395,8 +2419,10 @@ jobs:
2395
2419
-D CMAKE_Swift_FLAGS_RELEASE="-O" `
2396
2420
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
2397
2421
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2398
- ${{ matrix.linker_flags }} `
2399
- ${{ matrix.extra_flags }} `
2422
+ -D CMAKE_EXE_LINKER_FLAGS="${CMAKE_EXE_LINKER_FLAGS}" `
2423
+ -D CMAKE_SHARED_LINKER_FLAGS="${CMAKE_SHARED_LINKER_FLAGS}" `
2424
+ -D CMAKE_EXE_LINKER_FLAGS_RELEASE="" `
2425
+ -D CMAKE_SHARED_LINKER_FLAGS_RELEASE="" `
2400
2426
$CMAKE_NDK_FLAG `
2401
2427
$SWIFT_NDK_FLAG `
2402
2428
-G Ninja `
@@ -2450,7 +2476,8 @@ jobs:
2450
2476
-D CMAKE_Swift_FLAGS_RELEASE="-O" `
2451
2477
-D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
2452
2478
-D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
2453
- ${{ matrix.linker_flags }} `
2479
+ -D CMAKE_EXE_LINKER_FLAGS="${{ matrix.exe_linker_flags }}" `
2480
+ -D CMAKE_SHARED_LINKER_FLAGS="${{ matrix.shared_linker_flags }}" `
2454
2481
${{ matrix.extra_flags }} `
2455
2482
$CMAKE_NDK_FLAG `
2456
2483
$SWIFT_NDK_FLAG `
0 commit comments