[Patch] Fixing strcasestr detection for glibc-2.9

David Faure faure at kde.org
Sat Apr 25 01:05:49 CEST 2009


This is a bit complex. When compiling string.h with g++, glibc-2.9
defines two prototypes for strcasestr, a const one and a non-const one.

This makes the check_function_exists fail because it tries to compile code that
says "&strcasestr" -- which is ambiguous because of the overload.

Some have said this is a cmake bug and it should be fixed in cmake so that it doesn't
take the address of the function but does something more close to what autoconf did.

Not knowing the reasons for the cmake implementation, I chose a simpler approach:
since string.h defines __CORRECT_ISO_CPP_STRING_H_PROTO when it defines
both versions of strcasestr, we can just check for that. Not as easy as it sounds though,
because check_symbol_exists runs gcc and not g++ (in which case string.h doesn't
do all that magic, it's in #ifdef __cplusplus).

So I had to fork check_symbol_exists into a check_cxx_symbol_exists which uses a .cxx
extension instead of a .c extension.

cmake guys: could check_symbol_exists take an option for the extension to use, maybe?

Meanwhile, ok with this patch for kdelibs?

-- 
David Faure, faure at kde.org, sponsored by Qt Software @ Nokia to work on KDE,
Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
-------------- next part --------------
A non-text attachment was scrubbed...
Name: ConfigureChecks.cmake.diff
Type: text/x-patch
Size: 1976 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kde-buildsystem/attachments/20090425/28be61f4/attachment.diff 
-------------- next part --------------
A non-text attachment was scrubbed...
Name: CheckCXXSymbolExists.cmake
Type: text/x-cmake
Size: 3319 bytes
Desc: not available
Url : http://mail.kde.org/pipermail/kde-buildsystem/attachments/20090425/28be61f4/attachment.bin 


More information about the Kde-buildsystem mailing list