@@ -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
@@ -2262,7 +2269,8 @@ jobs:
22622269 -D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
22632270 -D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
22642271 -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 }}" `
22662274 ${{ matrix.extra_flags }} `
22672275 $CMAKE_NDK_FLAG `
22682276 $SWIFT_NDK_FLAG `
@@ -2282,6 +2290,13 @@ jobs:
22822290 $CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
22832291 $SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
22842292
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+
22852300 if ("${{ matrix.os }}" -eq "Android") {
22862301 $NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
22872302 # Since win/arm64 doesn't have one, this logic is necessary because
@@ -2319,7 +2334,6 @@ jobs:
23192334 -D CMAKE_CXX_COMPILER=${{ matrix.cxx }} `
23202335 -D CMAKE_CXX_COMPILER_TARGET=${{ matrix.triple }} `
23212336 -D CMAKE_CXX_FLAGS="${{ matrix.cxxflags }}" `
2322- -D CMAKE_EXE_LINKER_FLAGS="${{ inputs.WINDOWS_CMAKE_EXE_LINKER_FLAGS }}" `
23232337 -D CMAKE_FIND_PACKAGE_PREFER_CONFIG=YES `
23242338 -D CMAKE_INSTALL_PREFIX=${{ github.workspace }}/BuildRoot/Library/Developer/Platforms/${{ matrix.os }}.platform/Developer/SDKs/${{ matrix.os }}.sdk/usr `
23252339 -D CMAKE_Swift_COMPILER=${SWIFTC} `
@@ -2330,8 +2344,10 @@ jobs:
23302344 -D CMAKE_SYSTEM_PROCESSOR=${CMAKE_CPU} `
23312345 -D MSVC_C_ARCHITECTURE_ID=${{ matrix.arch }} `
23322346 -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="" `
23352351 $CMAKE_NDK_FLAG `
23362352 $SWIFT_NDK_FLAG `
23372353 -G Ninja `
@@ -2361,6 +2377,14 @@ jobs:
23612377 $CLANG_CL = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/clang-cl.exe
23622378 $SWIFTC = cygpath -m ${{ github.workspace }}/BinaryCache/Library/Developer/Toolchains/unknown-Asserts-development.xctoolchain/usr/bin/swiftc.exe
23632379
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+
23642388 if ("${{ matrix.os }}" -eq "Android") {
23652389 $NDKPATH = cygpath -m ${{ steps.setup-ndk.outputs.ndk-path }}
23662390 # Since win/arm64 doesn't have one, this logic is necessary because
@@ -2395,8 +2419,10 @@ jobs:
23952419 -D CMAKE_Swift_FLAGS_RELEASE="-O" `
23962420 -D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
23972421 -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="" `
24002426 $CMAKE_NDK_FLAG `
24012427 $SWIFT_NDK_FLAG `
24022428 -G Ninja `
@@ -2450,7 +2476,8 @@ jobs:
24502476 -D CMAKE_Swift_FLAGS_RELEASE="-O" `
24512477 -D CMAKE_SYSTEM_NAME=${{ matrix.os }} `
24522478 -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 }}" `
24542481 ${{ matrix.extra_flags }} `
24552482 $CMAKE_NDK_FLAG `
24562483 $SWIFT_NDK_FLAG `
0 commit comments