How to test for gnu extensions
William A. Hoffman
billlist at nycap.rr.com
Thu Feb 9 21:54:55 CET 2006
At 03:25 PM 2/9/2006, David Faure wrote:
>Currently kdelibs fails to compile for me with cmake because S_ISSOCK isn't detected
>(so the config.h defines it, and it clashes with the one from sys/stat.h during compilation).
>Anyway - the reason is that _GNU_SOURCE isn't defined, so sys/stat.h doesn't define S_ISSOCK.
>
>I tried porting the check from acinclude.m4.in to define _GNU_SOURCE, which gives something like:
>
>--- ConfigureChecks.cmake (revision 507577)
>+++ ConfigureChecks.cmake (working copy)
>@@ -5,6 +5,7 @@ include(CheckFunctionExists)
> include(CheckLibraryExists)
> include(CheckPrototypeExists)
> include(CheckTypeSize)
>+include(CheckCSourceCompiles)
>
> #check for libz using the cmake supplied FindZLIB.cmake
> if(ZLIB_FOUND)
>@@ -148,6 +149,13 @@ check_include_files( "X11/Xlib.h;X11/ext
> check_include_files( X11/ICE/ICElib.h HAVE_X11_ICE_ICELIB_H)
> check_include_files( X11/extensions/Xrender.h HAVE_XRENDER)
>
>+# Check if we need GNU extensions. E.g. for S_ISSOCK etc.
>+CheckCSourceCompiles("
>+#include <features.h>
>+#ifndef __GNU_LIBRARY__
>+#error no gnu here
>+#endif
>+" _GNU_SOURCE)
>
> #check_symbol_exists(sockaddr_in6 "netinet/in.h" HAVE_STRUCT_SOCKADDR_IN6)
> check_symbol_exists(LC_MESSAGES "locale.h" HAVE_LC_MESSAGES)
>
>
>But this gives me:
>
>CMake Error: Error in cmake code at
>/devel/kde/src/4/kdelibs/ConfigureChecks.cmake:153:
>Unknown CMake command "CheckCSourceCompiles".
The name of the macro is
check_c_source_compiles not CheckCSourceCompiles.
>(BTW, is the multi-line string for the source code OK?)
Yes, that is OK.
>--
>David Faure, faure at kde.org, sponsored by Trolltech to work on KDE,
>Konqueror (http://www.konqueror.org), and KOffice (http://www.koffice.org).
>
>_______________________________________________
>Kde-buildsystem mailing list
>Kde-buildsystem at kde.org
>https://mail.kde.org/mailman/listinfo/kde-buildsystem
More information about the Kde-buildsystem
mailing list