summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRoss Burton <ross.burton@arm.com>2025-09-24 13:08:32 +0100
committerRichard Purdie <richard.purdie@linuxfoundation.org>2025-09-25 11:09:04 +0100
commitc22230e15f8bc551e3fc5972483595a1866d0c99 (patch)
treef5a71dd4f5bc240cfe479a75fd308c1a1b9381e9
parent6f089b930ef5bd831819f4cb43a1b90cc1cf3b0e (diff)
downloadpoky-c22230e15f8bc551e3fc5972483595a1866d0c99.tar.gz
clang: improve tablegen installation
Backport a patch from upstream to install lldb-tblgen, and change the llvm-tblgen-native recipe to use `cmake --install` instead of copying the binaries. This ensures that CMake does any post-install steps that are needed, and we don't install binaries that have eg RPATHs pointing at the build tree. (From OE-Core rev: 93051e8730263cfc23e1230015a4789dac4914de) Signed-off-by: Ross Burton <ross.burton@arm.com> Signed-off-by: Richard Purdie <richard.purdie@linuxfoundation.org>
-rw-r--r--meta/recipes-devtools/clang/clang/0001-Install-lldb-tblgen.patch29
-rw-r--r--meta/recipes-devtools/clang/common.inc1
-rw-r--r--meta/recipes-devtools/clang/llvm-tblgen-native_git.bb8
3 files changed, 33 insertions, 5 deletions
diff --git a/meta/recipes-devtools/clang/clang/0001-Install-lldb-tblgen.patch b/meta/recipes-devtools/clang/clang/0001-Install-lldb-tblgen.patch
new file mode 100644
index 0000000000..c974167589
--- /dev/null
+++ b/meta/recipes-devtools/clang/clang/0001-Install-lldb-tblgen.patch
@@ -0,0 +1,29 @@
1From 7de6d35aeea2d06b1597539c47f6af30d2798d73 Mon Sep 17 00:00:00 2001
2From: Ross Burton <ross.burton@arm.com>
3Date: Fri, 19 Sep 2025 16:33:55 +0100
4Subject: [PATCH] Install lldb-tblgen
5
6In keeping with the llvm-tblgen and clang-tblgen binaries, allow
7lldb-tblgen to be installed by cmake so that cross builds are easier.
8
9Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/0ce6052a0c08035a07fcabb05271be7313308db3]
10Signed-off-by: Ross Burton <ross.burton@arm.com>
11---
12 lldb/utils/TableGen/CMakeLists.txt | 1 +
13 1 file changed, 1 insertion(+)
14
15diff --git a/lldb/utils/TableGen/CMakeLists.txt b/lldb/utils/TableGen/CMakeLists.txt
16index 0ac010bcda35..ce96dddd4420 100644
17--- a/lldb/utils/TableGen/CMakeLists.txt
18+++ b/lldb/utils/TableGen/CMakeLists.txt
19@@ -8,6 +8,7 @@ if (NOT DEFINED LLDB_TABLEGEN_EXE)
20 set(LLVM_LINK_COMPONENTS Support)
21
22 add_tablegen(lldb-tblgen LLDB
23+ DESTINATION "${CMAKE_INSTALL_BINDIR}"
24 LLDBOptionDefEmitter.cpp
25 LLDBPropertyDefEmitter.cpp
26 LLDBTableGen.cpp
27--
282.43.0
29
diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc
index e01eb2d287..512bf1dd02 100644
--- a/meta/recipes-devtools/clang/common.inc
+++ b/meta/recipes-devtools/clang/common.inc
@@ -60,6 +60,7 @@ SRC_URI = "\
60 file://0037-Revert-libc-Remap-headers-in-the-debug-info-when-bui.patch \ 60 file://0037-Revert-libc-Remap-headers-in-the-debug-info-when-bui.patch \
61 file://0038-Prevent-revisiting-block-when-searching-for-noreturn.patch \ 61 file://0038-Prevent-revisiting-block-when-searching-for-noreturn.patch \
62 file://0039-Only-build-c-index-test-when-clang-tests-are-include.patch \ 62 file://0039-Only-build-c-index-test-when-clang-tests-are-include.patch \
63 file://0001-Install-lldb-tblgen.patch \
63" 64"
64# Fallback to no-PIE if not set 65# Fallback to no-PIE if not set
65GCCPIE ??= "" 66GCCPIE ??= ""
diff --git a/meta/recipes-devtools/clang/llvm-tblgen-native_git.bb b/meta/recipes-devtools/clang/llvm-tblgen-native_git.bb
index be04c1aa4d..8023d74578 100644
--- a/meta/recipes-devtools/clang/llvm-tblgen-native_git.bb
+++ b/meta/recipes-devtools/clang/llvm-tblgen-native_git.bb
@@ -16,12 +16,10 @@ OECMAKE_SOURCEPATH = "${S}/llvm"
16 16
17EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='llvm;clang;lldb'" 17EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='llvm;clang;lldb'"
18 18
19BINARIES = "llvm-min-tblgen llvm-tblgen clang-tblgen lldb-tblgen" 19OECMAKE_TARGET_COMPILE = "llvm-tblgen clang-tblgen lldb-tblgen"
20
21OECMAKE_TARGET_COMPILE = "${BINARIES}"
22 20
23do_install() { 21do_install() {
24 for f in ${BINARIES}; do 22 for TARGET in ${OECMAKE_TARGET_COMPILE}; do
25 install -D ${B}/bin/$f ${D}${bindir}/$f 23 DESTDIR=${D} cmake --install ${B} --component $TARGET
26 done 24 done
27} 25}