diff --git a/.github/workflows/build-toolchain.yml b/.github/workflows/build-toolchain.yml index 83f9facee..7d82b805f 100644 --- a/.github/workflows/build-toolchain.yml +++ b/.github/workflows/build-toolchain.yml @@ -54,10 +54,10 @@ on: default: false type: boolean - stable_point: - description: 'Use Repo Smart Sync' + use_host_toolchain: + description: 'Use host toolchain (MSVC) instead of clang-cl/lld-link' type: boolean - default: false + default: true required: false workflow_call: @@ -628,6 +628,7 @@ jobs: compilers_build_runner: ${{ needs.context.outputs[format('windows_{0}_compilers_runner', needs.context.outputs.windows_build_cpu)] }} build_android: ${{ inputs.build_android }} python_version: ${{ needs.context.outputs.python_version }} + use_host_toolchain: ${{ inputs.use_host_toolchain }} secrets: SYMBOL_SERVER_PAT: ${{ secrets.SYMBOL_SERVER_PAT }} CERTIFICATE: ${{ secrets.CERTIFICATE }} diff --git a/.github/workflows/swift-toolchain.yml b/.github/workflows/swift-toolchain.yml index f4d777dab..c2a15a928 100644 --- a/.github/workflows/swift-toolchain.yml +++ b/.github/workflows/swift-toolchain.yml @@ -248,6 +248,11 @@ on: required: true type: string + use_host_toolchain: + required: false + type: boolean + default: true + secrets: SYMBOL_SERVER_PAT: required: true @@ -350,10 +355,12 @@ jobs: install-dir: ${{ github.workspace }}/BuildRoot/Library/sqlite-${{ inputs.swift_toolchain_sqlite_version }}/usr android-api-level: ${{ inputs.ANDROID_API_LEVEL }} android-clang-version: ${{ inputs.ANDROID_CLANG_VERSION }} - msvc-compilers: '@("C")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C")' }} cmake-defines: | @{ 'BUILD_SHARED_LIBS' = "NO"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build SQLite run: cmake --build ${{ github.workspace }}/BinaryCache/sqlite-${{ inputs.swift_toolchain_sqlite_version }} @@ -434,8 +441,14 @@ jobs: arch: ${{ inputs.build_arch }} src-dir: ${{ github.workspace }}/SourceCache/ds2/Tools/RegsGen2 bin-dir: ${{ github.workspace }}/BinaryCache/RegsGen2 - msvc-compilers: '@("C", "CXX")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C", "CXX")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C", "CXX")' }} cache-script: ${{ github.workspace }}/SourceCache/ds2/cmake/caches/MSVCWarnings.cmake + cmake-defines: | + @{ + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + 'CMAKE_CXX_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + } - name: Build RegsGen2 if: inputs.build_android run: cmake --build ${{ github.workspace }}/BinaryCache/RegsGen2 --config Release @@ -632,12 +645,15 @@ jobs: src-dir: ${{ github.workspace }}/SourceCache/cmark-gfm bin-dir: ${{ github.workspace }}/BinaryCache/cmark-gfm-${{ inputs.swift_cmark_version }} install-dir: ${{ github.workspace }}/BuildRoot/Library/cmark-gfm-${{ inputs.swift_cmark_version }}/usr - msvc-compilers: '@("C", "CXX")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C", "CXX")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C", "CXX")' }} cmake-defines: | @{ 'BUILD_SHARED_LIBS' = "YES"; 'BUILD_TESTING' = "NO"; 'CMAKE_INSTALL_SYSTEM_RUNTIME_LIBS_SKIP' = "YES"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + 'CMAKE_CXX_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build cmark-gfm run: cmake --build ${{ github.workspace }}/BinaryCache/cmark-gfm-${{ inputs.swift_cmark_version }} @@ -725,7 +741,8 @@ jobs: arch: ${{ matrix.arch }} src-dir: ${{ github.workspace }}/SourceCache/llvm-project/llvm bin-dir: ${{ github.workspace }}/BinaryCache/0 - msvc-compilers: '@("ASM_MASM", "C", "CXX")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("ASM_MASM", "C", "CXX")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("ASM_MASM", "C", "CXX")' }} cmake-defines: | @{ 'CMAKE_CROSSCOMPILING' = "NO"; @@ -755,6 +772,8 @@ jobs: 'SWIFT_INCLUDE_DOCS' = "NO"; 'SWIFT_INCLUDE_TESTS' = "NO"; 'cmark-gfm_DIR' = "${{ github.workspace }}/BuildRoot/Library/cmark-gfm-${{ inputs.swift_cmark_version }}/usr/lib/cmake"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + 'CMAKE_CXX_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build llvm-tblgen run: cmake --build ${{ github.workspace }}/BinaryCache/0 --target llvm-tblgen @@ -1087,8 +1106,8 @@ jobs: bin-dir: ${{ github.workspace }}/BinaryCache/1 install-dir: ${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+${{ matrix.variant }}/usr swift-sdk-path: ${{ steps.setup-context.outputs.sdkroot }} - msvc-compilers: '@("C", "CXX")' - pinned-compilers: '@("Swift")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C", "CXX")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@("Swift")' || '@("C", "CXX", "Swift")' }} cache-script: ${{ github.workspace }}/SourceCache/swift/cmake/caches/${{ matrix.os }}-${{ matrix.cpu }}.cmake cmake-defines: | @{ @@ -1106,6 +1125,7 @@ jobs: 'LLDB_TABLEGEN' = "${{ github.workspace }}/BinaryCache/0/bin/lldb-tblgen${ExeSuffix}"; 'LLVM_CONFIG_PATH' = "${{ github.workspace }}/BinaryCache/0/bin/llvm-config${ExeSuffix}"; 'LLVM_ENABLE_ASSERTIONS' = ${{ matrix.variant == 'Asserts' && '"YES"' || '"NO"' }}; + 'LLVM_ENABLE_LLD' = "${{ inputs.use_host_toolchain && 'NO' || 'YES' }}"; 'LLVM_EXTERNAL_SWIFT_SOURCE_DIR' = "${{ github.workspace }}/SourceCache/swift"; 'LLVM_HOST_TRIPLE' = "${{ matrix.triple }}"; 'LLVM_NATIVE_TOOL_DIR' = "${{ github.workspace }}/BinaryCache/0/bin"; @@ -1140,6 +1160,9 @@ jobs: 'LLVM_VERSION_SUFFIX' = ""; 'LLVM_PARALLEL_LINK_JOBS' = "${{ steps.setup-context.outputs.link-jobs }}"; 'SWIFT_PARALLEL_LINK_JOBS' = "${{ steps.setup-context.outputs.link-jobs }}"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + 'CMAKE_CXX_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + 'CMAKE_Swift_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-use-ld=lld' }}"; } - name: Build Compiler Distribution @@ -1308,11 +1331,13 @@ jobs: android-api-level: ${{ inputs.ANDROID_API_LEVEL }} android-clang-version: ${{ inputs.ANDROID_CLANG_VERSION }} ndk-path: ${{ steps.setup-ndk.outputs.ndk-path }} - msvc-compilers: '@("C")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C")' }} cmake-defines: | @{ 'BUILD_SHARED_LIBS' = "NO"; 'CMAKE_POSITION_INDEPENDENT_CODE' = "YES"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build zlib run: cmake --build ${{ github.workspace }}/BinaryCache/zlib-${{ inputs.zlib_version }} @@ -1396,11 +1421,13 @@ jobs: android-api-level: ${{ inputs.ANDROID_API_LEVEL }} android-clang-version: ${{ inputs.ANDROID_CLANG_VERSION }} ndk-path: ${{ steps.setup-ndk.outputs.ndk-path }} - msvc-compilers: '@("C")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C")' }} cmake-defines: | @{ 'BUILD_SHARED_LIBS' = "NO"; 'CMAKE_POSITION_INDEPENDENT_CODE' = "YES"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build brotli run: cmake --build ${{ github.workspace }}/BinaryCache/brotli-${{ inputs.brotli_version }} @@ -1490,7 +1517,8 @@ jobs: android-api-level: ${{ inputs.ANDROID_API_LEVEL }} android-clang-version: ${{ inputs.ANDROID_CLANG_VERSION }} ndk-path: ${{ steps.setup-ndk.outputs.ndk-path }} - msvc-compilers: '@("C")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C")' }} cmake-defines: | @{ 'BUILD_SHARED_LIBS' = "NO"; @@ -1580,6 +1608,7 @@ jobs: 'USE_WIN32_LDAP' = "NO"; 'ZLIB_ROOT' = "${{ github.workspace }}/BuildRoot/Library/zlib-${{ inputs.zlib_version }}/usr"; 'ZLIB_LIBRARY' = "${{ github.workspace }}/BuildRoot/Library/zlib-${{ inputs.zlib_version }}/usr/lib/zlibstatic.lib"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build curl run: cmake --build ${{ github.workspace }}/BinaryCache/curl-${{ inputs.curl_version }} @@ -1663,7 +1692,8 @@ jobs: android-api-level: ${{ inputs.ANDROID_API_LEVEL }} android-clang-version: ${{ inputs.ANDROID_CLANG_VERSION }} ndk-path: ${{ steps.setup-ndk.outputs.ndk-path }} - msvc-compilers: '@("C", "CXX")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C", "CXX")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C", "CXX")' }} cmake-defines: | @{ 'BUILD_SHARED_LIBS' = "NO"; @@ -1675,6 +1705,8 @@ jobs: 'LIBXML2_WITH_TESTS' = "NO"; 'LIBXML2_WITH_THREADS' = "YES"; 'LIBXML2_WITH_ZLIB' = "NO"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + 'CMAKE_CXX_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build libxml2 run: cmake --build ${{ github.workspace }}/BinaryCache/libxml2-${{ inputs.libxml2_version }} @@ -1795,11 +1827,14 @@ jobs: android-api-level: ${{ inputs.ANDROID_API_LEVEL }} android-clang-version: ${{ inputs.ANDROID_CLANG_VERSION }} ndk-path: ${{ steps.setup-ndk.outputs.ndk-path }} - msvc-compilers: '@("ASM_MASM", "C", "CXX")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("ASM_MASM", "C", "CXX")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("ASM_MASM", "C", "CXX")' }} cmake-defines: | @{ 'LLVM_ENABLE_ASSERTIONS' = "YES"; 'LLVM_HOST_TRIPLE' = "${{ matrix.triple }}"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + 'CMAKE_CXX_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Configure Swift Standard Library @@ -3706,7 +3741,8 @@ jobs: bin-dir: ${{ github.workspace }}/BinaryCache/swift-format install-dir: ${{ github.workspace }}/BuildRoot/Library/Developer/Toolchains/${{ inputs.swift_version }}+Asserts/usr swift-sdk-path: ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/${{ matrix.os }}.platform/Developer/SDKs/${{ matrix.os }}.sdk - msvc-compilers: '@("C")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C")' }} built-compilers: '@("Swift")' cmake-defines: | @{ @@ -3715,6 +3751,7 @@ jobs: 'SwiftMarkdown_DIR' = "${{ github.workspace }}/BinaryCache/swift-markdown/cmake/modules"; 'SwiftSyntax_DIR' = "${{ github.workspace }}/BinaryCache/swift-syntax/cmake/modules"; 'cmark-gfm_DIR' = "${{ github.workspace }}/BinaryCache/Library/cmark-gfm-${{ inputs.swift_cmark_version }}/usr/lib/cmake"; + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; } - name: Build swift-format run: cmake --build ${{ github.workspace }}/BinaryCache/swift-format @@ -3733,7 +3770,12 @@ jobs: src-dir: ${{ github.workspace }}/SourceCache/swift-lmdb bin-dir: ${{ github.workspace }}/BinaryCache/swift-lmdb swift-sdk-path: ${{ github.workspace }}/BinaryCache/Library/Developer/Platforms/${{ matrix.os }}.platform/Developer/SDKs/${{ matrix.os }}.sdk - msvc-compilers: '@("C")' + msvc-compilers: ${{ inputs.use_host_toolchain && '@("C")' || '@()' }} + pinned-compilers: ${{ inputs.use_host_toolchain && '@()' || '@("C")' }} + cmake-defines: | + @{ + 'CMAKE_C_FLAGS' = "${{ inputs.use_host_toolchain && '' || '-fuse-ld=lld' }}"; + } - name: Build swift-lmdb run: cmake --build ${{ github.workspace }}/BinaryCache/swift-lmdb