diff mbox series

[v4,6/7] clang: tell cross-builds of clang how to build natively

Message ID 20250924120834.2886320-6-ross.burton@arm.com
State Accepted, archived
Commit 36b42975b975b4a5e3904e555e5ee00aba9c2f2b
Headers show
Series [v4,1/7] clang: improve opt-viewer PACKAGECONFIG | expand

Commit Message

Ross Burton Sept. 24, 2025, 12:08 p.m. UTC
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 <ross.burton@arm.com>
---
 meta/recipes-devtools/clang/clang_git.bb | 9 +++------
 1 file changed, 3 insertions(+), 6 deletions(-)

Comments

Khem Raj Sept. 25, 2025, 4:21 a.m. UTC | #1
I am seeing that target clang is failing to build

FAILED: [code=127] NATIVE/bin/clang-tidy-confusable-chars-gen
/mnt/b/yoe/master/build/tmp/work/riscv64imafdc-yoe-linux/clang/21.1.1/build/NATIVE/bin/clang-tidy-confusable-chars-gen

full compile log is here

https://termbin.com/qct7

On Wed, Sep 24, 2025 at 5:09 AM Ross Burton via lists.openembedded.org
<ross.burton=arm.com@lists.openembedded.org> wrote:
>
> 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 <ross.burton@arm.com>
> ---
>  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
> --
> 2.43.0
>
>
> -=-=-=-=-=-=-=-=-=-=-=-
> Links: You receive all messages sent to this group.
> View/Reply Online (#223972): https://lists.openembedded.org/g/openembedded-core/message/223972
> Mute This Topic: https://lists.openembedded.org/mt/115410450/1997914
> Group Owner: openembedded-core+owner@lists.openembedded.org
> Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> -=-=-=-=-=-=-=-=-=-=-=-
>
Khem Raj Sept. 25, 2025, 4:39 a.m. UTC | #2
AB also showing same failure

https://autobuilder.yoctoproject.org/valkyrie/#/builders/81/builds/953/steps/14/logs/stdio

On Wed, Sep 24, 2025 at 9:21 PM Khem Raj <raj.khem@gmail.com> wrote:
>
> I am seeing that target clang is failing to build
>
> FAILED: [code=127] NATIVE/bin/clang-tidy-confusable-chars-gen
> /mnt/b/yoe/master/build/tmp/work/riscv64imafdc-yoe-linux/clang/21.1.1/build/NATIVE/bin/clang-tidy-confusable-chars-gen
>
> full compile log is here
>
> https://termbin.com/qct7
>
> On Wed, Sep 24, 2025 at 5:09 AM Ross Burton via lists.openembedded.org
> <ross.burton=arm.com@lists.openembedded.org> wrote:
> >
> > 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 <ross.burton@arm.com>
> > ---
> >  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
> > --
> > 2.43.0
> >
> >
> > -=-=-=-=-=-=-=-=-=-=-=-
> > Links: You receive all messages sent to this group.
> > View/Reply Online (#223972): https://lists.openembedded.org/g/openembedded-core/message/223972
> > Mute This Topic: https://lists.openembedded.org/mt/115410450/1997914
> > Group Owner: openembedded-core+owner@lists.openembedded.org
> > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> > -=-=-=-=-=-=-=-=-=-=-=-
> >
Khem Raj Sept. 25, 2025, 5:01 a.m. UTC | #3
Nevermind, I guess we need this series and
https://lore.kernel.org/openembedded-core/20250924120745.2883969-1-ross.burton@arm.com/T/#t
together for cmake fixes. Once  I applied the second series things look better.

On Wed, Sep 24, 2025 at 9:39 PM Khem Raj <raj.khem@gmail.com> wrote:
>
> AB also showing same failure
>
> https://autobuilder.yoctoproject.org/valkyrie/#/builders/81/builds/953/steps/14/logs/stdio
>
> On Wed, Sep 24, 2025 at 9:21 PM Khem Raj <raj.khem@gmail.com> wrote:
> >
> > I am seeing that target clang is failing to build
> >
> > FAILED: [code=127] NATIVE/bin/clang-tidy-confusable-chars-gen
> > /mnt/b/yoe/master/build/tmp/work/riscv64imafdc-yoe-linux/clang/21.1.1/build/NATIVE/bin/clang-tidy-confusable-chars-gen
> >
> > full compile log is here
> >
> > https://termbin.com/qct7
> >
> > On Wed, Sep 24, 2025 at 5:09 AM Ross Burton via lists.openembedded.org
> > <ross.burton=arm.com@lists.openembedded.org> wrote:
> > >
> > > 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 <ross.burton@arm.com>
> > > ---
> > >  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
> > > --
> > > 2.43.0
> > >
> > >
> > > -=-=-=-=-=-=-=-=-=-=-=-
> > > Links: You receive all messages sent to this group.
> > > View/Reply Online (#223972): https://lists.openembedded.org/g/openembedded-core/message/223972
> > > Mute This Topic: https://lists.openembedded.org/mt/115410450/1997914
> > > Group Owner: openembedded-core+owner@lists.openembedded.org
> > > Unsubscribe: https://lists.openembedded.org/g/openembedded-core/unsub [raj.khem@gmail.com]
> > > -=-=-=-=-=-=-=-=-=-=-=-
> > >
diff mbox series

Patch

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