From patchwork Wed Sep 24 12:08:28 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 70918 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 81103CAC5B0 for ; Wed, 24 Sep 2025 12:08:37 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.10848.1758715717200663094 for ; Wed, 24 Sep 2025 05:08:37 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id C41A3106F for ; Wed, 24 Sep 2025 05:08:28 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8D6D43F66E for ; Wed, 24 Sep 2025 05:08:36 -0700 (PDT) From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH v4 1/7] clang: improve opt-viewer PACKAGECONFIG Date: Wed, 24 Sep 2025 13:08:28 +0100 Message-ID: <20250924120834.2886320-1-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 24 Sep 2025 12:08:37 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223967 Instead of patching the python module detection, we can use the hidden option LLVM_TOOL_OPT_VIEWER_BUILD. Signed-off-by: Ross Burton --- ...-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch | 70 ------------------- meta/recipes-devtools/clang/clang_git.bb | 2 +- meta/recipes-devtools/clang/common.inc | 1 - 3 files changed, 1 insertion(+), 72 deletions(-) delete mode 100644 meta/recipes-devtools/clang/clang/0040-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch diff --git a/meta/recipes-devtools/clang/clang/0040-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch b/meta/recipes-devtools/clang/clang/0040-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch deleted file mode 100644 index 4e93756af92..00000000000 --- a/meta/recipes-devtools/clang/clang/0040-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch +++ /dev/null @@ -1,70 +0,0 @@ -From c2b576a49ed1b83def75578f7d2b2e8c3c54e60f Mon Sep 17 00:00:00 2001 -From: Khem Raj -Date: Sat, 2 Aug 2025 17:58:20 -0700 -Subject: [PATCH] [opt-viewer] Allow users to set LLVM_HAVE_OPT_VIEWER_MODULES - manually from the CMake - -Check right before setting LLVM_HAVE_OPT_VIEWER_MODULES -so that if the user specifies the variable on the commandline -it takes precedence. If not, fall back to the old logic - -Upstream-Status: Submitted [https://github.com/llvm/llvm-project/pull/151845] -Signed-off-by: Khem Raj ---- - llvm/CMakeLists.txt | 2 ++ - llvm/cmake/config-ix.cmake | 13 ++++++++++--- - llvm/include/llvm/Config/config.h.cmake | 3 +++ - 3 files changed, 15 insertions(+), 3 deletions(-) - -diff --git a/llvm/CMakeLists.txt b/llvm/CMakeLists.txt -index cb945b578e46..e4ed9eca6014 100644 ---- a/llvm/CMakeLists.txt -+++ b/llvm/CMakeLists.txt -@@ -7,6 +7,8 @@ set(LLVM_COMMON_CMAKE_UTILS ${CMAKE_CURRENT_SOURCE_DIR}/../cmake) - include(${LLVM_COMMON_CMAKE_UTILS}/Modules/CMakePolicy.cmake - NO_POLICY_SCOPE) - -+option(LLVM_HAVE_OPT_VIEWER_MODULES "Enable opt-viewer modules support" ON) -+ - # Builds with custom install names and installation rpath setups may not work - # in the build tree. Allow these cases to use CMake's default build tree - # behavior by setting `LLVM_NO_INSTALL_NAME_DIR_FOR_BUILD_TREE` to do this. -diff --git a/llvm/cmake/config-ix.cmake b/llvm/cmake/config-ix.cmake -index a8e4e5a63244..17af3dc1e93f 100644 ---- a/llvm/cmake/config-ix.cmake -+++ b/llvm/cmake/config-ix.cmake -@@ -805,10 +805,17 @@ foreach(module ${PYTHON_MODULES}) - find_python_module(${module}) - endforeach() - --if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND) -- set (LLVM_HAVE_OPT_VIEWER_MODULES 1) -+if(NOT DEFINED LLVM_HAVE_OPT_VIEWER_MODULES) -+ if(PY_PYGMENTS_FOUND AND PY_PYGMENTS_LEXERS_C_CPP_FOUND AND PY_YAML_FOUND) -+ set (LLVM_HAVE_OPT_VIEWER_MODULES 1) -+ else() -+ set (LLVM_HAVE_OPT_VIEWER_MODULES 0) -+ endif() -+elseif(LLVM_HAVE_OPT_VIEWER_MODULES) -+ # Use the user-provided value -+ set(LLVM_HAVE_OPT_VIEWER_MODULES 1) - else() -- set (LLVM_HAVE_OPT_VIEWER_MODULES 0) -+ set(LLVM_HAVE_OPT_VIEWER_MODULES 0) - endif() - - function(llvm_get_host_prefixes_and_suffixes) -diff --git a/llvm/include/llvm/Config/config.h.cmake b/llvm/include/llvm/Config/config.h.cmake -index ce83de8e4cba..02cf6d2ec363 100644 ---- a/llvm/include/llvm/Config/config.h.cmake -+++ b/llvm/include/llvm/Config/config.h.cmake -@@ -287,6 +287,9 @@ - /* Define to a function implementing strdup */ - #cmakedefine strdup ${strdup} - -+/* Define indicating opt-viewer modules */ -+#cmakedefine LLVM_HAVE_OPT_VIEWER_MODULES -+ - /* Whether GlobalISel rule coverage is being collected */ - #cmakedefine01 LLVM_GISEL_COV_ENABLED - diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index 666bc318c4d..af934b0f6ed 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -59,7 +59,7 @@ PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,lib PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,," PACKAGECONFIG[lld] = "-DCLANG_DEFAULT_LINKER=lld,,," PACKAGECONFIG[lto] = "-DLLVM_ENABLE_LTO=Full -DLLVM_BINUTILS_INCDIR=${STAGING_INCDIR},,binutils," -PACKAGECONFIG[opt-viewer] = "-DLLVM_HAVE_OPT_VIEWER_MODULES=ON,-DLLVM_HAVE_OPT_VIEWER_MODULES=OFF, \ +PACKAGECONFIG[opt-viewer] = "-DLLVM_TOOL_OPT_VIEWER_BUILD=ON,-DLLVM_TOOL_OPT_VIEWER_BUILD=OFF, \ python3-pyyaml-native python3-pygments-native python3-pyyaml python3-pygments, \ python3-pyyaml python3-pygments," PACKAGECONFIG[pfm] = "-DLLVM_ENABLE_LIBPFM=ON,-DLLVM_ENABLE_LIBPFM=OFF,libpfm," diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc index 625b0b064b7..e01eb2d2879 100644 --- a/meta/recipes-devtools/clang/common.inc +++ b/meta/recipes-devtools/clang/common.inc @@ -60,7 +60,6 @@ SRC_URI = "\ file://0037-Revert-libc-Remap-headers-in-the-debug-info-when-bui.patch \ file://0038-Prevent-revisiting-block-when-searching-for-noreturn.patch \ file://0039-Only-build-c-index-test-when-clang-tests-are-include.patch \ - file://0040-opt-viewer-Allow-users-to-set-LLVM_HAVE_OPT_VIEWER_M.patch \ " # Fallback to no-PIE if not set GCCPIE ??= "" From patchwork Wed Sep 24 12:08:29 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 70919 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 79B09CAC5A5 for ; Wed, 24 Sep 2025 12:08:47 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.10849.1758715717913305044 for ; Wed, 24 Sep 2025 05:08:38 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 753C9106F for ; Wed, 24 Sep 2025 05:08:29 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 357663F66E for ; Wed, 24 Sep 2025 05:08:37 -0700 (PDT) From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH v4 2/7] clang: disable all test targets Date: Wed, 24 Sep 2025 13:08:29 +0100 Message-ID: <20250924120834.2886320-2-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250924120834.2886320-1-ross.burton@arm.com> References: <20250924120834.2886320-1-ross.burton@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 24 Sep 2025 12:08:47 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223968 We don't install the tests, or run them in the build tree, so tell cmake not to generate the targets at all. This removes internal dependencies which means we can turn off more components that we don't want. Signed-off-by: Ross Burton --- meta/recipes-devtools/clang/clang_git.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index af934b0f6ed..aed584003fd 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -120,6 +120,7 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \ -DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \ + -DLLVM_INCLUDE_TESTS=OFF \ " EXTRA_OECMAKE:append:class-nativesdk = "\ From patchwork Wed Sep 24 12:08:30 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 70922 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 7F735CAC5B5 for ; Wed, 24 Sep 2025 12:08:47 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.10850.1758715718655202870 for ; Wed, 24 Sep 2025 05:08:38 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 29076106F for ; Wed, 24 Sep 2025 05:08:30 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id DAAAD3F66E for ; Wed, 24 Sep 2025 05:08:37 -0700 (PDT) From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH v4 3/7] clang: add option for llvm-exegesis Date: Wed, 24 Sep 2025 13:08:30 +0100 Message-ID: <20250924120834.2886320-3-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250924120834.2886320-1-ross.burton@arm.com> References: <20250924120834.2886320-1-ross.burton@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 24 Sep 2025 12:08:47 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223969 Quoting from the README: llvm-exegesis is a benchmarking tool that accepts or generates snippets and can measure characteristics of those snippets by executing it while keeping track of performance counters. Potentially useful but not essential. This reduces the size of llvm-bin by ~30MB and llvm-dbg by ~1100MB. Signed-off-by: Ross Burton --- meta/recipes-devtools/clang/clang_git.bb | 1 + 1 file changed, 1 insertion(+) diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index aed584003fd..70176560ae6 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -54,6 +54,7 @@ PACKAGECONFIG[clangd-dexp] = "-DCLANGD_BUILD_DEXP=ON,-DCLANGD_BUILD_DEXP=OFF,," PACKAGECONFIG[compiler-rt] = "-DCLANG_DEFAULT_RTLIB=compiler-rt,," PACKAGECONFIG[eh] = "-DLLVM_ENABLE_EH=ON,-DLLVM_ENABLE_EH=OFF,," +PACKAGECONFIG[exegesis] = "-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=ON,-DLLVM_TOOL_LLVM_EXEGESIS_BUILD=OFF" PACKAGECONFIG[libcplusplus] = "-DCLANG_DEFAULT_CXX_STDLIB=libc++,," PACKAGECONFIG[libedit] = "-DLLVM_ENABLE_LIBEDIT=ON,-DLLVM_ENABLE_LIBEDIT=OFF,libedit libedit-native" PACKAGECONFIG[libomp] = "-DCLANG_DEFAULT_OPENMP_RUNTIME=libomp,," From patchwork Wed Sep 24 12:08:31 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 70921 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 8BF57CAC5B6 for ; Wed, 24 Sep 2025 12:08:47 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.10851.1758715719326627411 for ; Wed, 24 Sep 2025 05:08:39 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id CE31F106F for ; Wed, 24 Sep 2025 05:08:30 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 8B32F3F66E for ; Wed, 24 Sep 2025 05:08:38 -0700 (PDT) From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH v4 4/7] clang: remove obsolete install steps Date: Wed, 24 Sep 2025 13:08:31 +0100 Message-ID: <20250924120834.2886320-4-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250924120834.2886320-1-ross.burton@arm.com> References: <20250924120834.2886320-1-ross.burton@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 24 Sep 2025 12:08:47 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223970 clang-pseudo and clang-rename have both been removed from upstream, so don't try to install them anymore: llvm 40c45b6b4318 ("Remove clang-rename (#108988)") llvm ed8f78827895 ("Remove clang-pseudo (#109154)") Signed-off-by: Ross Burton --- meta/recipes-devtools/clang/clang_git.bb | 6 ------ 1 file changed, 6 deletions(-) diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index 70176560ae6..998c1731f2f 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -170,12 +170,6 @@ do_configure:append:class-nativesdk() { } do_install:append() { - for t in clang-pseudo clang-pseudo-gen clang-rename; do - if [ -e ${B}${BINPATHPREFIX}/bin/$t ]; then - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/$t ${D}${bindir}/$t - fi - done - oe_multilib_header llvm/Config/llvm-config.h oe_multilib_header clang/Config/config.h } From patchwork Wed Sep 24 12:08:32 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 70923 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 94FFFCAC5B7 for ; Wed, 24 Sep 2025 12:08:47 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.10925.1758715719932442666 for ; Wed, 24 Sep 2025 05:08:40 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 738EB106F for ; Wed, 24 Sep 2025 05:08:31 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 3C2483F66E for ; Wed, 24 Sep 2025 05:08:39 -0700 (PDT) From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH v4 5/7] clang: improve tablegen installation Date: Wed, 24 Sep 2025 13:08:32 +0100 Message-ID: <20250924120834.2886320-5-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250924120834.2886320-1-ross.burton@arm.com> References: <20250924120834.2886320-1-ross.burton@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 24 Sep 2025 12:08:47 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223971 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. Signed-off-by: Ross Burton --- .../clang/0001-Install-lldb-tblgen.patch | 29 +++++++++++++++++++ meta/recipes-devtools/clang/common.inc | 1 + .../clang/llvm-tblgen-native_git.bb | 8 ++--- 3 files changed, 33 insertions(+), 5 deletions(-) create mode 100644 meta/recipes-devtools/clang/clang/0001-Install-lldb-tblgen.patch 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 00000000000..c9741675893 --- /dev/null +++ b/meta/recipes-devtools/clang/clang/0001-Install-lldb-tblgen.patch @@ -0,0 +1,29 @@ +From 7de6d35aeea2d06b1597539c47f6af30d2798d73 Mon Sep 17 00:00:00 2001 +From: Ross Burton +Date: Fri, 19 Sep 2025 16:33:55 +0100 +Subject: [PATCH] Install lldb-tblgen + +In keeping with the llvm-tblgen and clang-tblgen binaries, allow +lldb-tblgen to be installed by cmake so that cross builds are easier. + +Upstream-Status: Backport [https://github.com/llvm/llvm-project/commit/0ce6052a0c08035a07fcabb05271be7313308db3] +Signed-off-by: Ross Burton +--- + lldb/utils/TableGen/CMakeLists.txt | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/lldb/utils/TableGen/CMakeLists.txt b/lldb/utils/TableGen/CMakeLists.txt +index 0ac010bcda35..ce96dddd4420 100644 +--- a/lldb/utils/TableGen/CMakeLists.txt ++++ b/lldb/utils/TableGen/CMakeLists.txt +@@ -8,6 +8,7 @@ if (NOT DEFINED LLDB_TABLEGEN_EXE) + set(LLVM_LINK_COMPONENTS Support) + + add_tablegen(lldb-tblgen LLDB ++ DESTINATION "${CMAKE_INSTALL_BINDIR}" + LLDBOptionDefEmitter.cpp + LLDBPropertyDefEmitter.cpp + LLDBTableGen.cpp +-- +2.43.0 + diff --git a/meta/recipes-devtools/clang/common.inc b/meta/recipes-devtools/clang/common.inc index e01eb2d2879..512bf1dd028 100644 --- a/meta/recipes-devtools/clang/common.inc +++ b/meta/recipes-devtools/clang/common.inc @@ -60,6 +60,7 @@ SRC_URI = "\ file://0037-Revert-libc-Remap-headers-in-the-debug-info-when-bui.patch \ file://0038-Prevent-revisiting-block-when-searching-for-noreturn.patch \ file://0039-Only-build-c-index-test-when-clang-tests-are-include.patch \ + file://0001-Install-lldb-tblgen.patch \ " # Fallback to no-PIE if not set GCCPIE ??= "" diff --git a/meta/recipes-devtools/clang/llvm-tblgen-native_git.bb b/meta/recipes-devtools/clang/llvm-tblgen-native_git.bb index be04c1aa4d1..8023d745782 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" EXTRA_OECMAKE += "-DCMAKE_BUILD_TYPE=Release -DLLVM_ENABLE_PROJECTS='llvm;clang;lldb'" -BINARIES = "llvm-min-tblgen llvm-tblgen clang-tblgen lldb-tblgen" - -OECMAKE_TARGET_COMPILE = "${BINARIES}" +OECMAKE_TARGET_COMPILE = "llvm-tblgen clang-tblgen lldb-tblgen" do_install() { - for f in ${BINARIES}; do - install -D ${B}/bin/$f ${D}${bindir}/$f + for TARGET in ${OECMAKE_TARGET_COMPILE}; do + DESTDIR=${D} cmake --install ${B} --component $TARGET done } From patchwork Wed Sep 24 12:08:33 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 70920 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id 850AACAC5B3 for ; Wed, 24 Sep 2025 12:08:47 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web10.10926.1758715720576057476 for ; Wed, 24 Sep 2025 05:08:40 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id 1EC30106F for ; Wed, 24 Sep 2025 05:08:32 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id D8BB03F66E for ; Wed, 24 Sep 2025 05:08:39 -0700 (PDT) From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH v4 6/7] clang: tell cross-builds of clang how to build natively Date: Wed, 24 Sep 2025 13:08:33 +0100 Message-ID: <20250924120834.2886320-6-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250924120834.2886320-1-ross.burton@arm.com> References: <20250924120834.2886320-1-ross.burton@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 24 Sep 2025 12:08:47 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223972 If we pass CROSS_TOOLCHAIN_FLAGS_NATIVE to all the builds, instead of just nativesdk, then clang can correctly build its own native tools as needed. This means we can stop manually installing clang-tidy-confusable-chars-gen as clang-tidy will build it. We (currently) still build the tblgen binaries once as they're used in several recipes so there's likely value in building those once. Also consolidate the LLVM_TABLEGEN variables as they're not specific to a particular class. Signed-off-by: Ross Burton --- meta/recipes-devtools/clang/clang_git.bb | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index 998c1731f2f..9ccb81a5308 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -120,14 +120,13 @@ EXTRA_OECMAKE += "-DLLVM_ENABLE_ASSERTIONS=OFF \ -DLLVM_TARGETS_TO_BUILD='${LLVM_TARGETS_TO_BUILD}' \ -DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD='${LLVM_EXPERIMENTAL_TARGETS_TO_BUILD}' \ -DLLVM_NATIVE_TOOL_DIR=${STAGING_BINDIR_NATIVE} \ - -DLLVM_HEADERS_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-min-tblgen \ + -DLLVM_TABLEGEN=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ + -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ -DLLVM_INCLUDE_TESTS=OFF \ + -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \ " EXTRA_OECMAKE:append:class-nativesdk = "\ - -DCROSS_TOOLCHAIN_FLAGS_NATIVE='-DCMAKE_TOOLCHAIN_FILE=${WORKDIR}/toolchain-native.cmake' \ - -DLLVM_TABLEGEN_EXE=${STAGING_BINDIR_NATIVE}/llvm-tblgen \ - -DCLANG_TIDY_CONFUSABLE_CHARS_GEN=${STAGING_BINDIR_NATIVE}/clang-tidy-confusable-chars-gen \ -DCMAKE_RANLIB=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ranlib \ -DCMAKE_AR=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-ar \ -DCMAKE_NM=${STAGING_BINDIR_TOOLCHAIN}/${TARGET_PREFIX}llvm-nm \ @@ -205,7 +204,6 @@ do_install:append:class-native () { if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clangd-indexer ${D}${bindir}/clangd-indexer fi - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tidy-confusable-chars-gen ${D}${bindir}/clang-tidy-confusable-chars-gen for f in `find ${D}${bindir} -executable -type f -not -type l`; do test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f @@ -225,7 +223,6 @@ do_install:append:class-nativesdk () { install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clangd-indexer ${D}${bindir}/clangd-indexer fi install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tidy-confusable-chars-gen ${D}${bindir}/clang-tidy-confusable-chars-gen for f in `find ${D}${bindir} -executable -type f -not -type l`; do test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f done From patchwork Wed Sep 24 12:08:34 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Ross Burton X-Patchwork-Id: 70924 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from aws-us-west-2-korg-lkml-1.web.codeaurora.org (localhost.localdomain [127.0.0.1]) by smtp.lore.kernel.org (Postfix) with ESMTP id A34EFCAC5B9 for ; Wed, 24 Sep 2025 12:08:47 +0000 (UTC) Received: from foss.arm.com (foss.arm.com [217.140.110.172]) by mx.groups.io with SMTP id smtpd.web11.10852.1758715721219662470 for ; Wed, 24 Sep 2025 05:08:41 -0700 Authentication-Results: mx.groups.io; dkim=none (message not signed); spf=pass (domain: arm.com, ip: 217.140.110.172, mailfrom: ross.burton@arm.com) Received: from usa-sjc-imap-foss1.foss.arm.com (unknown [10.121.207.14]) by usa-sjc-mx-foss1.foss.arm.com (Postfix) with ESMTP id BA306106F for ; Wed, 24 Sep 2025 05:08:32 -0700 (PDT) Received: from cesw-amp-gbt-1s-m12830-04.lab.cambridge.arm.com (usa-sjc-imap-foss1.foss.arm.com [10.121.207.14]) by usa-sjc-imap-foss1.foss.arm.com (Postfix) with ESMTPA id 809963F66E for ; Wed, 24 Sep 2025 05:08:40 -0700 (PDT) From: Ross Burton To: openembedded-core@lists.openembedded.org Subject: [PATCH v4 7/7] clang: no need to install tblgen binaries in nativesdk-clang Date: Wed, 24 Sep 2025 13:08:34 +0100 Message-ID: <20250924120834.2886320-7-ross.burton@arm.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250924120834.2886320-1-ross.burton@arm.com> References: <20250924120834.2886320-1-ross.burton@arm.com> MIME-Version: 1.0 List-Id: X-Webhook-Received: from li982-79.members.linode.com [45.33.32.79] by aws-us-west-2-korg-lkml-1.web.codeaurora.org with HTTPS for ; Wed, 24 Sep 2025 12:08:47 -0000 X-Groupsio-URL: https://lists.openembedded.org/g/openembedded-core/message/223973 These are only needed if cross-compiling clang, and if someone is cross-compiling clang in a SDK they should build their own binaries as these ones might not match the version of clang they're building. Signed-off-by: Ross Burton --- meta/recipes-devtools/clang/clang_git.bb | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/meta/recipes-devtools/clang/clang_git.bb b/meta/recipes-devtools/clang/clang_git.bb index 9ccb81a5308..53bca1c24f8 100644 --- a/meta/recipes-devtools/clang/clang_git.bb +++ b/meta/recipes-devtools/clang/clang_git.bb @@ -222,13 +222,11 @@ do_install:append:class-nativesdk () { if ${@bb.utils.contains('PACKAGECONFIG', 'clangd', 'true', 'false', d)}; then install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clangd-indexer ${D}${bindir}/clangd-indexer fi - install -Dm 0755 ${B}${BINPATHPREFIX}/bin/clang-tblgen ${D}${bindir}/clang-tblgen + for f in `find ${D}${bindir} -executable -type f -not -type l`; do test -n "`file -b $f|grep -i ELF`" && ${STRIP} $f done - ln -sf clang-tblgen ${D}${bindir}/clang-tblgen${PV} - ln -sf llvm-tblgen ${D}${bindir}/llvm-tblgen${PV} - ln -sf llvm-config ${D}${bindir}/llvm-config${PV} + rm -rf ${D}${datadir}/llvm/cmake rm -rf ${D}${datadir}/llvm