Skip to content
Draft
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
b2f00eb
[Darwin][Driver] Prefer linking with toolchain's libc++ instead of sy…
tstellar Oct 12, 2025
91ccb95
XXX: testrelease builds which also hit this bug
tstellar Oct 12, 2025
a0bb37c
Fix build failure
tstellar Oct 12, 2025
19b27bb
XX: debug
tstellar Oct 13, 2025
ff8bd1f
Debug
tstellar Oct 14, 2025
6d91fcd
Fix/Debug
tstellar Oct 14, 2025
fcbd474
Update debug
tstellar Oct 14, 2025
9b5d6ca
Disable IOS
tstellar Oct 15, 2025
2cc4f3a
Disable local runtimes
tstellar Oct 15, 2025
5ce50f1
Fix
tstellar Oct 15, 2025
72aff35
Revert "Fix/Debug"
tstellar Oct 15, 2025
dfc3419
Revert "Fix build failure"
tstellar Oct 15, 2025
165a856
Revert "[Darwin][Driver] Prefer linking with toolchain's libc++ inste…
tstellar Oct 15, 2025
8f3dc34
Fixes
tstellar Oct 15, 2025
34884af
Revert "Disable IOS"
tstellar Oct 17, 2025
c57dc7b
Disable LTO for pull requests
tstellar Oct 17, 2025
89ed724
Remove parallel link job limit
tstellar Oct 17, 2025
679c693
Disable pgo
tstellar Oct 17, 2025
5dd5f27
Disable pgo
tstellar Oct 17, 2025
fe3f4cf
fixes
tstellar Oct 18, 2025
0772de8
Fix typo
tstellar Oct 18, 2025
770dd42
reduce targets
tstellar Oct 19, 2025
1475a2b
Fix typo
tstellar Oct 19, 2025
15e5a8a
Improve testing
tstellar Oct 20, 2025
5733232
Fix typo
tstellar Oct 20, 2025
a2c905a
Fix typo
tstellar Oct 20, 2025
1a5751d
Disable flang
tstellar Oct 22, 2025
513edbf
Fixes
tstellar Oct 22, 2025
396dc7e
Merge remote-tracking branch 'origin/main' into HEAD
tstellar Oct 27, 2025
2355bbc
Fixes
tstellar Oct 27, 2025
3c75aef
Fixes for x86 mac
tstellar Oct 28, 2025
219f731
Fix typo
tstellar Oct 28, 2025
b75f29b
Disable runtimes too
tstellar Oct 29, 2025
96f22f8
Disable mLIR
tstellar Oct 29, 2025
7bdb739
Disable runtimes
tstellar Oct 29, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 0 additions & 3 deletions .github/workflows/release-binaries-all.yml
Original file line number Diff line number Diff line change
Expand Up @@ -88,9 +88,6 @@ jobs:
# We use ubuntu-22.04 rather than the latest version to make the built
# binaries more portable (eg functional aginast older glibc).
runs-on:
- ubuntu-22.04
- ubuntu-22.04-arm
- macos-13
- macos-14

uses: ./.github/workflows/release-binaries.yml
Expand Down
109 changes: 76 additions & 33 deletions .github/workflows/release-binaries.yml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
name: Release Binaries

# TEST
on:
workflow_dispatch:
inputs:
Expand Down Expand Up @@ -121,6 +121,47 @@
release_binary_basename="LLVM-$release_version-$RUNNER_OS-$RUNNER_ARCH"
echo "release-binary-basename=$release_binary_basename" >> $GITHUB_OUTPUT
echo "release-binary-filename=$release_binary_basename.tar.xz" >> $GITHUB_OUTPUT
enable_pgo=1
case "${{ inputs.runs-on }}" in
ubuntu-22.04*)
build_runs_on="depot-${{ inputs.runs-on }}-16"
test_runs_on=$build_runs_on
;;
macos-13)
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
build_runs_on="${{ inputs.runs-on }}"
else
build_runs_on="macos-13-large"
fi
test_runs_on="${{ inputs.runs-on }}"
;;
macos-14)
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
build_runs_on="${{ inputs.runs-on }}"
else
build_runs_on="depot-macos-14"
fi
test_runs_on="${{ inputs.runs-on }}"
;;
*)
test_runs_on="${{ inputs.runs-on }}"
build_runs_on=$test_runs_on
;;
esac
case "$build_runs_on" in
# These runners cannot build the full release package faster than
# the 6 hours timeout limit, so we need to use a configuration
# that builds more quickly.
macos-13 | macos-14)
bootstrap_prefix="BOOTSTRAP"
target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_LTO=OFF -DLLVM_RELEASE_ENABLE_PGO=OFF -D${bootstrap_prefix}-LLVM_TARGETS_TO_BUILD=Native -DLLVM_RELEASE_ENABLE_PROJECTS=clang;lld;lldb;clang-tools-extra;polly"
;;
*)
bootstrap_prefix="BOOTSTRAP_BOOTSTRAP"
;;
esac
target="$RUNNER_OS-$RUNNER_ARCH"
# The hendrikmuhs/ccache-action action does not support installing sccache
Expand All @@ -135,7 +176,7 @@
# add extra CMake args to disable them.
# See https://github.com/llvm/llvm-project/issues/99767
if [ "$RUNNER_OS" = "macOS" ]; then
target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_BOOTSTRAP_COMPILER_RT_ENABLE_IOS=OFF"
target_cmake_flags="$target_cmake_flags -D${bootstrap_prefix}_COMPILER_RT_ENABLE_IOS=OFF"
if [ "$RUNNER_ARCH" = "ARM64" ]; then
arches=arm64
else
Expand All @@ -146,7 +187,7 @@
# so we need to disable flang there.
target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_PROJECTS='clang;lld;lldb;clang-tools-extra;polly;mlir'"
fi
target_cmake_flags="$target_cmake_flags -DBOOTSTRAP_BOOTSTRAP_DARWIN_osx_ARCHS=$arches -DBOOTSTRAP_BOOTSTRAP_DARWIN_osx_BUILTIN_ARCHS=$arches"
target_cmake_flags="$target_cmake_flags -D${bootstrap_prefix}_DARWIN_osx_ARCHS=$arches -D${bootstrap_prefix}_DARWIN_osx_BUILTIN_ARCHS=$arches"
fi
build_flang="true"
Expand All @@ -155,35 +196,11 @@
# The build times out on Windows, so we need to disable LTO.
target_cmake_flags="$target_cmake_flags -DLLVM_RELEASE_ENABLE_LTO=OFF"
fi
target_cmake_flags="$target_cmake_flags -D${bootstrap_prefix}_CPACK_PACKAGE_FILE_NAME=$release_binary_basename"
echo "target-cmake-flags=$target_cmake_flags" >> $GITHUB_OUTPUT
echo "build-flang=$build_flang" >> $GITHUB_OUTPUT
case "${{ inputs.runs-on }}" in
ubuntu-22.04*)
build_runs_on="depot-${{ inputs.runs-on }}-16"
test_runs_on=$build_runs_on
;;
macos-13)
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
build_runs_on="${{ inputs.runs-on }}"
else
build_runs_on="macos-13-large"
fi
test_runs_on="${{ inputs.runs-on }}"
;;
macos-14)
if [ "$GITHUB_EVENT_NAME" = "pull_request" ]; then
build_runs_on="${{ inputs.runs-on }}"
else
build_runs_on="depot-macos-14"
fi
test_runs_on="${{ inputs.runs-on }}"
;;
*)
test_runs_on="${{ inputs.runs-on }}"
build_runs_on=$test_runs_on
;;
esac
echo "build-runs-on=$build_runs_on" >> $GITHUB_OUTPUT
echo "test-runs-on=$test_runs_on" >> $GITHUB_OUTPUT
Expand Down Expand Up @@ -229,17 +246,15 @@
# so we need to set some extra cmake flags to disable this.
cmake -G Ninja -S llvm -B ${{ steps.setup-stage.outputs.build-prefix }}/build \
${{ needs.prepare.outputs.target-cmake-flags }} \
-C clang/cmake/caches/Release.cmake \
-DBOOTSTRAP_LLVM_PARALLEL_LINK_JOBS=1 \
-DBOOTSTRAP_BOOTSTRAP_CPACK_PACKAGE_FILE_NAME="${{ needs.prepare.outputs.release-binary-basename }}"
-C clang/cmake/caches/Release.cmake
- name: Build
shell: bash
run: |
ninja -v -C ${{ steps.setup-stage.outputs.build-prefix }}/build stage2-package
release_dir=`find ${{ steps.setup-stage.outputs.build-prefix }}/build -iname 'stage2-bins'`
mv $release_dir/${{ needs.prepare.outputs.release-binary-filename }} .
- uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: ${{ runner.os }}-${{ runner.arch }}-release-binary
Expand All @@ -254,6 +269,34 @@
run: |
ninja -C ${{ steps.setup-stage.outputs.build-prefix }}/build stage2-check-all
test-release-package-mac-flang:
name: "Test Release Package Mac OS (flang)"
needs:
- prepare
if: >-
github.event_name == 'pull_request' &&
(needs.prepare.outputs.build-runs-on == 'macos-13' ||
needs.prepare.outputs.build-runs-on == 'macos-14')
runs-on: ${{ needs.prepare.outputs.build-runs-on }}
steps:
- name: Checkout LLVM
uses: actions/checkout@08c6903cd8c0fde910a37f88322edcfb5dd907a8 # v5.0.0
with:
ref: ${{ needs.prepare.outputs.ref }}
- name: Install Ninja
Comment on lines +265 to +269

Check warning

Code scanning / CodeQL

Checkout of untrusted code in trusted context Medium

Potential unsafe checkout of untrusted pull request on privileged workflow.
uses: llvm/actions/install-ninja@a1ea791b03c8e61f53a0e66f2f73db283aa0f01e # main
- name: Configure
run: |
cmake -G Ninja -S llvm -B build \
${{ needs.prepare.outputs.target-cmake-flags }} \
-DLLVM_RELEASE_ENABLE_PROJECTS="clang;mlir;flang" \
-DLLVM_RELEASE_FINAL_STAGE_TARGETS="check-flang;check-mlir" \
-C clang/cmake/caches/Release.cmake
- name: Build and Test
run: |
ninja -C build stage2-check-flang stage2-check-mlir
upload-release-binaries:
name: "Upload Release Binaries"
needs:
Expand Down
36 changes: 27 additions & 9 deletions clang/cmake/caches/Release.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,16 @@ set(LLVM_RELEASE_ENABLE_LTO THIN CACHE STRING "")
set(LLVM_RELEASE_ENABLE_PGO ON CACHE BOOL "")
set(LLVM_RELEASE_ENABLE_RUNTIMES ${DEFAULT_RUNTIMES} CACHE STRING "")
set(LLVM_RELEASE_ENABLE_PROJECTS ${DEFAULT_PROJECTS} CACHE STRING "")

if(${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
# Don't link against the just built runtimes due to:
# https://github.com/llvm/llvm-project/issues/77653
set(DEFAULT_LINK_LOCAL_RUNTIMES OFF)
else()
set(DEFAULT_LINK_LOCAL_RUNTIMES ON)
endif()
set(LLVM_RELEASE_LINK_LOCAL_RUNTIMES ${DEFAULT_LINK_LOCAL_RUNTIMES} CACHE BOOL "")

# Note we don't need to add install here, since it is one of the pre-defined
# steps.
set(LLVM_RELEASE_FINAL_STAGE_TARGETS "clang;package;check-all;check-llvm;check-clang" CACHE STRING "")
Expand All @@ -55,8 +65,12 @@ set(CLANG_ENABLE_BOOTSTRAP ON CACHE BOOL "")

set(STAGE1_PROJECTS "clang")

# Need to build compiler-rt in order to use PGO for later stages.
set(STAGE1_RUNTIMES "compiler-rt")
# Build all runtimes so we can statically link them into the stage2 compiler.
set(STAGE1_RUNTIMES "compiler-rt;libcxx;libcxxabi;libunwind")
if(DEFAULT_LINK_LOCAL_RUNTIMES)
list(APPEND STAGE1_RUNTIMES "libcxx;libcxxabi;libunwind")
endif()

if (LLVM_RELEASE_ENABLE_PGO)
list(APPEND STAGE1_PROJECTS "lld")
Expand Down Expand Up @@ -118,21 +132,25 @@ set_instrument_and_final_stage_var(LLVM_ENABLE_LTO "${LLVM_RELEASE_ENABLE_LTO}"
if (LLVM_RELEASE_ENABLE_LTO)
set_instrument_and_final_stage_var(LLVM_ENABLE_LLD "ON" BOOL)
endif()
set_instrument_and_final_stage_var(LLVM_ENABLE_LIBCXX "ON" BOOL)
set_instrument_and_final_stage_var(LLVM_STATIC_LINK_CXX_STDLIB "ON" BOOL)
set(RELEASE_LINKER_FLAGS "-rtlib=compiler-rt --unwindlib=libunwind")
if(NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
set(RELEASE_LINKER_FLAGS "${RELEASE_LINKER_FLAGS} -static-libgcc")
if(DEFAULT_LINK_LOCAL_RUNTIMES)
set_instrument_and_final_stage_var(LLVM_ENABLE_LIBCXX "ON" BOOL)
set_instrument_and_final_stage_var(LLVM_STATIC_LINK_CXX_STDLIB "ON" BOOL)
set(RELEASE_LINKER_FLAGS "-rtlib=compiler-rt --unwindlib=libunwind")
if(NOT ${CMAKE_HOST_SYSTEM_NAME} MATCHES "Darwin")
set(RELEASE_LINKER_FLAGS "${RELEASE_LINKER_FLAGS} -static-libgcc")
endif()
endif()

# Set flags for bolt
if (${CMAKE_HOST_SYSTEM_NAME} MATCHES "Linux")
set(RELEASE_LINKER_FLAGS "${RELEASE_LINKER_FLAGS} -Wl,--emit-relocs,-znow")
endif()

set_instrument_and_final_stage_var(CMAKE_EXE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
set_instrument_and_final_stage_var(CMAKE_SHARED_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
set_instrument_and_final_stage_var(CMAKE_MODULE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
if (RELEASE_LINKER_FLAGS)
set_instrument_and_final_stage_var(CMAKE_EXE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
set_instrument_and_final_stage_var(CMAKE_SHARED_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
set_instrument_and_final_stage_var(CMAKE_MODULE_LINKER_FLAGS ${RELEASE_LINKER_FLAGS} STRING)
endif()

# Final Stage Config (stage2)
set_final_stage_var(LLVM_ENABLE_RUNTIMES "${LLVM_RELEASE_ENABLE_RUNTIMES}" STRING)
Expand Down
Loading