[Patch] Fixing strcasestr detection for glibc-2.9

Eelko Berkenpies fedora at berkenpies.nl
Sat Apr 25 09:10:40 CEST 2009


On Sat, 25 Apr 2009 01:05:49 +0200, David Faure <faure at kde.org> wrote:
> 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?

For what it's worth, David helped me out building KDE SVN on my Fedora 11
(Rawhide) laptop. The patches definitely fixed my problem and I was able to
successfully build kdelibs (and all other components) overnight.

David, thanks for your effort and your patience!

-- 
Eelko Berkenpies


More information about the Kde-buildsystem mailing list