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]] -=-=-=-=-=-=-=-=-=-=-=-
