Re: CHECK_SYMBOL_EXISTS and C++
Paul Osmialowski <[email protected]>
| Newsgroups | gmane.science.robotics.playerstage |
|---|---|
| Message-ID | <[email protected]> |
On Mon, 5 Jul 2010, Paul Osmialowski wrote:
> Looking through SearchForStuff.cmake I've found one more thing:
>
> CHECK_LIBRARY_EXISTS (rt clock_gettime "${PLAYER_EXTRA_LIB_DIRS}"
> HAVE_LIBRT)
> SET (CMAKE_REQUIRED_LIBRARIES rt)
> CHECK_FUNCTION_EXISTS (clock_gettime HAVE_CLOCK_GETTIME_FUNC)
> SET (CMAKE_REQUIRED_LIBRARIES)
> IF (HAVE_LIBRT AND HAVE_CLOCK_GETTIME_FUNC)
> SET (HAVE_CLOCK_GETTIME TRUE)
> ENDIF (HAVE_LIBRT AND HAVE_CLOCK_GETTIME_FUNC)
>
> On QNX clock_gettime is a part of libc. Due to last if, HAVE_CLOCK_GETTIME
> is set wrong way on QNX and replacement is (successfully at least!) used.
>
> I'll try to prepare patch that correct it soon.
>
> Paul
>
Oh My God! Fixing this solved biggest mystery I had with Player on QNX!
Patch will be released as soon as I complete regression tests on other QNX
and Linux machines (I don't want to break anything).
Paul
> On Mon, 5 Jul 2010, Paul Osmialowski wrote:
>
>> On Fri, 2 Jul 2010, Rich Mattes wrote:
>>
>>> There's an example of this in the check for TIMESPEC in
>>> cmake/internal/SearchForStuff.cmake. It's also how CMake does things like
>>> CHECK_INCLUDE_FILES internally.
>>>
>>> http://www.cmake.org/Wiki/CMake:How_To_Write_Platform_Checks might help,
>>> CHECK_C_SOURCE_COMPILES is at the bottom.
>>>
>>> Rich
>>
>> I looked at SearchForStuff.cmake and found some good examples, however, I
>> wonder why in one file two different approaches are used:
>>
>> 1. CHECK_C_SOURCE_COMPILES (for me it would be CHECK_CXX_SOURCE_COMPILES):
>>
>> INCLUDE (CheckCSourceCompiles)
>> SET (CHECK_TIMESPEC_SOURCE_CODE "#include <time.h>
>> int main () { struct timespec *tmp; return 0; }")
>> CHECK_C_SOURCE_COMPILES ("${CHECK_TIMESPEC_SOURCE_CODE}"
>> HAVE_STRUCT_TIMESPEC)
>>
>> 2. TRY_COMPILE (how does it know if it is C or C++?!):
>>
>> SET (testSTLSource ${CMAKE_CURRENT_BINARY_DIR}/CMakeTmp/test_stl.cpp)
>> FILE (WRITE ${testSTLSource}
>> "#include <string>\nint main () {std::string a = \"blag\"; return
>> 0;}\n")
>> TRY_COMPILE (HAVE_STL ${CMAKE_CURRENT_BINARY_DIR} ${testSTLSource})
>>
>> Personally, I would take CHECK_CXX_SOURCE_COMPILES as it explicitly
>> picks the right compiler. Both aproaches seem to be answers for my
>> problem.
>>
>> Paul
>>
>>>
>>> -----Original Message-----
>>> From: Geoffrey Biggs [mailto:[email protected]]
>>> Sent: Friday, July 02, 2010 2:51 AM
>>> To: [email protected]
>>> Subject: Re: [Playerstage-developers] CHECK_SYMBOL_EXISTS and C++
>>>
>>> You can supply CMake with a short program and instruct it to see if it
>>> compiles, then based on the result decide if the feature that program
>>> uses is supported or not.
>>>
>>> Geoff
>>>
>>> On 02/07/10 15:40, Paul Osmialowski wrote:
>>>> Is it possible for cmake to check if some C++ stream modifier is defined?
>>>> I doubt CHECK_SYMBOL_EXISTS is capable to do that. I'd like to modify
>>>> CMakeLists.txt for epuck driver so it could check if std::showbase is
>>>> defined in <iostream> (which is not in older g++).
>>>>
>>>> Paul
>>>
>>> ----------------------------------------------------------------------------
>>> --
>>> This SF.net email is sponsored by Sprint
>>> What will you do first with EVO, the first 4G phone?
>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>> _______________________________________________
>>> Playerstage-developers mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/playerstage-developers
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> This SF.net email is sponsored by Sprint
>>> What will you do first with EVO, the first 4G phone?
>>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>>> _______________________________________________
>>> Playerstage-developers mailing list
>>> [email protected]
>>> https://lists.sourceforge.net/lists/listinfo/playerstage-developers
>>>
>>
>> ------------------------------------------------------------------------------
>> This SF.net email is sponsored by Sprint
>> What will you do first with EVO, the first 4G phone?
>> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
>> _______________________________________________
>> Playerstage-developers mailing list
>> [email protected]
>> https://lists.sourceforge.net/lists/listinfo/playerstage-developers
>>
>
> ------------------------------------------------------------------------------
> This SF.net email is sponsored by Sprint
> What will you do first with EVO, the first 4G phone?
> Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first
> _______________________________________________
> Playerstage-developers mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/playerstage-developers
>
------------------------------------------------------------------------------
This SF.net email is sponsored by Sprint
What will you do first with EVO, the first 4G phone?
Visit sprint.com/first -- http://p.sf.net/sfu/sprint-com-first