package/llvm-project: bump to version 20.1.5

Release:
https://github.com/llvm/llvm-project/releases/tag/llvmorg-20.1.5

Major Changes and Fixes:

-- CMake 3.20 minimum required

-- Issue encountered during standalone LLVM build:
    CMake Error at CMakeLists.txt:8 (include):
      include could not find requested file:

  This error is due to the line:
    include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake)

  Upstream commit [1] harmonized policy handling by introducing this shared include
  for all LLVM sub-projects. However, in the LLVM CMakeLists, LLVM_COMMON_CMAKE_UTILS
  is set unconditionally, preventing external override — which is required in
  Buildroot when building from separated archives.

  To solve this:
    We apply a patch to wrap the assignment of LLVM_COMMON_CMAKE_UTILS in an
    `if(NOT DEFINED ...)` block, allowing Buildroot to set the path externally.
    In the `llvm-cmake` package, we also **adjust the installation path** of the
    CMake modules: instead of installing directly into `lib/cmake/llvm`, we now
    install them under `lib/cmake/llvm/Modules` to match the expected layout.

  This ensures that:
    LLVM can include `${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake`
    without errors.

-- Also the Clang build system has removed support for
   the GCC_INSTALL_PREFIX option, raising a fatal error when attempting to use it:

   CMake Error at CMakeLists.txt:211 (message):
      GCC_INSTALL_PREFIX is deprecated and will be removed.
      Use configuration files (https://clang.llvm.org/docs/UsersManual.html#configuration-files)
      to specify the default --gcc-install-dir= or --gcc-triple=.
      --gcc-toolchain= is discouraged.
      See https://github.com/llvm/llvm-project/pull/77537
      for details.

   Remove the use of GCC_INSTALL_PREFIX and replace it with a
   Clang configuration file as recommended by upstream.

   A configuration file is now automatically generated at:
   $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/$(GNU_TARGET_NAME).cfg

   It contains:
   --gcc-install-dir=<path to external toolchain's lib/gcc/...>
   --target=<GNU target triplet>

   We dynamically detect the GCC install path by scanning
   $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/lib/gcc/<target>/<version>/

   The Clang toolchain wrapper was also updated to add --config=<file> when
   BR_CLANG_CONFIG_FILE is defined.

-- Fix LLVM_MAIN_SRC_DIR path:
   set(LLVM_MAIN_SRC_DIR "${CMAKE_CURRENT_SOURCE_DIR}/../llvm" CACHE PATH ...)
   This path isn't correct when using standalone archive builds. We explicitly pass
   LLVM_MAIN_SRC_DIR=$(BUILD_DIR)/llvm-$(LLVM_PROJECT_VERSION) to fix the path. [2]

-- Add LLVM_ENABLE_RUNTIMES:
   Upstream added LLVM_ENABLE_RUNTIMES for runtimes [3]

-- Removed LLVM_INCLUDE_GO_TESTS:
   Upstream dropped this option; we remove it too [4]

-- Disable TensorFlow Lite integration:
   LLVM_HAVE_TFLITE is added to the CMakelist
   We now explicitly disable it to avoid unexpected
   TensorFlow Lite dependency.

-- Clang introduced CLANG_ENABLE_LIBXML2 [5]
   We now explicitly disable it by setting CLANG_ENABLE_LIBXLM2=OFF
   since we set LLVM_ENABLE_LIBXML2 to OFF in LLVM

-- Host-python3, which is now always needed by Clang’s resource bundling
   script. [6]

-- Clang explicitly request to disable llvm tests when llvm_gtest is missing.[7]
   CMake Error at CMakeLists.txt:126 (message):
    llvm-gtest not found. Please install llvm-gtest or disable tests with
    -DLLVM_INCLUDE_TESTS=OFF

-- Also update the installation path in COMPILER_RT_SETUP_RUNTIME_LIBS
   to use CLANG_VERSION_MAJOR instead of HOST_CLANG_VERSION,
   ensuring that the runtime files are placed correctly
   in the /lib/clang/<major>/ folder. [8]

-- Add llvm-runtimes dependency
   libunwind needs runtimes [9]

-- Fix for libclc out of tree patch
   Due to upstream changes in libclc, the old patch no longer
   applies. Only the fix related to invoking './prepare_builtins'
   directly is still relevant and preserved, as it is required to avoid
   a build failure when the binary is not in PATH.

-- Upstream commit [10] removed the use of llvm-config in libclc and
   replaced it with proper use of LLVM_CMAKE_DIR. We now pass
   -DLLVM_CMAKE_DIR instead of DLLVM_CONFIG

-- Libclc expects to invoke some LLVM tools. We explicitly set
   LIBCLC_CUSTOM_LLVM_TOOLS_BINARY_DIR to ensure it finds these tools. [11]

-- Remove LLAsm_COMPILER and CLC_COMPILER [12]

-- LIBUNWIND_INSTALL_HEADERS is On by default [13]

-- Update spirv-llvm-translator to align with LLVM 20.1.5
   Release:
   https://github.com/KhronosGroup/SPIRV-LLVM-Translator/releases/tag/v20.1.2

[1]  9dd01a5241
[2]  d2b158e29e
[3]  176db3b3ab
[4]  6ce8727248
[5]  df239a6c17
[6]  96962d5512
[7]  8216910395
[8]  e1b88c8a09
[9]  0af67d167d
[10] b264787453
[11] 0aeeff3059
[12] 72f9881c3f
[13] f8409af354

Signed-off-by: El Mehdi YOUNES <elmehdi.younes@smile.fr>
Signed-off-by: Bernd Kuhls <bernd@kuhls.net>
[Bernd: rebased, removed gcc-15 patches for llvm 15, bumped to 20.1.5]
        used 'git describe' to set the version number for spirv-llvm-translator]
[Mehdi: changed llvm-runtimes version to $(LLVM_PROJECT_VERSION)]
Signed-off-by: Julien Olivain <ju.o@free.fr>
This commit is contained in:
El Mehdi YOUNES
2025-05-22 09:18:16 +02:00
committed by Julien Olivain
parent 395568599c
commit e29dae109a
32 changed files with 141 additions and 269 deletions

View File

@@ -743,8 +743,6 @@ package/lirc-tools/0002-configure-add-disable-doc-option.patch lib_patch.Upstrea
package/lirc-tools/S25lircd lib_sysv.Indent lib_sysv.Variables
package/live555/0001-Add-a-pkg-config-file-for-the-shared-libraries.patch lib_patch.Upstream
package/lldpd/S60lldpd Shellcheck lib_sysv.Indent lib_sysv.Variables
package/llvm-project/clang/0001-lib-Driver-ToolChains-Gnu-Use-GCC_INSTALL_PREFIX-in-.patch lib_patch.Upstream
package/llvm-project/libclc/0001-support-out-of-tree-build.patch lib_patch.Upstream
package/lm-sensors/0001-static-build.patch lib_patch.Upstream
package/lm-sensors/0002-no-host-ldconfig.patch lib_patch.Upstream
package/lmbench/0001-scripts-build-use-bin-bash-as-shell.patch lib_patch.Upstream

View File

@@ -1,78 +0,0 @@
From fe21cede3939a435d62efbd5799547fab6af1b0a Mon Sep 17 00:00:00 2001
From: Romain Naour <romain.naour@smile.fr>
Date: Mon, 5 Aug 2019 16:06:48 +0200
Subject: [PATCH] lib/Driver/ToolChains/Gnu: Use GCC_INSTALL_PREFIX in the set
of prefixes for searching the gcc toolchain
By default, the Gnu Toolchains driver is looking at the parent
directory while looking for the gcc toolchain when clang is installed
at "D.InstalledDir"
But this doesn't work with Buildroot since the external
toolchain is installed in host/opt/ext-toolchain and the sysroot is
moved to host/<arch>-buildroot-linux-gnu/sysroot/ directory.
We tried by setting GCC_INSTALL_PREFIX in clang.mk for host-clang
but it doesn't work since we already provide a sysroot [1].
Help the Gnu Toolchains driver by using GCC_INSTALL_PREFIX path.
Since we want to be able to relocate the clang toolchain,
allow to use a relative path with GCC_INSTALL_PREFIX.
Buildroot will provide such relative path by using:
HOST_CLANG_CONF_OPTS += -DGCC_INSTALL_PREFIX:PATH=`realpath --relative-to=$(HOST_DIR)/bin/ $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)`
Doing so allow to use clang without providing additional search
paths with -B option on the clang's command line.
[1] https://reviews.llvm.org/D49244
[2] http://lists.busybox.net/pipermail/buildroot/2019-August/256204.html
Signed-off-by: Romain Naour <romain.naour@smile.fr>
Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
---
Pending, access to llvm mailing lists to submit it is pending. They
seem to be having issues with their listserv.
---
lib/Driver/ToolChains/Gnu.cpp | 17 +++++++++++++++++
1 file changed, 17 insertions(+)
diff --git a/lib/Driver/ToolChains/Gnu.cpp b/lib/Driver/ToolChains/Gnu.cpp
index 2ad45097dc..90d6b5b748 100644
--- a/lib/Driver/ToolChains/Gnu.cpp
+++ b/lib/Driver/ToolChains/Gnu.cpp
@@ -1725,6 +1725,8 @@ void Generic_GCC::GCCInstallationDetector::init(
Prefixes.push_back(std::string(GCCToolchainDir));
} else {
+ StringRef GccIinstallPrefix = GCC_INSTALL_PREFIX;
+
// If we have a SysRoot, try that first.
if (!D.SysRoot.empty()) {
Prefixes.push_back(D.SysRoot);
@@ -1734,6 +1736,21 @@ void Generic_GCC::GCCInstallationDetector::init(
// Then look for gcc installed alongside clang.
Prefixes.push_back(D.InstalledDir + "/..");
+ // Use GCC_INSTALL_PREFIX if provided by the buildsystem.
+ if (!GccIinstallPrefix.empty())
+ {
+ if (llvm::sys::path::is_relative(GccIinstallPrefix))
+ {
+ // Use a relative path to gcc from clang install path.
+ Prefixes.push_back(D.InstalledDir + "/" + GccIinstallPrefix.str());
+ }
+ else
+ {
+ // Hardcode the absolute path provided by GCC_INSTALL_PREFIX.
+ Prefixes.push_back(GCC_INSTALL_PREFIX);
+ }
+ }
+
// Next, look for prefix(es) that correspond to distribution-supplied gcc
// installations.
if (D.SysRoot.empty()) {
--
2.20.1

View File

@@ -8,6 +8,7 @@ config BR2_PACKAGE_CLANG
depends on !BR2_STATIC_LIBS
depends on BR2_USE_WCHAR # std::wstring
depends on BR2_HOST_GCC_AT_LEAST_7
select BR2_HOST_CMAKE_AT_LEAST_3_20 # cmake required version at least 3.20
select BR2_PACKAGE_LLVM
help
Clang is a C/C++, Objective C/C++ and OpenCL C front-end

View File

@@ -1,3 +1,3 @@
# locally calculated
sha256 a6b673ef15377fb46062d164e8ddc4d05c348ff8968f015f7f4af03f51000067 clang-15.0.7.src.tar.xz
sha256 97025772b25c6694db049d3c4be5a72d926299aa1a9b861f490d66750e31c9dd clang-20.1.5.src.tar.xz
sha256 ebcd9bbf783a73d05c53ba4d586b8d5813dcdf3bbec50265860ccc885e606f47 LICENSE.TXT

View File

@@ -14,9 +14,12 @@ CLANG_CPE_ID_VENDOR = llvm
CLANG_SUPPORTS_IN_SOURCE_BUILD = NO
CLANG_INSTALL_STAGING = YES
HOST_CLANG_DEPENDENCIES = host-llvm host-libxml2
HOST_CLANG_DEPENDENCIES = host-llvm host-libxml2 host-python3
CLANG_DEPENDENCIES = llvm host-clang
# since we have LLVM_ENABLE_LIBXML2=OFF, set CLANG_ENABLE_LIBXML2=OFF
CLANG_CONF_OPTS += -DCLANG_ENABLE_LIBXML2=OFF
# This option is needed, otherwise multiple shared libs
# (libclangAST.so, libclangBasic.so, libclangFrontend.so, etc.) will
# be generated. As a final shared lib containing all these components
@@ -45,12 +48,14 @@ CLANG_CONF_OPTS += -DCLANG_BUILD_TOOLS=ON
HOST_CLANG_CONF_OPTS += \
-DCLANG_BUILD_EXAMPLES=OFF \
-DCLANG_INCLUDE_DOCS=OFF \
-DCLANG_INCLUDE_TESTS=OFF
-DCLANG_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_TESTS=OFF
CLANG_CONF_OPTS += \
-DCLANG_BUILD_EXAMPLES=OFF \
-DCLANG_INCLUDE_DOCS=OFF \
-DCLANG_INCLUDE_TESTS=OFF
-DCLANG_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_TESTS=OFF
HOST_CLANG_CONF_OPTS += -DLLVM_DIR=$(HOST_DIR)/lib/cmake/llvm \
-DCLANG_DEFAULT_LINKER=$(TARGET_LD)
@@ -59,6 +64,12 @@ CLANG_CONF_OPTS += -DLLVM_DIR=$(STAGING_DIR)/usr/lib/cmake/llvm \
-DCLANG_TABLEGEN:FILEPATH=$(HOST_DIR)/bin/clang-tblgen \
-DLLVM_TABLEGEN_EXE:FILEPATH=$(HOST_DIR)/bin/llvm-tblgen
HOST_CLANG_CONF_OPTS += -DLLVM_COMMON_CMAKE_UTILS=$(HOST_DIR)/lib/cmake/llvm
CLANG_CONF_OPTS += -DLLVM_COMMON_CMAKE_UTILS=$(HOST_DIR)/lib/cmake/llvm
+HOST_CLANG_CONF_OPTS += -DLLVM_MAIN_SRC_DIR=$(BUILD_DIR)/llvm-$(LLVM_PROJECT_VERSION)
+CLANG_CONF_OPTS += -DLLVM_MAIN_SRC_DIR=$(BUILD_DIR)/llvm-$(LLVM_PROJECT_VERSION)
# Clang can't be used as compiler on the target since there are no
# development files (headers) and other build tools. So remove clang
# binaries and some other unnecessary files from target.
@@ -102,7 +113,15 @@ CLANG_CONF_OPTS += -DLLVM_DYLIB_COMPONENTS=all
# installation directory to the external toolchain installation directory in order to
# not hardcode the toolchain absolute path.
ifeq ($(BR2_TOOLCHAIN_EXTERNAL),y)
HOST_CLANG_CONF_OPTS += -DGCC_INSTALL_PREFIX:PATH=`realpath --relative-to=$(HOST_DIR)/bin/ $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)`
define HOST_CLANG_INSTALL_CONFIG_FILE
mkdir -p $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)
touch $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/$(GNU_TARGET_NAME).cfg
echo "--gcc-install-dir=$(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/lib/gcc/$$(ls $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/lib/gcc/)/$$(ls $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/lib/gcc/$$(ls $(TOOLCHAIN_EXTERNAL_INSTALL_DIR)/lib/gcc/)/)" > $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/$(GNU_TARGET_NAME).cfg
echo "--target=$(GNU_TARGET_NAME)" >> $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/$(GNU_TARGET_NAME).cfg
endef
HOST_CLANG_POST_INSTALL_HOOKS += HOST_CLANG_INSTALL_CONFIG_FILE
HOST_CLANG_TOOLCHAIN_WRAPPER_ARGS += -DBR_CLANG_CONFIG_FILE="\"--config=$(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/$(GNU_TARGET_NAME).cfg\""
endif
define HOST_CLANG_INSTALL_WRAPPER_AND_SIMPLE_SYMLINKS

View File

@@ -4,6 +4,7 @@ config BR2_PACKAGE_COMPILER_RT
depends on BR2_TOOLCHAIN_USES_GLIBC # asan lib requires
depends on BR2_HOST_GCC_AT_LEAST_7 # host-clang
select BR2_PACKAGE_LIBXCRYPT
select BR2_HOST_CMAKE_AT_LEAST_3_20 # cmake required version at least 3.20
help
A collection of runtime libraries primarily used by clang and
llvm to provide builtins, sanitizer runtimes, and profiling

View File

@@ -1,3 +1,3 @@
# Locally computed:
sha256 353832c66cce60931ea0413b3c071faad59eefa70d02c97daa8978b15e4b25b7 compiler-rt-15.0.7.src.tar.xz
sha256 bdcebca627f377ffcff5405cd5694efbddb14c89ad7d0ea481b1646a42bfeca3 compiler-rt-20.1.5.src.tar.xz
sha256 1a8f1058753f1ba890de984e48f0242a3a5c29a6a8f2ed9fd813f36985387e8d LICENSE.TXT

View File

@@ -20,7 +20,8 @@ COMPILER_RT_CONF_OPTS = \
-DCOMPILER_RT_STANDALONE_BUILD=ON \
-DCOMPILER_RT_DEFAULT_TARGET_TRIPLE=$(GNU_TARGET_NAME) \
-DLLVM_CONFIG_PATH=$(HOST_DIR)/bin/llvm-config \
-DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm
-DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm \
-DLLVM_COMMON_CMAKE_UTILS=$(HOST_DIR)/lib/cmake/llvm
# The installation of the target runtime libraries defaults to DESTDIR, however
# host-clang resources directory needs a link so Clang can find the runtime
@@ -29,9 +30,9 @@ COMPILER_RT_CONF_OPTS = \
# assumed, as compiler-rt is usually build at the same time as Clang and not
# standalone.
define COMPILER_RT_SETUP_RUNTIME_LIBS
mkdir -p $(HOST_DIR)/lib/clang/$(HOST_CLANG_VERSION)/lib
ln -sf ../../../../$(GNU_TARGET_NAME)/sysroot/usr/lib/linux $(HOST_DIR)/lib/clang/$(HOST_CLANG_VERSION)/lib/linux
ln -sf ../../../../$(GNU_TARGET_NAME)/sysroot/usr/share $(HOST_DIR)/lib/clang/$(HOST_CLANG_VERSION)/share
mkdir -p $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/lib
ln -sf ../../../../$(GNU_TARGET_NAME)/sysroot/usr/lib/linux $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/lib/linux
ln -sf ../../../../$(GNU_TARGET_NAME)/sysroot/usr/share $(HOST_DIR)/lib/clang/$(CLANG_VERSION_MAJOR)/share
endef
COMPILER_RT_POST_INSTALL_STAGING_HOOKS += COMPILER_RT_SETUP_RUNTIME_LIBS

View File

@@ -1,71 +1,32 @@
From 495491e9d53bfb184c15753b5187e4bb55b19511 Mon Sep 17 00:00:00 2001
From: Matt Weber <matthew.weber@rockwellcollins.com>
Date: Tue, 9 Mar 2021 15:55:17 -0600
From a435f3c9318935ba29b04dabe7342cd6160711e0 Mon Sep 17 00:00:00 2001
From: El Mehdi YOUNES <elmehdi.younes@smile.fr>
Date: Thu, 15 May 2025 10:02:12 +0200
Subject: [PATCH] support out of tree build
(1) The package has a prepare_builtins tool which is built
prepare_builtins tool is built
but not placed in the path for later use in the build. This
fix allows the later build steps to use the binary in-place.
(2) With cmake, find_file() when used for non-host builds is
limited by CMAKE_FIND_ROOT_PATH* scope.
Upstream: Not submitted
In $(HOST_DIR)/share/buildroot/toolchainfile.cmake we set the
following target settings for CMAKE_FIND_ROOT_PATH* which
limit the scope.
set(CMAKE_FIND_ROOT_PATH "${RELOCATED_HOST_DIR}/aarch64-buildroot-linux-gnu/sysroot")
set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
Signed-off-by: Matthew Weber <matthew.weber@rockwellcollins.com>
Signed-off-by: El Mehdi YOUNES <elmehdi.younes@smile.fr>
---
CMakeLists.txt | 2 +-
cmake/CMakeDetermineCLCCompiler.cmake | 4 ++++
cmake/CMakeDetermineLLAsmCompiler.cmake | 4 ++++
3 files changed, 9 insertions(+), 1 deletion(-)
libclc/CMakeLists.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 9472f19..a784519 100644
index d651a9bf506b..18bd7efe8217 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -279,7 +279,7 @@ foreach( t ${LIBCLC_TARGETS_TO_BUILD} )
# Add prepare target
add_custom_command( OUTPUT "${obj_suffix}"
- COMMAND prepare_builtins -o
+ COMMAND ./prepare_builtins -o
"${obj_suffix}"
"builtins.opt.${obj_suffix}"
DEPENDS "opt.${obj_suffix}"
diff --git a/cmake/CMakeDetermineCLCCompiler.cmake b/cmake/CMakeDetermineCLCCompiler.cmake
index 94d85d9..5de6a48 100644
--- a/cmake/CMakeDetermineCLCCompiler.cmake
+++ b/cmake/CMakeDetermineCLCCompiler.cmake
@@ -12,7 +12,7 @@ mark_as_advanced(CMAKE_CLC_ARCHIVE)
set(CMAKE_CLC_COMPILER_ENV_VAR "CLC_COMPILER")
set(CMAKE_CLC_ARCHIVE_ENV_VAR "CLC_LINKER")
-find_file(clc_comp_in CMakeCLCCompiler.cmake.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH})
+set(clc_comp_in "${CMAKE_MODULE_PATH}/CMakeCLCCompiler.cmake.in" )
# configure all variables set in this file
configure_file(${clc_comp_in} ${CMAKE_PLATFORM_INFO_DIR}/CMakeCLCCompiler.cmake @ONLY)
mark_as_advanced(clc_comp_in)
diff --git a/cmake/CMakeDetermineLLAsmCompiler.cmake b/cmake/CMakeDetermineLLAsmCompiler.cmake
index 1c424c7..dd3bfb6 100644
--- a/cmake/CMakeDetermineLLAsmCompiler.cmake
+++ b/cmake/CMakeDetermineLLAsmCompiler.cmake
@@ -18,7 +18,7 @@ mark_as_advanced(CMAKE_LLAsm_ARCHIVE)
set(CMAKE_LLAsm_PREPROCESSOR_ENV_VAR "LL_PREPROCESSOR")
set(CMAKE_LLAsm_COMPILER_ENV_VAR "LL_ASSEMBLER")
set(CMAKE_LLAsm_ARCHIVE_ENV_VAR "LL_LINKER")
-find_file(ll_comp_in CMakeLLAsmCompiler.cmake.in PATHS ${CMAKE_ROOT}/Modules ${CMAKE_MODULE_PATH})
+set(ll_comp_in "${CMAKE_MODULE_PATH}/CMakeLLAsmCompiler.cmake.in" )
# configure all variables set in this file
configure_file(${ll_comp_in} ${CMAKE_PLATFORM_INFO_DIR}/CMakeLLAsmCompiler.cmake @ONLY)
mark_as_advanced(ll_comp_in)
@@ -180,7 +180,7 @@ set(LLVM_LINK_COMPONENTS
)
if( LIBCLC_STANDALONE_BUILD )
add_llvm_executable( prepare_builtins utils/prepare-builtins.cpp )
- set( prepare_builtins_exe prepare_builtins )
+ set( prepare_builtins_exe ./prepare_builtins )
set( prepare_builtins_target prepare_builtins )
else()
add_llvm_utility( prepare_builtins utils/prepare-builtins.cpp )
--
2.17.1
2.43.0

View File

@@ -2,6 +2,7 @@ config BR2_PACKAGE_LIBCLC
bool "libclc"
depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS
depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm
select BR2_HOST_CMAKE_AT_LEAST_3_20 # cmake required version at least 3.20
help
libclc is an open source, BSD licensed implementation of
the library requirements of the OpenCL C programming language,

View File

@@ -1,3 +1,3 @@
# locally calculated
sha256 35731fea7be224f21acf5bf3cd9f0ed058bf4ada5eceaf7f10ee96e139bd3389 libclc-15.0.7.src.tar.xz
sha256 7aabcc31eff12bc54778c38752192939df8d983002c961cb1ac97f57e50ccff1 libclc-20.1.5.src.tar.xz
sha256 3c536c052db9afd997809e38785c9f2a9e54e2892330fa7c5b438e18a7413479 LICENSE.TXT

View File

@@ -27,8 +27,6 @@ LIBCLC_CONF_OPTS = \
-DCMAKE_SYSROOT="" \
-DCMAKE_C_COMPILER_FORCED=ON \
-DCMAKE_CXX_COMPILER_FORCED=ON \
-DCMAKE_CLC_COMPILER_FORCED=ON \
-DCMAKE_LLAsm_COMPILER_FORCED=ON \
-DCMAKE_INSTALL_DATADIR="share" \
-DCMAKE_FIND_ROOT_PATH="$(HOST_DIR)" \
-DCMAKE_C_FLAGS="$(HOST_CFLAGS)" \
@@ -38,7 +36,8 @@ LIBCLC_CONF_OPTS = \
-DCMAKE_MODULE_LINKER_FLAGS="$(HOST_LDFLAGS)" \
-DCMAKE_C_COMPILER="$(CMAKE_HOST_C_COMPILER)" \
-DCMAKE_CXX_COMPILER="$(CMAKE_HOST_CXX_COMPILER)" \
-DLLVM_CONFIG="$(HOST_DIR)/bin/llvm-config"
-DLLVM_CMAKE_DIR="$(HOST_DIR)/lib/cmake/llvm" \
-DLIBCLC_CUSTOM_LLVM_TOOLS_BINARY_DIR="$(HOST_DIR)/bin"
HOST_LIBCLC_CONF_OPTS = \
-DLIBCLC_TARGETS_TO_BUILD=spirv64-mesa3d-

View File

@@ -2,6 +2,7 @@ config BR2_PACKAGE_HOST_LLD
bool "host lld"
depends on BR2_PACKAGE_LLVM_ARCH_SUPPORTS # llvm
depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm
select BR2_HOST_CMAKE_AT_LEAST_3_20 # cmake required version at least 3.20
help
LLD is a linker from the LLVM project that is a drop-in
replacement for system linkers, and runs much faster than

View File

@@ -1,3 +1,3 @@
# locally calculated
sha256 dba5c70c3fe88b3a38b9180df82fbc9d1dfd55d68f41fddd6a90f9e17f8e5df9 lld-15.0.7.src.tar.xz
sha256 4e084130cc51a8b900737cec40578eab867f7e8017121409940d96550784ff12 lld-20.1.5.src.tar.xz
sha256 f7891568956e34643eb6a0db1462db30820d40d7266e2a78063f2fe233ece5a0 LICENSE.TXT

View File

@@ -15,6 +15,8 @@ HOST_LLD_DEPENDENCIES = host-llvm host-llvm-libunwind
# build as static libs as is done in llvm & clang
HOST_LLD_CONF_OPTS += -DBUILD_SHARED_LIBS=OFF
HOST_LLD_CONF_OPTS += -DLLVM_COMMON_CMAKE_UTILS=$(HOST_DIR)/lib/cmake/llvm
# GCC looks for tools in a different path from LLD's default installation path
define HOST_LLD_CREATE_SYMLINKS
mkdir -p $(HOST_DIR)/$(GNU_TARGET_NAME)/bin

View File

@@ -1,2 +1,2 @@
# locally calculated
sha256 8986f29b634fdaa9862eedda78513969fe9788301c9f2d938f4c10a3e7a3e7ea cmake-15.0.7.src.tar.xz
sha256 1b5abaa2686c6c0e1f394113d0b2e026ff3cb9e11b6a2294c4f3883f1b02c89c cmake-20.1.5.src.tar.xz

View File

@@ -10,8 +10,9 @@ LLVM_CMAKE_SOURCE = cmake-$(LLVM_CMAKE_VERSION).src.tar.xz
LLVM_CMAKE_LICENSE = Apache-2.0 with exceptions
define HOST_LLVM_CMAKE_INSTALL_CMDS
mkdir -p $(HOST_DIR)/lib/cmake/llvm
cp -Rv $(@D)/Modules/* $(HOST_DIR)/lib/cmake/llvm
mkdir -p $(HOST_DIR)/lib/cmake/llvm/Modules
cp -Rv $(@D)/Modules/* $(HOST_DIR)/lib/cmake/llvm/Modules
ln -sf $(HOST_DIR)/lib/cmake/llvm/Modules/* $(HOST_DIR)/lib/cmake/llvm/
endef
$(eval $(host-generic-package))

View File

@@ -1,3 +1,3 @@
# locally computed
sha256 406d199ae3a16add84017f40458a5e7c31f9412937fcb518715af0a0eeafbc0c libunwind-15.0.7.src.tar.xz
sha256 f0555603222189d8d2ff2d02747c63a3bbeb291fa72ce042c1a6d26399150baf libunwind-20.1.5.src.tar.xz
sha256 b5efebcaca80879234098e52d1725e6d9eb8fb96a19fce625d39184b705f7b6d LICENSE.TXT

View File

@@ -11,9 +11,8 @@ LLVM_LIBUNWIND_LICENSE = Apache-2.0 with exceptions
LLVM_LIBUNWIND_LICENSE_FILES = LICENSE.TXT
LLVM_LIBUNWIND_SUPPORTS_IN_SOURCE_BUILD = NO
HOST_LLVM_LIBUNWIND_DEPENDENCIES = host-llvm-cmake
HOST_LLVM_LIBUNWIND_DEPENDENCIES = host-llvm-cmake host-llvm-runtimes
HOST_LLVM_LIBUNWIND_CONF_OPTS += \
-DCMAKE_MODULE_PATH="$(HOST_DIR)/lib/cmake/llvm" \
-DLIBUNWIND_INSTALL_HEADERS=ON
-DCMAKE_MODULE_PATH="$(HOST_DIR)/lib/cmake/llvm"
$(eval $(host-cmake-package))

View File

@@ -4,8 +4,8 @@
#
################################################################################
LLVM_PROJECT_VERSION_MAJOR = 15
LLVM_PROJECT_VERSION = $(LLVM_PROJECT_VERSION_MAJOR).0.7
LLVM_PROJECT_VERSION_MAJOR = 20
LLVM_PROJECT_VERSION = $(LLVM_PROJECT_VERSION_MAJOR).1.5
LLVM_PROJECT_SITE = https://github.com/llvm/llvm-project/releases/download/llvmorg-$(LLVM_PROJECT_VERSION)
include $(sort $(wildcard package/llvm-project/*/*.mk))

View File

@@ -1,2 +1,2 @@
# locally calculated
sha256 6394d8f111288c918421756037c10c4f8471325992e37c44cf8811b4e3dde00b runtimes-20.1.3.src.tar.xz
sha256 8b3255668594ca3450ac5c041ac52c3c33300873d033cda49529e7fe1d4257e6 runtimes-20.1.5.src.tar.xz

View File

@@ -4,14 +4,14 @@
#
################################################################################
LLVM_RUNTIMES_VERSION = 20.1.3
LLVM_RUNTIMES_VERSION = $(LLVM_PROJECT_VERSION)
LLVM_RUNTIMES_SITE = $(LLVM_PROJECT_SITE)
LLVM_RUNTIMES_SOURCE = runtimes-$(LLVM_RUNTIMES_VERSION).src.tar.xz
LLVM_RUNTIMES_LICENSE = Apache-2.0 with exceptions
define HOST_LLVM_RUNTIMES_INSTALL_CMDS
mkdir -p $(HOST_DIR)/lib/cmake/llvm/Modules
cp -Rv $(@D)/cmake/Modules/* $(HOST_DIR)/lib/cmake/llvm
mkdir -p $(HOST_DIR)/lib/cmake/llvm/Modules
cp -Rv $(@D)/cmake/Modules/* $(HOST_DIR)/lib/cmake/llvm
endef
$(eval $(host-generic-package))

View File

@@ -1,35 +0,0 @@
From 51d88407c1ae86c3b3c7b497d049f8980f2a3510 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Fri, 2 Aug 2024 23:07:21 +0100
Subject: [PATCH] [ADT] Add `<cstdint>` to SmallVector (#101761)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
SmallVector uses `uint32_t`, `uint64_t` without including `<cstdint>`
which fails to build w/ GCC 15 after a change in libstdc++ [0]
[0] https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=3a817a4a5a6d94da9127af3be9f84a74e3076ee2
Gentoo-Component: llvm
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Upstream: https://bugs.gentoo.org/939498
---
include/llvm/ADT/SmallVector.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/llvm/ADT/SmallVector.h b/include/llvm/ADT/SmallVector.h
index e34702bdbb3c..1c0f3465b2a9 100644
--- a/include/llvm/ADT/SmallVector.h
+++ b/include/llvm/ADT/SmallVector.h
@@ -19,6 +19,7 @@
#include <algorithm>
#include <cassert>
#include <cstddef>
+#include <cstdint>
#include <cstdlib>
#include <cstring>
#include <functional>
--
2.46.0

View File

@@ -0,0 +1,49 @@
From 255068deb7f3d18837ed30e739aa92c111ab450a Mon Sep 17 00:00:00 2001
From: El Mehdi YOUNES <elmehdi.younes@smile.fr>
Date: Sat, 10 May 2025 12:55:07 +0200
Subject: [PATCH] Fix standalone build for llvm
Upstream commit 9dd01a5241dc ("Harmonize cmake_policy() across standalone builds of all projects")
moved the `cmake_policy()` settings from `llvm/CMakeLists.txt` into a shared
`cmake/modules/CMakePolicy.cmake`, and included it from all relevant projects
(Clang, LLD, LLDB, etc.) to harmonize standalone builds.
However, in `llvm/CMakeLists.txt`, unlike other components, the line:
set(LLVM_COMMON_CMAKE_UTILS ...)
was left **without** the usual:
if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
This prevents external build systems (e.g., when using separate source archives)
from overriding the `LLVM_COMMON_CMAKE_UTILS` variable, since the value is
always reset unconditionally.
This patch adds the missing `if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)` guard,
in the same way as it is already done in Clang, LLD, etc., to make
`LLVM_COMMON_CMAKE_UTILS` properly overridable.
Upstream: Not submitted
Signed-off-by: El Mehdi YOUNES <elmehdi.younes@smile.fr>
---
llvm/CMakeLists.txt | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index f5293e866324..d861233f299f 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -4,7 +4,10 @@ cmake_minimum_required(VERSION 3.20.0)
include(CMakeDependentOption)
-set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
+if(NOT DEFINED LLVM_COMMON_CMAKE_UTILS)
+ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake)
+endif()
+
include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake
NO_POLICY_SCOPE)
--
2.49.0

View File

@@ -1,31 +0,0 @@
From 000f92beb459096534a7bfaa8c5e99d77b7594c1 Mon Sep 17 00:00:00 2001
From: Sam James <sam@gentoo.org>
Date: Sat, 3 Aug 2024 06:36:43 +0100
Subject: [PATCH] [AMDGPU] Include `<cstdint>` in AMDGPUMCTargetDesc
(#101766)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Gentoo-Component: llvm
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Upstream: https://bugs.gentoo.org/939498
---
lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h b/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h
index c2e2563c3989..53aac8934100 100644
--- a/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h
+++ b/lib/Target/AMDGPU/MCTargetDesc/AMDGPUMCTargetDesc.h
@@ -15,6 +15,7 @@
#ifndef LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCTARGETDESC_H
#define LLVM_LIB_TARGET_AMDGPU_MCTARGETDESC_AMDGPUMCTARGETDESC_H
+#include <cstdint>
#include <memory>
namespace llvm {
--
2.46.0

View File

@@ -1,31 +0,0 @@
From 67fc0069c285b37f09d408aae43c37b8afdf11f7 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Micha=C5=82=20G=C3=B3rny?= <mgorny@gentoo.org>
Date: Sat, 3 Aug 2024 12:01:20 +0200
Subject: [PATCH] Another gcc-15 fix from Sam James
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Bug: https://bugs.gentoo.org/937164
Gentoo-Component: llvm
Signed-off-by: Michał Górny <mgorny@gentoo.org>
Signed-off-by: James Hilliard <james.hilliard1@gmail.com>
Upstream: https://bugs.gentoo.org/939498
---
lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h b/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
index d0530bd4d650..10b59462aebe 100644
--- a/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
+++ b/lib/Target/X86/MCTargetDesc/X86MCTargetDesc.h
@@ -13,6 +13,7 @@
#ifndef LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H
#define LLVM_LIB_TARGET_X86_MCTARGETDESC_X86MCTARGETDESC_H
+#include <cstdint>
#include <memory>
#include <string>
--
2.46.0

View File

@@ -24,6 +24,7 @@ config BR2_PACKAGE_LLVM
depends on !BR2_STATIC_LIBS
depends on BR2_USE_WCHAR # std::wstring
depends on BR2_HOST_GCC_AT_LEAST_7 # host-llvm
select BR2_HOST_CMAKE_AT_LEAST_3_20 # cmake required version at least 3.20
help
The LLVM Project is a collection of modular and reusable
compiler and toolchain technologies.

View File

@@ -1,3 +1,3 @@
# locally calculated
sha256 4ad8b2cc8003c86d0078d15d987d84e3a739f24aae9033865c027abae93ee7a4 llvm-15.0.7.src.tar.xz
sha256 9a9a80ca4c0d902531f2b43e9e4d6c36b57cdd5702430e0b54567bf273bd32c1 llvm-20.1.5.src.tar.xz
sha256 8d85c1057d742e597985c7d4e6320b015a9139385cff4cbae06ffc0ebe89afee LICENSE.TXT

View File

@@ -20,11 +20,19 @@ LLVM_DEPENDENCIES = host-llvm
HOST_LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm
LLVM_CONF_OPTS += -DCMAKE_MODULE_PATH=$(HOST_DIR)/lib/cmake/llvm
HOST_LLVM_CONF_OPTS += -DLLVM_COMMON_CMAKE_UTILS=$(HOST_DIR)/lib/cmake/llvm
LLVM_CONF_OPTS += -DLLVM_COMMON_CMAKE_UTILS=$(HOST_DIR)/lib/cmake/llvm
# Don't build clang libcxx libcxxabi lldb compiler-rt lld polly as llvm subprojects
# This flag assumes that projects are checked out side-by-side and not nested
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS=""
LLVM_CONF_OPTS += -DLLVM_ENABLE_PROJECTS=""
# LLVM_ENABLE_RUNTIMES for runtime components libcxx etc
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_RUNTIMES=""
LLVM_CONF_OPTS += -DLLVM_ENABLE_RUNTIMES=""
HOST_LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF)
LLVM_CONF_OPTS += -DLLVM_CCACHE_BUILD=$(if $(BR2_CCACHE),ON,OFF)
@@ -151,6 +159,10 @@ LLVM_CONF_OPTS += -DLLVM_ENABLE_Z3_SOLVER=OFF
HOST_LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON
LLVM_CONF_OPTS += -DLLVM_ENABLE_PIC=ON
# Disable TFTLite integration
HOST_LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
LLVM_CONF_OPTS += -DLLVM_HAVE_TFLITE=""
# Default is Debug build, which requires considerably more disk space and
# build time. Release build is selected for host and target because the linker
# can run out of memory in Debug mode.
@@ -261,7 +273,6 @@ HOST_LLVM_CONF_OPTS += \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_GO_TESTS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF
LLVM_CONF_OPTS += \
@@ -273,7 +284,6 @@ LLVM_CONF_OPTS += \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INCLUDE_DOCS=OFF \
-DLLVM_INCLUDE_GO_TESTS=OFF \
-DLLVM_INCLUDE_TESTS=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF

View File

@@ -1,3 +1,3 @@
# locally calculated
sha256 0a00a72a5b004eeb73f9c96c9c6ba2d6de232cbf3c22a7b322047604d24402ba spirv-llvm-translator-v15.0.0-46-ge82ecc2bd7295604fcf1824e47c95fa6a09c6e63.tar.gz
sha256 ca89c35cbc55cfe69ab9fa1a2f3ee585d30cb285e01e2cae309fe0e1f1dfd79e spirv-llvm-translator-v20.1.2-7-g834db1a1985ac36d5a3e1b4b34dc1ca3f919ad5b.tar.gz
sha256 e3bc36440fc927c62d5cc24efeefe225a14d4e34ffeb0c92e430625cce9ee444 LICENSE.TXT

View File

@@ -5,8 +5,8 @@
################################################################################
# Generate version string using:
# git describe --tags --match 'v15*' --abbrev=40 origin/llvm_release_150
SPIRV_LLVM_TRANSLATOR_VERSION = v15.0.0-46-ge82ecc2bd7295604fcf1824e47c95fa6a09c6e63
# git describe --tags --match 'v20*' --abbrev=40 origin/llvm_release_200
SPIRV_LLVM_TRANSLATOR_VERSION = v20.1.2-7-g834db1a1985ac36d5a3e1b4b34dc1ca3f919ad5b
SPIRV_LLVM_TRANSLATOR_SITE = $(call github,KhronosGroup,SPIRV-LLVM-Translator,$(SPIRV_LLVM_TRANSLATOR_VERSION))
SPIRV_LLVM_TRANSLATOR_LICENSE = NCSA
SPIRV_LLVM_TRANSLATOR_LICENSE_FILES = LICENSE.TXT

View File

@@ -62,6 +62,9 @@ static char *predef_args[] = {
#endif
path,
"--sysroot", sysroot,
#ifdef BR_CLANG_CONFIG_FILE
BR_CLANG_CONFIG_FILE,
#endif
#ifdef BR_ABI
"-mabi=" BR_ABI,
#endif