[Build] Ensure clang/lld are pinned to the correct version
This commit is contained in:
15
.github/workflows/Linux_x86.yml
vendored
15
.github/workflows/Linux_x86.yml
vendored
@@ -35,11 +35,18 @@ jobs:
|
|||||||
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
|
wget -qO- https://apt.llvm.org/llvm-snapshot.gpg.key | sudo tee /etc/apt/trusted.gpg.d/apt.llvm.org.asc
|
||||||
sudo apt-add-repository "deb http://apt.llvm.org/${{ env.UBUNTU_BASE }}/ llvm-toolchain-${{ env.UBUNTU_BASE }}-${{ env.LLVM_VERSION }} main"
|
sudo apt-add-repository "deb http://apt.llvm.org/${{ env.UBUNTU_BASE }}/ llvm-toolchain-${{ env.UBUNTU_BASE }}-${{ env.LLVM_VERSION }} main"
|
||||||
sudo apt-get -y update
|
sudo apt-get -y update
|
||||||
sudo apt-get -y install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev libsdl2-dev libvulkan-dev libx11-xcb-dev clang-${{ env.LLVM_VERSION }} lld-${{ env.LLVM_VERSION }} ninja-build cmake spirv-tools
|
sudo apt-get -y install mesa-vulkan-drivers valgrind libc++-dev libc++abi-dev libgtk-3-dev libsdl2-dev libvulkan-dev libx11-xcb-dev clang-${{ env.LLVM_VERSION }} lld-${{ env.LLVM_VERSION }} ninja-build cmake spirv-tools libfuse2
|
||||||
|
|
||||||
|
# Pin LLVM tools to the correct version so system ar/ranlib/lld
|
||||||
|
# don't use the older LLVM 17 gold plugin with clang-20 LTO bitcode
|
||||||
|
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ env.LLVM_VERSION }} 200
|
||||||
|
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${{ env.LLVM_VERSION }} 200
|
||||||
|
sudo update-alternatives --install /usr/bin/lld lld /usr/bin/lld-${{ env.LLVM_VERSION }} 200
|
||||||
|
sudo update-alternatives --install /usr/bin/ld.lld ld.lld /usr/bin/ld.lld-${{ env.LLVM_VERSION }} 200
|
||||||
|
sudo update-alternatives --install /usr/bin/llvm-ar llvm-ar /usr/bin/llvm-ar-${{ env.LLVM_VERSION }} 200
|
||||||
|
sudo update-alternatives --install /usr/bin/llvm-ranlib llvm-ranlib /usr/bin/llvm-ranlib-${{ env.LLVM_VERSION }} 200
|
||||||
|
sudo update-alternatives --install /usr/bin/llvm-nm llvm-nm /usr/bin/llvm-nm-${{ env.LLVM_VERSION }} 200
|
||||||
|
|
||||||
# Pin clang to the correct version
|
|
||||||
sudo update-alternatives --install /usr/bin/clang clang /usr/bin/clang-${{ env.LLVM_VERSION }} 200
|
|
||||||
sudo update-alternatives --install /usr/bin/clang++ clang++ /usr/bin/clang++-${{ env.LLVM_VERSION }} 200
|
|
||||||
- name: Install Vulkan SDK
|
- name: Install Vulkan SDK
|
||||||
run: |
|
run: |
|
||||||
# Install Vulkan SDK
|
# Install Vulkan SDK
|
||||||
|
|||||||
@@ -283,10 +283,19 @@ else()
|
|||||||
$<$<CONFIG:Release>:_NO_DEBUG_HEAP=1>
|
$<$<CONFIG:Release>:_NO_DEBUG_HEAP=1>
|
||||||
)
|
)
|
||||||
add_compile_options($<$<CONFIG:Release>:-O3>)
|
add_compile_options($<$<CONFIG:Release>:-O3>)
|
||||||
# Link-time optimization (use lld to avoid system linker LTO plugin version mismatch)
|
# Link-time optimization (use lld and llvm-ar/ranlib to avoid system
|
||||||
|
# linker/archiver LTO plugin version mismatch with clang's bitcode)
|
||||||
add_compile_options($<$<CONFIG:Release>:-flto=thin>)
|
add_compile_options($<$<CONFIG:Release>:-flto=thin>)
|
||||||
add_link_options($<$<CONFIG:Release>:-flto=thin>)
|
add_link_options($<$<CONFIG:Release>:-flto=thin>)
|
||||||
add_link_options($<$<CONFIG:Release>:-fuse-ld=lld>)
|
add_link_options($<$<CONFIG:Release>:-fuse-ld=lld>)
|
||||||
|
find_program(LLVM_AR NAMES llvm-ar)
|
||||||
|
find_program(LLVM_RANLIB NAMES llvm-ranlib)
|
||||||
|
if(LLVM_AR)
|
||||||
|
set(CMAKE_AR "${LLVM_AR}" CACHE FILEPATH "" FORCE)
|
||||||
|
endif()
|
||||||
|
if(LLVM_RANLIB)
|
||||||
|
set(CMAKE_RANLIB "${LLVM_RANLIB}" CACHE FILEPATH "" FORCE)
|
||||||
|
endif()
|
||||||
# No symbols in release on non-Windows
|
# No symbols in release on non-Windows
|
||||||
string(REPLACE "-g" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
string(REPLACE "-g" "" CMAKE_C_FLAGS_RELEASE "${CMAKE_C_FLAGS_RELEASE}")
|
||||||
string(REPLACE "-g" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
string(REPLACE "-g" "" CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE}")
|
||||||
|
|||||||
Reference in New Issue
Block a user