[OE-core] [PATCH] cmake.bbclass: Exclude native sysroot from CMAKE_FIND_ROOT_PATH

Andreas Müller schnitzeltony at googlemail.com
Sun Oct 30 20:07:00 UTC 2016


On Sun, Oct 30, 2016 at 6:38 PM, Khem Raj <raj.khem at gmail.com> wrote:
> On Sun, Oct 30, 2016 at 6:34 AM, Andreas Müller
> <schnitzeltony at googlemail.com> wrote:
>> On Sat, Oct 29, 2016 at 10:47 AM, Khem Raj <raj.khem at 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 at 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



More information about the Openembedded-core mailing list