[oe] [PATCH] render cmake search path stricter

Douglas Royds douglas.royds at tait.co.nz
Wed Jun 24 22:05:49 UTC 2009


Valentin Longchamp wrote:
> Douglas Royds wrote:
>> Any particular reason not to include CMAKE_FIND_ROOT_PATH_MODE_PACKAGE?
>
> Simply because I did not know about it as I based myself on the this 
> doc: http://www.cmake.org/Wiki/CMake_Cross_Compiling and they never 
> talk about this variable. I do not see a lot of references to that 
> variable so I don't think we should set it here.

It's documented at the bottom of the find_package() section of the CMake 
documentation, along with the documentation of CMAKE_FIND_ROOT_PATH:

    http://www.cmake.org/cmake/help/cmake2.6docs.html#command:find_package

I think we should set this one, so long as it doesn't break any existing 
packages. I haven't tested this.

>> Normally this won't have any effect, as CMake will look in the CMake 
>> installation for FindSomething.cmake ("module" mode). But if a 
>> package installs a SomethingConfig.cmake in /usr/share/cmake (the 
>> "config" mode of find_package) we should be looking only in staging, 
>> not trawling around on the host PC.
>
> I agree with you, we should be looking only in staging. But the 
> problem is that with the below proposed option 
> DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=ONLY, the OE buids do not work 
> well. You certainly need a few tools from the host PC. That's why I 
> now have CMAKE_FIND_ROOT_PATH_MODE_PROGRAM=BOTH. But the default 
> behaviour with cmake is that the directories listed in 
> CMAKE_FIND_ROOT_PATH are searched for, which is what we want.

True. I suggest that we remove CMAKE_FIND_ROOT_PATH_MODE_PROGRAM from 
your patch below.

>> Valentin Longchamp wrote:
>>> The search is only done in the STAGING directy: all the needed tools
>>> should be there (already built) and all the libs and header are there
>>> too. With this, we are sure that we do not mix with the host libs,
>>> headers or tools.
>>>
>>> Signed-off-by: Valentin Longchamp <valentin.longchamp at epfl.ch>
>>> ---
>>>  classes/cmake.bbclass |    3 +++
>>>  1 files changed, 3 insertions(+), 0 deletions(-)
>>>
>>> diff --git a/classes/cmake.bbclass b/classes/cmake.bbclass
>>> index b5b7b86..af8f3a9 100644
>>> --- a/classes/cmake.bbclass
>>> +++ b/classes/cmake.bbclass
>>> @@ -21,6 +21,9 @@ cmake_do_configure() {
>>>    cmake ${OECMAKE_SOURCEPATH} \
>>>      -DCMAKE_INSTALL_PREFIX:PATH=${prefix} \
>>>      -DCMAKE_FIND_ROOT_PATH=${STAGING_DIR_HOST} \
>>> +    -DCMAKE_FIND_ROOT_PATH_MODE_PROGRAM=ONLY \
>>> +    -DCMAKE_FIND_ROOT_PATH_MODE_LIBRARY=ONLY \
>>> +    -DCMAKE_FIND_ROOT_PATH_MODE_INCLUDE=ONLY \
>>>      ${EXTRA_OECMAKE} \
>>>      -Wno-dev
>>>  }
>>>   


=======================================================================
This email, including any attachments, is only for the intended
addressee.  It is subject to copyright, is confidential and may be
the subject of legal or other privilege, none of which is waived or
lost by reason of this transmission.
If the receiver is not the intended addressee, please accept our
apologies, notify us by return, delete all copies and perform no
other act on the email.
Unfortunately, we cannot warrant that the email has not been
 altered or corrupted during transmission.
=======================================================================





More information about the Openembedded-devel mailing list