Making non-standard OS checks in cmake?

Alexander Neundorf neundorf at kde.org
Fri Jan 1 19:01:14 CET 2010


On Friday 01 January 2010, Raphael Kubo da Costa wrote:
> Hey there,
>
> As you can see on my.cdash.org, both kdeadmin and kdenetwork fail to build
> cleanly on FreeBSD:
>
>  * kdeadmin/kuser's CMakeLists.txt's check for the need to link against -
> lcrypt is broken on FreeBSD,  since the crypt() function is defined in
> unistd.h, not crypt.h, even though -lcrypt still must be passed to the
> compiler

Does crypt.h also exist ?
You could also try check_symbol_exists() ( 
http://www.cmake.org/cmake/help/cmake2.6docs.html#module:CheckSymbolExists ) 
to find out whether crypt() is in unistd.h or crypt.h

>  * kdenetwork/kppp has been broken since FreeBSD 8.0 - currently the ports
> system just disable its build, and I'd like to do the same upstream.
> In both cases (the former can actually be solved in a different way, but I
> have felt the need for this in other cases as well), it would be useful to
> know if the current OS is FreeBSD, just like APPLE, WIN32 or UNIX are set.
> Is there an easy way to do that?

Yes, you can test 
if (${CMAKE_SYSTEM_NAME} STREQUAL FreeBSD)

(instead of STREQUAL you could also use MATCHES, depending on what you want to 
test, e.g. ... MATCHES BSD to check for multiple BSDs).

The names are the names of the platform files in 
share/cmake-2.6/Modules/Platform/.

Alex


More information about the Kde-buildsystem mailing list