diff --git a/.github/workflows/build-preview.yml b/.github/workflows/build-preview.yml index aae7b70304f7..3dfa1374d49a 100644 --- a/.github/workflows/build-preview.yml +++ b/.github/workflows/build-preview.yml @@ -119,7 +119,7 @@ jobs: build_ref: ${{ needs.trigger.outputs.sha }} release_tag: ${{ needs.trigger.outputs.release_tag }} is_prerelease: true - llvm_version: '19' + llvm_version: '20' notify: name: Notify Completion diff --git a/.github/workflows/build-reusable.yml b/.github/workflows/build-reusable.yml index b068720f1385..b834df139a39 100644 --- a/.github/workflows/build-reusable.yml +++ b/.github/workflows/build-reusable.yml @@ -1,7 +1,9 @@ name: Build WebKit (Reusable) env: - LLVM_VERSION: 19 + # Use LLVM 20 for macOS - LLVM 21 has libc++ ABI compatibility issues + # with macOS system libc++ (missing std::__1::__hash_memory) + LLVM_VERSION: 20 on: workflow_call: @@ -21,7 +23,7 @@ on: llvm_version: description: 'LLVM version to use' type: string - default: '19' + default: '20' outputs: release_tag: description: 'The release tag that was created' @@ -268,7 +270,7 @@ jobs: run: | "C:\Program Files\7-Zip" >> $Env:GITHUB_PATH scoop config use_external_7zip true - scoop install ninja llvm@19.1.7 + scoop install ninja llvm@20.1.8 Join-Path (Resolve-Path ~).Path "scoop\apps\llvm\current\bin" >> $Env:GITHUB_PATH - name: Install LLVM and Ninja (ARM64) if: matrix.platform == 'ARM64' @@ -277,7 +279,7 @@ jobs: scoop config use_external_7zip true scoop install ninja # Install LLVM ARM64 from official LLVM releases - # Use LLVM 21 for ARM64 - has better Windows ARM64 support and fixes SEH unwind bugs + # Using official releases since Scoop may not have ARM64 LLVM $llvmVersion = "21.1.8" $llvmUrl = "https://github.com/llvm/llvm-project/releases/download/llvmorg-$llvmVersion/LLVM-$llvmVersion-woa64.exe" $llvmPath = "C:\LLVM" diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 97a1721913f3..60f65e520038 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,7 @@ on: inputs: llvm_version: description: "LLVM version" - default: "19" + default: "20" jobs: build: @@ -22,4 +22,4 @@ jobs: build_ref: ${{ github.sha }} release_tag: autobuild-${{ github.sha }} is_prerelease: false - llvm_version: ${{ inputs.llvm_version || '19' }} + llvm_version: ${{ inputs.llvm_version || '20' }} diff --git a/Dockerfile b/Dockerfile index 3e71409ad1a8..c88d296210ce 100644 --- a/Dockerfile +++ b/Dockerfile @@ -3,7 +3,7 @@ ARG WEBKIT_RELEASE_TYPE=Release ARG CPU=native ARG LTO_FLAG="-flto=full -fwhole-program-vtables -fforce-emit-vtables " ARG RELEASE_FLAGS="-O3 -DNDEBUG=1" -ARG LLVM_VERSION="19" +ARG LLVM_VERSION="20" ARG DEFAULT_CFLAGS="-mno-omit-leaf-frame-pointer -g -fno-omit-frame-pointer -ffunction-sections -fdata-sections -faddrsig -fno-unwind-tables -fno-asynchronous-unwind-tables -DU_STATIC_IMPLEMENTATION=1 " ARG ENABLE_SANITIZERS="" @@ -71,10 +71,10 @@ RUN update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-13 130 \ --slave /usr/bin/gcc-nm gcc-nm /usr/bin/gcc-nm-13 \ --slave /usr/bin/gcc-ranlib gcc-ranlib /usr/bin/gcc-ranlib-13 -# Install LLVM 19 +# Install LLVM 20 RUN wget https://apt.llvm.org/llvm.sh \ && chmod +x llvm.sh \ - && ./llvm.sh 19 all \ + && ./llvm.sh 20 all \ && rm llvm.sh \ && rm -rf /var/lib/apt/lists/* diff --git a/Dockerfile.musl b/Dockerfile.musl index a137ff9eabee..10076f996105 100644 --- a/Dockerfile.musl +++ b/Dockerfile.musl @@ -2,10 +2,10 @@ ARG MARCH_FLAG="" ARG WEBKIT_RELEASE_TYPE=Release ARG CPU=native ARG LTO_FLAG="-flto=full -fwhole-program-vtables -fforce-emit-vtables " -ARG LLVM_VERSION="19" +ARG LLVM_VERSION="21" ARG DEFAULT_CFLAGS="-mno-omit-leaf-frame-pointer -g -fno-omit-frame-pointer -ffunction-sections -fdata-sections -faddrsig -fno-unwind-tables -fno-asynchronous-unwind-tables -DU_STATIC_IMPLEMENTATION=1 " -FROM alpine:3.21 as base +FROM alpine:3.23 as base ARG MARCH_FLAG ARG WEBKIT_RELEASE_TYPE @@ -15,13 +15,13 @@ ARG LLVM_VERSION ARG DEFAULT_CFLAGS RUN apk update -RUN apk add --no-cache cmake make clang19 clang19-static clang19-dev llvm19-dev llvm19-static musl-dev git lld libgcc gcc g++ libstdc++ build-base lld-dev llvm19-libs libc-dev xz zlib zlib-dev libxml2 libxml2-dev +RUN apk add --no-cache cmake make clang21 clang21-static clang21-dev llvm21-dev llvm21-static musl-dev git lld libgcc gcc g++ libstdc++ build-base lld-dev llvm21-libs libc-dev xz zlib zlib-dev libxml2 libxml2-dev -ENV CXX=clang++-19 -ENV CC=clang-19 -ENV LDFLAGS='-L/usr/include -L/usr/include/llvm19' -ENV CXXFLAGS="-I/usr/include -I/usr/include/llvm19" -ENV PATH="/usr/bin:/usr/local/bin:/zig/bin:/usr/lib/llvm19/bin:$PATH" +ENV CXX=clang++-21 +ENV CC=clang-21 +ENV LDFLAGS='-L/usr/include -L/usr/include/llvm21' +ENV CXXFLAGS="-I/usr/include -I/usr/include/llvm21" +ENV PATH="/usr/bin:/usr/local/bin:/zig/bin:/usr/lib/llvm21/bin:$PATH" ENV CPU=${CPU} ENV MARCH_FLAG=${MARCH_FLAG} ENV WEBKIT_OUT_DIR=/webkitbuild @@ -66,7 +66,7 @@ ARG LTO_FLAG ARG LLVM_VERSION ARG DEFAULT_CFLAGS -RUN apk add --no-cache cpio curl file gnupg ninja ruby unzip rsync perl python3 openssl-dev openssl linux-headers +RUN apk add --no-cache cpio curl file gnupg ninja ruby ruby-getoptlong unzip rsync perl python3 openssl-dev openssl linux-headers ENV WEBKIT_OUT_DIR=/webkitbuild # These are unnecessary on musl