@@ -2029,7 +2029,8 @@ jobs:
20292029 cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
20302030 swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
20312031 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 }}
20332034 extra_flags :
20342035
20352036 - arch : arm64
@@ -2042,7 +2043,8 @@ jobs:
20422043 cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
20432044 swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
20442045 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 }}
20462048 extra_flags :
20472049
20482050 - arch : x86
@@ -2055,7 +2057,8 @@ jobs:
20552057 cxxflags : ${{ inputs.WINDOWS_CMAKE_CXX_FLAGS }}
20562058 swiftflags : ${{ inputs.CMAKE_Swift_FLAGS }}
20572059 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 }}
20592062 extra_flags :
20602063
20612064 - arch : arm64
@@ -2068,7 +2071,8 @@ jobs:
20682071 cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
20692072 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
20702073 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 }}
20722076 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
20732077
20742078 - arch : armv7
@@ -2081,7 +2085,8 @@ jobs:
20812085 cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
20822086 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
20832087 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 }}
20852090 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
20862091
20872092 - arch : i686
@@ -2094,7 +2099,8 @@ jobs:
20942099 cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
20952100 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
20962101 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 }}
20982104 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
20992105
21002106 - arch : x86_64
@@ -2107,7 +2113,8 @@ jobs:
21072113 cxxflags : ${{ inputs.ANDROID_CMAKE_CXX_FLAGS }}
21082114 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
21092115 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 }}
21112118 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
21122119
21132120 name : ${{ matrix.os }} ${{ matrix.arch }} SDK
@@ -2209,11 +2216,6 @@ jobs:
22092216 components : ' Microsoft.VisualStudio.Component.VC.Tools.x86.x64;Microsoft.VisualStudio.Component.VC.Tools.ARM64'
22102217 arch : ${{ matrix.arch }}
22112218
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-
22172219 - uses : nttld/setup-ndk@v1
22182220 if : matrix.os == 'Android' && inputs.build_android
22192221 id : setup-ndk
@@ -2262,7 +2264,8 @@ jobs:
22622264 -D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
22632265 -D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
22642266 -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 }}" `
22662269 ${{ matrix.extra_flags }} `
22672270 $CMAKE_NDK_FLAG `
22682271 $SWIFT_NDK_FLAG `
@@ -2282,6 +2285,13 @@ jobs:
22822285 $CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
22832286 $SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
22842287
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+
22852295 if ("${{ matrix.os }}" -eq "Android") {
22862296 $NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
22872297 # Since win/arm64 doesn't have one, this logic is necessary because
@@ -2319,7 +2329,6 @@ jobs:
23192329 -D CMAKE_CXX_COMPILER=${{ matrix.cxx }} `
23202330 -D CMAKE_CXX_COMPILER_TARGET=${{ matrix.triple }} `
23212331 -D CMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" `
2322- -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" `
23232332 -D CMAKE_FIND_PACKAGE_PREFER_CONFIG=YES `
23242333 -D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/${{ matrix.os }}.platform/Developer/SDKs/${{ matrix.os }}.sdk/usr `
23252334 -D CMAKE_Swift_COMPILER=${SWIFTC} `
@@ -2330,8 +2339,10 @@ jobs:
23302339 -D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
23312340 -D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
23322341 -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="" `
23352346 $CMAKE_NDK_FLAG `
23362347 $SWIFT_NDK_FLAG `
23372348 -G Ninja `
@@ -2361,6 +2372,14 @@ jobs:
23612372 $CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
23622373 $SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
23632374
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+
23642383 if ("${{ matrix.os }}" -eq "Android") {
23652384 $NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
23662385 # Since win/arm64 doesn't have one, this logic is necessary because
@@ -2395,8 +2414,10 @@ jobs:
23952414 -D CMAKE_Swift_FLAGS_RELEASE="-O" `
23962415 -D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
23972416 -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="" `
24002421 $CMAKE_NDK_FLAG `
24012422 $SWIFT_NDK_FLAG `
24022423 -G Ninja `
@@ -2450,7 +2471,8 @@ jobs:
24502471 -D CMAKE_Swift_FLAGS_RELEASE="-O" `
24512472 -D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
24522473 -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 }}" `
24542476 ${{ matrix.extra_flags }} `
24552477 $CMAKE_NDK_FLAG `
24562478 $SWIFT_NDK_FLAG `
0 commit comments