On Fri, Jul 19, 2024 at 7:10 AM Christian Eggers <[email protected]> wrote:

> Hi Khem,
>
> sorry for the delay.
>
> On Tuesday, 16 July 2024, 17:42:33 CEST, Khem Raj wrote:
> > On Tue, Jul 16, 2024 at 7:57 AM Christian Eggers <[email protected]>
> wrote:
> > >
> > > Hi Khem,
> > >
> > >
> > > On Tuesday, 16 July 2024, 15:45:54 CEST, Khem Raj wrote:
> > > > On Tue, Jul 16, 2024 at 1:08 AM Christian Eggers <[email protected]>
> wrote:
> > > >
> > > > > On Monday, 15 July 2024, 16:18:14 CEST, Khem Raj wrote:
> > > > > > On Mon, Jul 15, 2024 at 5:18 AM Christian Eggers via
> > > > > lists.openembedded.org
> > > > > > <[email protected]> wrote:
> > > > > >
> > > > > > > Based on proposal send previously here:
> > > > > > >
> https://lists.yoctoproject.org/g/yocto/topic/recipe_for/83279588
> > > > > > >
> > > > > > > This recipe depends on meta-clang, so should it be added to
> that layer?
> > > > > > >
> > > > > > > Unfortunately the 'include-what-you-use' (iwyu) tool doesn't
> work yet.
> > > > > > > Although I have installed nativesdk-clang (via CLANGSDK = "1")
> and
> > > > > > > nativesdk-include-what-you-use packages, the C++ standard
> headers are
> > > > > > > not found:
> > > > > > >
> > > > > > > include-what-you-use
> > > > > > >
> > > > >
> --sysroot=/opt/poky/5.0.2/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-musleabi
> > > > > > > impl/Fdt.cpp
> > > > > > > impl/Fdt.cpp:9:10: fatal error: 'cerrno' file not found
> > > > > > >     9 | #include <cerrno>
> > > > > > >       |          ^~~~~~~~
> > > > > > >
> > > > > > > As iwyu uses Clang and I have no experience working with it,
> this is
> > > > > > > probably only a beginner mistake. Can Clang use the C++ headers
> > > > > provided
> > > > > > > by libstdc++, or do I need to install further packages?
> > > > > > >
> > > > > >
> > > > > > It can but it seems your SDK install might be missing any c++
> runtime so
> > > > > > check a simple program that includes say <iostream> header and
> try
> > > > > > compiling it
> > > > > My SDK definitely contains std:: C++ headers for target and
> nativesdk. But
> > > > > the
> > > > > libstdc++ C++ headers are installed in GCC specific locations:
> > > > >
> > > > >
> /opt/poky/5.0.2/sysroots/x86_64-pokysdk-linux/usr/include/c++/13.3.0/
> > > > >
> > > > >
> /opt/poky/5.0.2/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-musleabi/usr/include/c++/13.3.0
> > > > >
> > > > > How can Clang know that the C++ headers are located in the (GCC
> specific)
> > > > > c++/13.3.0
> > > > > sub directory?
> > > >
> > > >
> > > > Try adding -stdlib=libstdc++ on clang cmdline
> > >
> > > The following seems to work:
> > > include-what-you-use \
> > >     -target arm-poky-linux-musleabi \
> > >     --sysroot
> /opt/poky/5.0.2/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-musleabi \
> > >     -stdlib++-isystem
> /opt/poky/5.0.2/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-musleabi/usr/include/c++/13.3.0/arm-poky-linux-musleabi
> \
> > >     -stdlib++-isystem
> /opt/poky/5.0.2/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-musleabi/usr/include/c++/13.3.0
> \
> > >     File.cpp
> > >
> > > Is there a way to make this a little bit handier? I would like to
> avoid hard coding this into my CMake toolchain file.
> > >
> >
> > Hmm so -stdlib=libstdc++ does not work ?
>
> I cannot reproduce what exactly went wrong, but now the following works
> fine:
>
> include-what-you-use -target arm-poky-linux-musleabi --sysroot
> /opt/poky/5.0.2/sysroots/cortexa7t2hf-neon-vfpv4-poky-linux-musleabi
> test.cpp
> include-what-you-use -target x86_64-pokysdk-linux --sysroot
> /opt/orbiter-tiny/5.0.2/sysroots/x86_64-pokysdk-linux test.cpp
>
> So neither '-stdlib=libstdc++' nor '-stdlib++-isystem' is required anymore.
>
> I was also able to integrate this into a CMake project (built with the
> SDK) by adding the following to my toolchain file:
>
> set(CMAKE_C_INCLUDE_WHAT_YOU_USE
> include-what-you-use;-target;arm-poky-linux-musleabi;--sysroot;$ENV{SDKTARGETSYSROOT})
> set(CMAKE_CXX_INCLUDE_WHAT_YOU_USE
> include-what-you-use;-target;arm-poky-linux-musleabi;--sysroot;$ENV{SDKTARGETSYSROOT})
>
> The IWYU tool states itself as "experimental software", so the output
> better should be interpreted by a human. I've tested with an existing
> code base and got many valuable hints for missing/superfluous
> #include statements. The results are quite good for std:: C/C++
> headers, but other libraries like Boost need further improvements.
>
> Can this recipe be added to meta-clang (due to it's dependencies to
> libclang/libllvm)?
>
>
Yes send a pr to meta-clang

>
>
>
>
-=-=-=-=-=-=-=-=-=-=-=-
Links: You receive all messages sent to this group.
View/Reply Online (#111418): 
https://lists.openembedded.org/g/openembedded-devel/message/111418
Mute This Topic: https://lists.openembedded.org/mt/107229738/21656
Group Owner: [email protected]
Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub 
[[email protected]]
-=-=-=-=-=-=-=-=-=-=-=-

Reply via email to