mirror of
https://gitlab.com/buildroot.org/buildroot.git
synced 2026-08-01 21:23:51 -09:00
e29dae109a217636381acd4f7be615a8744fe675
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]f8409af354Signed-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>
…
…
…
Buildroot is a simple, efficient and easy-to-use tool to generate embedded Linux systems through cross-compilation. The documentation can be found in docs/manual. You can generate a text document with 'make manual-text' and read output/docs/manual/manual.text. Online documentation can be found at http://buildroot.org/docs.html To build and use the buildroot stuff, do the following: 1) run 'make menuconfig' 2) select the target architecture and the packages you wish to compile 3) run 'make' 4) wait while it compiles 5) find the kernel, bootloader, root filesystem, etc. in output/images You do not need to be root to build or run buildroot. Have fun! Buildroot comes with a basic configuration for a number of boards. Run 'make list-defconfigs' to view the list of provided configurations. Please feed suggestions, bug reports, insults, and bribes back to the buildroot mailing list: buildroot@buildroot.org You can also find us on #buildroot on OFTC IRC. If you would like to contribute patches, please read https://buildroot.org/manual.html#submitting-patches
Description
Languages
Makefile
62.6%
Python
18.8%
C
8.5%
Shell
6.2%
PHP
1.4%
Other
2.1%