Message ID | 20161029084707.29652-1-raj.khem@gmail.com |
---|---|
State | New |
Headers | show |
On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem@gmail.com> wrote: > This has been cause of issue where we were getting both usr/include > dirs ( from target as well as native sysroot) added to compiler > flags. > > CXX_INCLUDES in final flags.cmake would include > -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include > most of the time it would work since headers are mostly > common but netflix package failed to compile since one of > the headers was including curl headers which it could not > find in target sysroot and it went to next include path > and found it in native sysroot which is not what we want > when doing cross compile. > > As per https://cmake.org/Wiki/CMake_Cross_Compiling > never search for programs in target sysroot but search > for packages,libs,includes only. > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > meta/classes/cmake.bbclass | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass > index 3e762de..3e8df37 100644 > --- a/meta/classes/cmake.bbclass > +++ b/meta/classes/cmake.bbclass > @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" > OECMAKE_EXTRA_ROOT_PATH ?= "" > > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" > +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" ^ Split this into a second patch please you are changing two more or less unrelated settings in one patch. > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" > > EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" > @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) > > # only search in the paths provided so cmake doesnt pick > # up libraries and tools from the native build machine > -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) > +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) ^ Are you sure this doesn't break native builds? I am a bit scared: In meta-qt5-extra I have lot's of native builds for build-helpers. KDE guys seem to prefer this over shell scripts... Andreas -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller <schnitzeltony@googlemail.com> wrote: > On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem@gmail.com> wrote: >> This has been cause of issue where we were getting both usr/include >> dirs ( from target as well as native sysroot) added to compiler >> flags. >> >> CXX_INCLUDES in final flags.cmake would include >> -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include >> most of the time it would work since headers are mostly >> common but netflix package failed to compile since one of >> the headers was including curl headers which it could not >> find in target sysroot and it went to next include path >> and found it in native sysroot which is not what we want >> when doing cross compile. >> >> As per https://cmake.org/Wiki/CMake_Cross_Compiling >> never search for programs in target sysroot but search >> for packages,libs,includes only. >> >> Signed-off-by: Khem Raj <raj.khem@gmail.com> >> --- >> meta/classes/cmake.bbclass | 3 ++- >> 1 file changed, 2 insertions(+), 1 deletion(-) >> >> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass >> index 3e762de..3e8df37 100644 >> --- a/meta/classes/cmake.bbclass >> +++ b/meta/classes/cmake.bbclass >> @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" >> OECMAKE_EXTRA_ROOT_PATH ?= "" >> >> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" >> +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" > ^ Split this into a second patch please you are changing two more or > less unrelated settings in one patch. These changes are related and should stay together in same patch otherwise it will break. >> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" >> >> EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" >> @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) >> >> # only search in the paths provided so cmake doesnt pick >> # up libraries and tools from the native build machine >> -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >> +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) > ^ Are you sure this doesn't break native builds? I am a bit scared: In > meta-qt5-extra I have lot's of native builds for build-helpers. KDE > guys seem to prefer this over shell scripts... It hasnt broken anything for my world builds thus far. I dont use meta-qt5-extras though. So testing help is welcome.
On Sun, Oct 30, 2016 at 6:38 PM, Khem Raj <raj.khem@gmail.com> wrote: > On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller > <schnitzeltony@googlemail.com> wrote: >> On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem@gmail.com> wrote: >>> This has been cause of issue where we were getting both usr/include >>> dirs ( from target as well as native sysroot) added to compiler >>> flags. >>> >>> CXX_INCLUDES in final flags.cmake would include >>> -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include >>> most of the time it would work since headers are mostly >>> common but netflix package failed to compile since one of >>> the headers was including curl headers which it could not >>> find in target sysroot and it went to next include path >>> and found it in native sysroot which is not what we want >>> when doing cross compile. >>> >>> As per https://cmake.org/Wiki/CMake_Cross_Compiling >>> never search for programs in target sysroot but search >>> for packages,libs,includes only. >>> >>> Signed-off-by: Khem Raj <raj.khem@gmail.com> >>> --- >>> meta/classes/cmake.bbclass | 3 ++- >>> 1 file changed, 2 insertions(+), 1 deletion(-) >>> >>> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass >>> index 3e762de..3e8df37 100644 >>> --- a/meta/classes/cmake.bbclass >>> +++ b/meta/classes/cmake.bbclass >>> @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" >>> OECMAKE_EXTRA_ROOT_PATH ?= "" >>> >>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" >>> +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" >> ^ Split this into a second patch please you are changing two more or >> less unrelated settings in one patch. > > These changes are related and should stay together in same patch > otherwise it will break. > >>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" >>> >>> EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" >>> @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) >>> >>> # only search in the paths provided so cmake doesnt pick >>> # up libraries and tools from the native build machine >>> -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>> +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >> ^ Are you sure this doesn't break native builds? I am a bit scared: In >> meta-qt5-extra I have lot's of native builds for build-helpers. KDE >> guys seem to prefer this over shell scripts... > > It hasnt broken anything for my world builds thus far. I dont use > meta-qt5-extras though. So testing help is welcome. I'll give it a meta-qt5-extra world build and let you know Andreas
On Sun, Oct 30, 2016 at 9:07 PM, Andreas Müller <schnitzeltony@googlemail.com> wrote: > On Sun, Oct 30, 2016 at 6:38 PM, Khem Raj <raj.khem@gmail.com> wrote: >> On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller >> <schnitzeltony@googlemail.com> wrote: >>> On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem@gmail.com> wrote: >>>> This has been cause of issue where we were getting both usr/include >>>> dirs ( from target as well as native sysroot) added to compiler >>>> flags. >>>> >>>> CXX_INCLUDES in final flags.cmake would include >>>> -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include >>>> most of the time it would work since headers are mostly >>>> common but netflix package failed to compile since one of >>>> the headers was including curl headers which it could not >>>> find in target sysroot and it went to next include path >>>> and found it in native sysroot which is not what we want >>>> when doing cross compile. >>>> >>>> As per https://cmake.org/Wiki/CMake_Cross_Compiling >>>> never search for programs in target sysroot but search >>>> for packages,libs,includes only. >>>> >>>> Signed-off-by: Khem Raj <raj.khem@gmail.com> >>>> --- >>>> meta/classes/cmake.bbclass | 3 ++- >>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>> >>>> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass >>>> index 3e762de..3e8df37 100644 >>>> --- a/meta/classes/cmake.bbclass >>>> +++ b/meta/classes/cmake.bbclass >>>> @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" >>>> OECMAKE_EXTRA_ROOT_PATH ?= "" >>>> >>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" >>>> +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" >>> ^ Split this into a second patch please you are changing two more or >>> less unrelated settings in one patch. >> >> These changes are related and should stay together in same patch >> otherwise it will break. >> >>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" >>>> >>>> EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" >>>> @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) >>>> >>>> # only search in the paths provided so cmake doesnt pick >>>> # up libraries and tools from the native build machine >>>> -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>>> +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>> ^ Are you sure this doesn't break native builds? I am a bit scared: In >>> meta-qt5-extra I have lot's of native builds for build-helpers. KDE >>> guys seem to prefer this over shell scripts... >> >> It hasnt broken anything for my world builds thus far. I dont use >> meta-qt5-extras though. So testing help is welcome. > I'll give it a meta-qt5-extra world build and let you know > Huge fallout: /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/karchive/karchive.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier2/kdoctools/kdoctools-native.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwindowsystem/kwindowsystem.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcodecs/kcodecs.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kconfig/kconfig.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kguiaddons/kguiaddons.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdbusaddons/kdbusaddons.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kitemviews/kitemviews.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/attica/attica.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/sonnet/sonnet.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcoreaddons/kcoreaddons-native.bb:do_compile /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kidletime/kidletime.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwayland/kwayland.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/libqtxdg/libqtxdg_git.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/threadweaver/threadweaver.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/networkmanager-qt/networkmanager-qt.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdnssd/kdnssd.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/modemmanager-qt/modemmanager-qt.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/projectm/projectm_git.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kplotting/kplotting.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/breeze-icons/breeze-icons.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/compton-conf/compton-conf_git.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/qterminal/qterminal_git.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/obconf-qt/obconf-qt_git.bb:do_configure /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/mixxx/mixxx_git.bb:do_compile so please don't apply this one Andreas
> On Oct 31, 2016, at 5:48 AM, Andreas Müller <schnitzeltony@googlemail.com> wrote: > > On Sun, Oct 30, 2016 at 9:07 PM, Andreas Müller > <schnitzeltony@googlemail.com> wrote: >> On Sun, Oct 30, 2016 at 6:38 PM, Khem Raj <raj.khem@gmail.com> wrote: >>> On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller >>> <schnitzeltony@googlemail.com> wrote: >>>> On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem@gmail.com> wrote: >>>>> This has been cause of issue where we were getting both usr/include >>>>> dirs ( from target as well as native sysroot) added to compiler >>>>> flags. >>>>> >>>>> CXX_INCLUDES in final flags.cmake would include >>>>> -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include >>>>> most of the time it would work since headers are mostly >>>>> common but netflix package failed to compile since one of >>>>> the headers was including curl headers which it could not >>>>> find in target sysroot and it went to next include path >>>>> and found it in native sysroot which is not what we want >>>>> when doing cross compile. >>>>> >>>>> As per https://cmake.org/Wiki/CMake_Cross_Compiling >>>>> never search for programs in target sysroot but search >>>>> for packages,libs,includes only. >>>>> >>>>> Signed-off-by: Khem Raj <raj.khem@gmail.com> >>>>> --- >>>>> meta/classes/cmake.bbclass | 3 ++- >>>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>>> >>>>> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass >>>>> index 3e762de..3e8df37 100644 >>>>> --- a/meta/classes/cmake.bbclass >>>>> +++ b/meta/classes/cmake.bbclass >>>>> @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" >>>>> OECMAKE_EXTRA_ROOT_PATH ?= "" >>>>> >>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" >>>>> +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" >>>> ^ Split this into a second patch please you are changing two more or >>>> less unrelated settings in one patch. >>> >>> These changes are related and should stay together in same patch >>> otherwise it will break. >>> >>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" >>>>> >>>>> EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" >>>>> @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) >>>>> >>>>> # only search in the paths provided so cmake doesnt pick >>>>> # up libraries and tools from the native build machine >>>>> -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>>>> +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>>> ^ Are you sure this doesn't break native builds? I am a bit scared: In >>>> meta-qt5-extra I have lot's of native builds for build-helpers. KDE >>>> guys seem to prefer this over shell scripts... >>> >>> It hasnt broken anything for my world builds thus far. I dont use >>> meta-qt5-extras though. So testing help is welcome. >> I'll give it a meta-qt5-extra world build and let you know >> > Huge fallout: > > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/karchive/karchive.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier2/kdoctools/kdoctools-native.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwindowsystem/kwindowsystem.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcodecs/kcodecs.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kconfig/kconfig.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kguiaddons/kguiaddons.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdbusaddons/kdbusaddons.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kitemviews/kitemviews.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/attica/attica.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/sonnet/sonnet.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcoreaddons/kcoreaddons-native.bb:do_compile > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kidletime/kidletime.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwayland/kwayland.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/libqtxdg/libqtxdg_git.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/threadweaver/threadweaver.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/networkmanager-qt/networkmanager-qt.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdnssd/kdnssd.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/modemmanager-qt/modemmanager-qt.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/projectm/projectm_git.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kplotting/kplotting.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/breeze-icons/breeze-icons.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/compton-conf/compton-conf_git.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/qterminal/qterminal_git.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/obconf-qt/obconf-qt_git.bb:do_configure > /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/mixxx/mixxx_git.bb:do_compile > > so please don't apply this one Not yet, but specify both native includedir and target includedir while building something is broken at core that must be fixed in anycase. May be these fallouts are just latent issues that were papered over in past. Can you upload the logs somewhere ? > > Andreas -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
On Mon, Oct 31, 2016 at 5:25 PM, Khem Raj <raj.khem@gmail.com> wrote: > >> On Oct 31, 2016, at 5:48 AM, Andreas Müller <schnitzeltony@googlemail.com> wrote: >> >> On Sun, Oct 30, 2016 at 9:07 PM, Andreas Müller >> <schnitzeltony@googlemail.com> wrote: >>> On Sun, Oct 30, 2016 at 6:38 PM, Khem Raj <raj.khem@gmail.com> wrote: >>>> On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller >>>> <schnitzeltony@googlemail.com> wrote: >>>>> On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem@gmail.com> wrote: >>>>>> This has been cause of issue where we were getting both usr/include >>>>>> dirs ( from target as well as native sysroot) added to compiler >>>>>> flags. >>>>>> >>>>>> CXX_INCLUDES in final flags.cmake would include >>>>>> -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include >>>>>> most of the time it would work since headers are mostly >>>>>> common but netflix package failed to compile since one of >>>>>> the headers was including curl headers which it could not >>>>>> find in target sysroot and it went to next include path >>>>>> and found it in native sysroot which is not what we want >>>>>> when doing cross compile. >>>>>> >>>>>> As per https://cmake.org/Wiki/CMake_Cross_Compiling >>>>>> never search for programs in target sysroot but search >>>>>> for packages,libs,includes only. >>>>>> >>>>>> Signed-off-by: Khem Raj <raj.khem@gmail.com> >>>>>> --- >>>>>> meta/classes/cmake.bbclass | 3 ++- >>>>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>>>> >>>>>> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass >>>>>> index 3e762de..3e8df37 100644 >>>>>> --- a/meta/classes/cmake.bbclass >>>>>> +++ b/meta/classes/cmake.bbclass >>>>>> @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" >>>>>> OECMAKE_EXTRA_ROOT_PATH ?= "" >>>>>> >>>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" >>>>>> +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" >>>>> ^ Split this into a second patch please you are changing two more or >>>>> less unrelated settings in one patch. >>>> >>>> These changes are related and should stay together in same patch >>>> otherwise it will break. >>>> >>>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" >>>>>> >>>>>> EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" >>>>>> @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) >>>>>> >>>>>> # only search in the paths provided so cmake doesnt pick >>>>>> # up libraries and tools from the native build machine >>>>>> -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>>>>> +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>>>> ^ Are you sure this doesn't break native builds? I am a bit scared: In >>>>> meta-qt5-extra I have lot's of native builds for build-helpers. KDE >>>>> guys seem to prefer this over shell scripts... >>>> >>>> It hasnt broken anything for my world builds thus far. I dont use >>>> meta-qt5-extras though. So testing help is welcome. >>> I'll give it a meta-qt5-extra world build and let you know >>> >> Huge fallout: >> >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/karchive/karchive.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier2/kdoctools/kdoctools-native.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwindowsystem/kwindowsystem.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcodecs/kcodecs.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kconfig/kconfig.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kguiaddons/kguiaddons.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdbusaddons/kdbusaddons.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kitemviews/kitemviews.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/attica/attica.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/sonnet/sonnet.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcoreaddons/kcoreaddons-native.bb:do_compile >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kidletime/kidletime.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwayland/kwayland.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/libqtxdg/libqtxdg_git.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/threadweaver/threadweaver.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/networkmanager-qt/networkmanager-qt.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdnssd/kdnssd.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/modemmanager-qt/modemmanager-qt.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/projectm/projectm_git.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kplotting/kplotting.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/breeze-icons/breeze-icons.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/compton-conf/compton-conf_git.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/qterminal/qterminal_git.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/obconf-qt/obconf-qt_git.bb:do_configure >> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/mixxx/mixxx_git.bb:do_compile > > >> >> so please don't apply this one > > Not yet, but specify both native includedir and target includedir while building something is broken at core > that must be fixed in anycase. May be these fallouts are just latent issues that were papered over in past. > Can you upload the logs somewhere ? > Sorry I killed them - my harddisk is not able to keep much more than 2 tmpdirs and I lost 1 day for this test already. I think the problem is that you want to kill references to includedir but you kill all references even those to native binaries addressed and required by cmake. These native binaries cannot be addressed anymore without searching in native sysroot and there is nothing wrong about it. Andreas
On Mon, Oct 31, 2016 at 6:49 PM, Andreas Müller <schnitzeltony@googlemail.com> wrote: > On Mon, Oct 31, 2016 at 5:25 PM, Khem Raj <raj.khem@gmail.com> wrote: >> >>> On Oct 31, 2016, at 5:48 AM, Andreas Müller <schnitzeltony@googlemail.com> wrote: >>> >>> On Sun, Oct 30, 2016 at 9:07 PM, Andreas Müller >>> <schnitzeltony@googlemail.com> wrote: >>>> On Sun, Oct 30, 2016 at 6:38 PM, Khem Raj <raj.khem@gmail.com> wrote: >>>>> On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller >>>>> <schnitzeltony@googlemail.com> wrote: >>>>>> On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem@gmail.com> wrote: >>>>>>> This has been cause of issue where we were getting both usr/include >>>>>>> dirs ( from target as well as native sysroot) added to compiler >>>>>>> flags. >>>>>>> >>>>>>> CXX_INCLUDES in final flags.cmake would include >>>>>>> -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include >>>>>>> most of the time it would work since headers are mostly >>>>>>> common but netflix package failed to compile since one of >>>>>>> the headers was including curl headers which it could not >>>>>>> find in target sysroot and it went to next include path >>>>>>> and found it in native sysroot which is not what we want >>>>>>> when doing cross compile. >>>>>>> >>>>>>> As per https://cmake.org/Wiki/CMake_Cross_Compiling >>>>>>> never search for programs in target sysroot but search >>>>>>> for packages,libs,includes only. >>>>>>> >>>>>>> Signed-off-by: Khem Raj <raj.khem@gmail.com> >>>>>>> --- >>>>>>> meta/classes/cmake.bbclass | 3 ++- >>>>>>> 1 file changed, 2 insertions(+), 1 deletion(-) >>>>>>> >>>>>>> diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass >>>>>>> index 3e762de..3e8df37 100644 >>>>>>> --- a/meta/classes/cmake.bbclass >>>>>>> +++ b/meta/classes/cmake.bbclass >>>>>>> @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" >>>>>>> OECMAKE_EXTRA_ROOT_PATH ?= "" >>>>>>> >>>>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" >>>>>>> +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" >>>>>> ^ Split this into a second patch please you are changing two more or >>>>>> less unrelated settings in one patch. >>>>> >>>>> These changes are related and should stay together in same patch >>>>> otherwise it will break. >>>>> >>>>>>> OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" >>>>>>> >>>>>>> EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" >>>>>>> @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) >>>>>>> >>>>>>> # only search in the paths provided so cmake doesnt pick >>>>>>> # up libraries and tools from the native build machine >>>>>>> -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>>>>>> +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >>>>>> ^ Are you sure this doesn't break native builds? I am a bit scared: In >>>>>> meta-qt5-extra I have lot's of native builds for build-helpers. KDE >>>>>> guys seem to prefer this over shell scripts... >>>>> >>>>> It hasnt broken anything for my world builds thus far. I dont use >>>>> meta-qt5-extras though. So testing help is welcome. >>>> I'll give it a meta-qt5-extra world build and let you know >>>> >>> Huge fallout: >>> >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/karchive/karchive.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier2/kdoctools/kdoctools-native.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwindowsystem/kwindowsystem.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcodecs/kcodecs.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kconfig/kconfig.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kguiaddons/kguiaddons.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdbusaddons/kdbusaddons.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kitemviews/kitemviews.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/attica/attica.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/sonnet/sonnet.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kcoreaddons/kcoreaddons-native.bb:do_compile >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kidletime/kidletime.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kwayland/kwayland.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/libqtxdg/libqtxdg_git.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/threadweaver/threadweaver.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/networkmanager-qt/networkmanager-qt.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kdnssd/kdnssd.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/modemmanager-qt/modemmanager-qt.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/projectm/projectm_git.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/kplotting/kplotting.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-kde/kf5/tier1/breeze-icons/breeze-icons.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/compton-conf/compton-conf_git.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/qterminal/qterminal_git.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-lxqt/obconf-qt/obconf-qt_git.bb:do_configure >>> /home/superandy/data/oe-core/sources/meta-qt5-extra/recipes-misc/recipes-multimedia/mixxx/mixxx_git.bb:do_compile >> >> >>> >>> so please don't apply this one >> >> Not yet, but specify both native includedir and target includedir while building something is broken at core >> that must be fixed in anycase. May be these fallouts are just latent issues that were papered over in past. >> Can you upload the logs somewhere ? >> > Sorry I killed them - my harddisk is not able to keep much more than 2 > tmpdirs and I lost 1 day for this test already. I think the problem is > that you want to kill references to includedir but you kill all > references even those to native binaries addressed and required by > cmake. These native binaries cannot be addressed anymore without > searching in native sysroot and there is nothing wrong about it. I was not precise enough: replace native binaries by native executables. Andreas
On Sat, Oct 29, 2016 at 1:47 AM, Khem Raj <raj.khem@gmail.com> wrote: > This has been cause of issue where we were getting both usr/include > dirs ( from target as well as native sysroot) added to compiler > flags. > > CXX_INCLUDES in final flags.cmake would include > -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include > most of the time it would work since headers are mostly > common but netflix package failed to compile since one of > the headers was including curl headers which it could not > find in target sysroot and it went to next include path > and found it in native sysroot which is not what we want > when doing cross compile. > > As per https://cmake.org/Wiki/CMake_Cross_Compiling > never search for programs in target sysroot but search > for packages,libs,includes only. > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > --- > meta/classes/cmake.bbclass | 3 ++- > 1 file changed, 2 insertions(+), 1 deletion(-) > > diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass > index 3e762de..3e8df37 100644 > --- a/meta/classes/cmake.bbclass > +++ b/meta/classes/cmake.bbclass > @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" > OECMAKE_EXTRA_ROOT_PATH ?= "" > > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" > +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" Using the _class-target over-ride looks odd. Perhaps making "NEVER" the default and adding over-rides for the classes which need "ONLY" (if there are any?) would make this clearer? > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" > > EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" > @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) > > # only search in the paths provided so cmake doesnt pick > # up libraries and tools from the native build machine > -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) > +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) > set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) > set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM} ) > set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) > -- > 2.10.1 > > -- > _______________________________________________ > Openembedded-core mailing list > Openembedded-core@lists.openembedded.org > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
On Nov 1, 2016 11:28 AM, "Andre McCurdy" <armccurdy@gmail.com> wrote: > > On Sat, Oct 29, 2016 at 1:47 AM, Khem Raj <raj.khem@gmail.com> wrote: > > This has been cause of issue where we were getting both usr/include > > dirs ( from target as well as native sysroot) added to compiler > > flags. > > > > CXX_INCLUDES in final flags.cmake would include > > -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include > > most of the time it would work since headers are mostly > > common but netflix package failed to compile since one of > > the headers was including curl headers which it could not > > find in target sysroot and it went to next include path > > and found it in native sysroot which is not what we want > > when doing cross compile. > > > > As per https://cmake.org/Wiki/CMake_Cross_Compiling > > never search for programs in target sysroot but search > > for packages,libs,includes only. > > > > Signed-off-by: Khem Raj <raj.khem@gmail.com> > > --- > > meta/classes/cmake.bbclass | 3 ++- > > 1 file changed, 2 insertions(+), 1 deletion(-) > > > > diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass > > index 3e762de..3e8df37 100644 > > --- a/meta/classes/cmake.bbclass > > +++ b/meta/classes/cmake.bbclass > > @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" > > OECMAKE_EXTRA_ROOT_PATH ?= "" > > > > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" > > +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" > > Using the _class-target over-ride looks odd. Perhaps making "NEVER" > the default and adding over-rides for the classes which need "ONLY" > (if there are any?) would make this clearer? > Yeah I plan to rework this a bit in that direction > > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" > > > > EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" > > @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) > > > > # only search in the paths provided so cmake doesnt pick > > # up libraries and tools from the native build machine > > -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) > > +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) > > set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) > > set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM} ) > > set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) > > -- > > 2.10.1 > > > > -- > > _______________________________________________ > > Openembedded-core mailing list > > Openembedded-core@lists.openembedded.org > > http://lists.openembedded.org/mailman/listinfo/openembedded-core -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
On 11/1/16 11:33 AM, Khem Raj wrote: > On Nov 1, 2016 11:28 AM, "Andre McCurdy" <armccurdy@gmail.com > <mailto:armccurdy@gmail.com>> wrote: >> >> On Sat, Oct 29, 2016 at 1:47 AM, Khem Raj <raj.khem@gmail.com > <mailto:raj.khem@gmail.com>> wrote: >> > This has been cause of issue where we were getting both usr/include >> > dirs ( from target as well as native sysroot) added to compiler >> > flags. >> > >> > CXX_INCLUDES in final flags.cmake would include >> > -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include >> > most of the time it would work since headers are mostly >> > common but netflix package failed to compile since one of >> > the headers was including curl headers which it could not >> > find in target sysroot and it went to next include path >> > and found it in native sysroot which is not what we want >> > when doing cross compile. >> > >> > As per https://cmake.org/Wiki/CMake_Cross_Compiling >> > never search for programs in target sysroot but search >> > for packages,libs,includes only. >> > >> > Signed-off-by: Khem Raj <raj.khem@gmail.com <mailto:raj.khem@gmail.com>> >> > --- >> > meta/classes/cmake.bbclass | 3 ++- >> > 1 file changed, 2 insertions(+), 1 deletion(-) >> > >> > diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass >> > index 3e762de..3e8df37 100644 >> > --- a/meta/classes/cmake.bbclass >> > +++ b/meta/classes/cmake.bbclass >> > @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" >> > OECMAKE_EXTRA_ROOT_PATH ?= "" >> > >> > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" >> > +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" >> >> Using the _class-target over-ride looks odd. Perhaps making "NEVER" >> the default and adding over-rides for the classes which need "ONLY" >> (if there are any?) would make this clearer? >> > > Yeah I plan to rework this a bit in that direction thinking a bit more about this problem. It doesn't seem to be solvable with the current limitations that we have for cross compiling with cmake in OE environment. What we want is 1. When compiling target packages that we should be able to use binaries and programs from native sysroot but not libraries, packages and includes This is not possible since for this we have to add both native and target sysroots to CMAKE_FIND_ROOT_PATH, but there is no fine grained selection method for expressive the requirement 1 above. We only have options ONLY - Look for files only in paths specified in CMAKE_FIND_ROOT_PATH BOTH - Along with above also look into build hosts root dir NEVER - Only look for files in build hosts root dir so we can not set CMAKE_FIND_ROOT_PATH dynamically according to MODE variables and hence the problem persists. cmake does not cater to OE usecase where we have native sysroot along with host to complement native packages. It only assumes there is build host and the target sysroot. >> > OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" >> > >> > EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" >> > @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" > CACHE STRING "LDFLAGS" ) >> > >> > # only search in the paths provided so cmake doesnt pick >> > # up libraries and tools from the native build machine >> > -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} > ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} > ${EXTERNAL_TOOLCHAIN}) >> > +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} > ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) >> > set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) >> > set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM > ${OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM} ) >> > set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY ) >> > -- >> > 2.10.1 >> > >> > -- >> > _______________________________________________ >> > Openembedded-core mailing list >> > Openembedded-core@lists.openembedded.org > <mailto:Openembedded-core@lists.openembedded.org> >> > http://lists.openembedded.org/mailman/listinfo/openembedded-core > -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core
diff --git a/meta/classes/cmake.bbclass b/meta/classes/cmake.bbclass index 3e762de..3e8df37 100644 --- a/meta/classes/cmake.bbclass +++ b/meta/classes/cmake.bbclass @@ -25,6 +25,7 @@ OECMAKE_PERLNATIVE_DIR ??= "" OECMAKE_EXTRA_ROOT_PATH ?= "" OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM = "ONLY" +OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-target = "NEVER" OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM_class-native = "BOTH" EXTRA_OECMAKE_append = " ${PACKAGECONFIG_CONFARGS}" @@ -60,7 +61,7 @@ set( CMAKE_CXX_LINK_FLAGS "${OECMAKE_CXX_LINK_FLAGS}" CACHE STRING "LDFLAGS" ) # only search in the paths provided so cmake doesnt pick # up libraries and tools from the native build machine -set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${STAGING_DIR_NATIVE} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) +set( CMAKE_FIND_ROOT_PATH ${STAGING_DIR_HOST} ${CROSS_DIR} ${OECMAKE_PERLNATIVE_DIR} ${OECMAKE_EXTRA_ROOT_PATH} ${EXTERNAL_TOOLCHAIN}) set( CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY ) set( CMAKE_FIND_ROOT_PATH_MODE_PROGRAM ${OECMAKE_FIND_ROOT_PATH_MODE_PROGRAM} ) set( CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY )
This has been cause of issue where we were getting both usr/include dirs ( from target as well as native sysroot) added to compiler flags. CXX_INCLUDES in final flags.cmake would include -I<target-sysroot>/usr/include -I<native-sysroot>/usr/include most of the time it would work since headers are mostly common but netflix package failed to compile since one of the headers was including curl headers which it could not find in target sysroot and it went to next include path and found it in native sysroot which is not what we want when doing cross compile. As per https://cmake.org/Wiki/CMake_Cross_Compiling never search for programs in target sysroot but search for packages,libs,includes only. Signed-off-by: Khem Raj <raj.khem@gmail.com> --- meta/classes/cmake.bbclass | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) -- 2.10.1 -- _______________________________________________ Openembedded-core mailing list Openembedded-core@lists.openembedded.org http://lists.openembedded.org/mailman/listinfo/openembedded-core