[OE-core] [PATCH] cmake: add CMAKE_SYSROOT to generated toolchain file

Khem Raj raj.khem at gmail.com
Fri Aug 24 15:51:42 UTC 2018


On Fri, Aug 24, 2018 at 8:48 AM <Mikko.Rapeli at bmw.de> wrote:

> On Fri, Aug 24, 2018 at 03:10:28PM +0000, Bach, Pascal wrote:
> >
> > > > Fixes problems which we have also seen on sumo branch. Thanks for
> this!
> > >
> > > Sorry, spoke too soon. This fixes compilation on a few recipes in my
> tree but
> > > there are still lots failures with the same error message. We had a
> hacky
> > > patch to cmake as a workaround but that too causes some problems:
> >
> > I have not yet figured out what CMake based projects are affected and
> why.
> > The error seems to happen only for certain projects.
>
> In our case it looks like a library is adding target_include_directories()
> with SYSTEM keyword in its cmake module. Everyone who includes the cmake
> module
> fails to build. This repeats with a handful of cmake modules and causes all
> of their dependencies to fail build with errors like:
>
> .../recipe-sysroot/usr/include/c++/7.3.0/cstdlib:75:15: fatal error:
> stdlib.h: No such file or directory
> |  #include_next <stdlib.h>
> |                ^~~~~~~~~~
> | compilation terminated.
>
> or
>
> | cc1plus: warning: include location "/usr/include" is unsafe for
> cross-compilation [-Wpoison-system-directories]
> ...
> .../recipe-sysroot/usr/include/stdlib.h:133:35: error: missing binary
> operator before token
> "("
> |  #if __HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT)
> |                                    ^
>
> So to me it looks like using SYSTEM with target_include_directories()
> is no longer possible with CMake and gcc > 6:
>
>
> https://cmake.org/cmake/help/v3.10/command/target_include_directories.html?highlight=target_include_directories
>

That’s right there is a patch I did  in WebKitgtk recipe in Oe Core you
might want to include similar fixes for this package the patch actually it
a workaround but then I also think using isystem in apps is a bad idea

>
> > > --- a/Modules/Compiler/GNU.cmake
> > > +++ b/Modules/Compiler/GNU.cmake
> > > @@ -45,7 +45,7 @@
> > >    set(CMAKE_${lang}_CREATE_PREPROCESSED_SOURCE
> > > "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -E
> > > <SOURCE> > <PREPROCESSED_SOURCE>")
> > >    set(CMAKE_${lang}_CREATE_ASSEMBLY_SOURCE
> > > "<CMAKE_${lang}_COMPILER> <DEFINES> <INCLUDES> <FLAGS> -S
> > > <SOURCE> -o <ASSEMBLY_SOURCE>")
> > >    if(NOT APPLE OR NOT CMAKE_${lang}_COMPILER_VERSION VERSION_LESS
> > > 4) # work around #4462
> > > -    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-isystem ")
> > > +    set(CMAKE_INCLUDE_SYSTEM_FLAG_${lang} "-I ")
> > >    endif()
> > >
> > >    set(_CMAKE_${lang}_IPO_SUPPORTED_BY_CMAKE YES)
> > >
> > > I wonder what the real fix could be...
> > >
> >
> > This looks similar to another workaround I saw.
> > Setting CMAKE_NO_SYSTEM_FROM_IMPORTED to True. I'm also not sure what
> the real fix is.
> > The issue is also discussed here:
> https://gitlab.kitware.com/cmake/cmake/issues/16291
>
> Thanks for the ticket link.
>
> -Mikko
> --
> _______________________________________________
> Openembedded-core mailing list
> Openembedded-core at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-core
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20180824/3bc81b8d/attachment-0002.html>


More information about the Openembedded-core mailing list