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 <cegg...@arri.de> 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 <cegg...@arri.de> 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 > > > > > <ceggers=arri...@lists.openembedded.org> 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)?
-=-=-=-=-=-=-=-=-=-=-=- Links: You receive all messages sent to this group. View/Reply Online (#111416): https://lists.openembedded.org/g/openembedded-devel/message/111416 Mute This Topic: https://lists.openembedded.org/mt/107229738/21656 Group Owner: openembedded-devel+ow...@lists.openembedded.org Unsubscribe: https://lists.openembedded.org/g/openembedded-devel/unsub [arch...@mail-archive.com] -=-=-=-=-=-=-=-=-=-=-=-