NetBSD and cmake
Hasso Tepper
hasso at kde.org
Sun Mar 26 18:23:09 CEST 2006
I provoked my coworker to try to compile kdelibs trunk with cmake on
NetBSD platform and there are our findings.
Jpeg and gif libraries and includes are not found. In NetBSD these are
installed from pkgsrc package management system, which installs software
in /usr/pkg. Adding /usr/pkg/include and /usr/pkg/lib into appropriate
places in cmake/modules/FindGIF.cmake and cmake/modules/FindJPEG.cmake
files fixes problem.
Btw, because /usr/pkg is common for all systems using pkgsrc (it's not
NetBSD specific), maybe there is more generic solution possible?
There is problem with libintl, but as we noticed TODO entry in the
cmake/modules/FindGettext.cmake file, we didn't investigate further -
gettext functionality is not in libc in NetBSD.
No X11 headers are found during compile. Investigation showed that
although X11_X11_INCLUDE_PATH is set correctly to /usr/X11R6/include, no
CMakeLists.txt uses it. Quick check with dcop/CMakeLists.txt showed that
adding "include_directories( ${X11_X11_INCLUDE_PATH} )" line indeed fixes
the problem. We "solved" the problem with symlink in /usr/include for
now.
getservbyname_r, getprotobyname_r and getservbyport_r symbols exist in
NetBSD libc for binary compatibility, but no declaration in headers, so
they can't be used for compiling. AFAICS only symbol in library is
checked at the moment (check_function_exists), but it isn't enough.
There is problem in kjs/collector.cpp file. At the moment it is assumed
that if pthread_np.h exists (HAVE_PTHREAD_NP_H), pthread_attr_get_np()
must be used. In NetBSD pthread_attr_get_np() must be used as well, but
it is declared in pthread.h. Actual functions must be checked.
That's all about NetBSD. I hope that I didn't forget something :).
I also compiled kdebase on Linux, it compiled without problem, although I
noticed two problems related to build system.
No any kcontrol modules is found after install. As there is no problem
with unsermake, I think that it's problem with cmake build system.
ksysguarddrc file is installed into $(prefix)FILES (in my system it's in
/usr/local/kde4FILES/ksysguarddrc now).
Hope that it helps.
regards,
--
Hasso Tepper
KDE Estonian Team
More information about the Kde-buildsystem
mailing list