Version: kdebase-workspace-4.2.0 (using KDE 4.2.0) Compiler: cmake version 2.4-patch 6 OS: Linux Installed from: Compiled From Sources Linux Slackware 12 X Window System Version 1.3.0 Release Date: 19 April 2007 X Protocol Version 11, Revision 0, Release 1.3 LibXi version: libXi.so.6.0.0 libxklavier version: libxklavier.so.11.0.0 There is a bug while building KDE 4.2 from stable sources. Error: Linking CXX shared module ../../lib/kcm_keyboard_layout.so CMakeFiles/kcm_keyboard_layout.dir/x11helper.o: In function `X11Helper::registerForNewDeviceEvent(_XDisplay*)': /home/cquiros/download/kde420/kdebase-workspace-4.2.0/kcontrol/kxkb/x11helper.cpp:413: undefined reference to `_XiGetDevicePresenceNotifyEvent' Configure messages: -- Found Qt-Version 4.4.3 (using /usr/local/Trolltech/Qt-4.4.3/bin/qmake) -- Found X11: /usr/lib/libX11.so -- Phonon Version: 4.3.50 -- Found KDE 4.2 include dir: /usr/local/kde420/include -- Found KDE 4.2 library dir: /usr/local/kde420/lib -- Found the KDE4 kconfig_compiler preprocessor: /usr/local/kde420/bin/kconfig_compiler -- Found automoc4: /usr/local/kde420/bin/automoc4 -- Strigi API needs 'signed char' -- checking for module 'qimageblitz' -- package 'qimageblitz' not found -- WARNING: you are using the obsolete 'PKGCONFIG' macro use FindPkgConfig -- Found Python executable: /usr/bin/python2.5 -- Found Python version: 2.5.1 -- Found Python library: /usr/lib/libpython2.5.so -- Found SIP version: 4.7.7 -- Found PyQt4 version: 4.4.3 -- Found PyKDE4 version 4.1.3 /usr/share/sip/PyKDE4 -- Found Soprano: /usr/local/kde420/lib/libsoprano.so -- Found Soprano includes: /usr/local/kde420/include -- Found Soprano Index: /usr/local/kde420/lib/libsopranoindex.so -- Found Soprano Client: /usr/local/kde420/lib/libsopranoclient.so -- Found Soprano Plugin Dir: /usr/local/kde420/share/soprano/plugins -- Found Soprano Plugins: nquadparser nquadserializer raptorparser raptorserializer redlandbackend -- WARNING: you are using the obsolete 'PKGCONFIG' macro use FindPkgConfig -- Will build networkmanger-0.6 -- Found XMMS: the nowplaying dataengine will support XMMS 1.x -- Found Soprano: /usr/local/kde420/lib/libsoprano.so -- Found Soprano includes: /usr/local/kde420/include -- Found Soprano Index: /usr/local/kde420/lib/libsopranoindex.so -- Found Soprano Client: /usr/local/kde420/lib/libsopranoclient.so -- Found Soprano Plugin Dir: /usr/local/kde420/share/soprano/plugins/soprano/plugins -- Found Soprano Plugins: nquadparser nquadserializer raptorparser raptorserializer redlandbackend -- Found Freetype: -lfreetype -lz -- WARNING: you are using the obsolete 'PKGCONFIG' macro use FindPkgConfig -- Found GObject libraries: /usr/lib/libgobject-2.0.so;/usr/lib/libgmodule-2.0.so;/usr/lib/libgthread-2.0.so;/usr/lib/libglib-2.0.so -- Found GObject includes : /usr/include/glib-2.0/gobject -- /home/cquiros/download/kde420/kdebase-workspace-4.2.0/kcontrol: skipped subdir $(KSMCARD_SUBDIR) -- ----------------------------------------------------------------------------- -- The following external packages were located on your system. -- This installation will have the extra features provided by these packages. + glib2 + GoogleGadgets + QEdje + Python + Soprano + Nepomuk + libxss + libxext + Compositing support + Captury framework library + lm-sensors + BlueZ + NetworkManager + XMMS + Soprano + FreeType + libxklavier + xkbfile + libusb + libxft + ck-connector Congratulations! All external packages have been found. External sources: In some OpenSolaris they indicate that XiGetDevicePresenceNotifyEvent is not an exported function of libXi.
Could you please paste the output from command: grep "DevicePresence(" -A 5 /usr/include/X11/extensions/XInput.h
Hi, This is the output: #define DevicePresence(dpy, type, _class) \ { \ extern int _XiGetDevicePresenceNotifyEvent(Display *); \ type = _XiGetDevicePresenceNotifyEvent(dpy); \ _class = (0x10000 | _devicePresence); \ }
ok, so there should be _XiGetDevicePresenceNotifyEvent as it's defined in the header. I guess the only thing I can suggest is to update xorg/xi libraries. There's also chance that the older gcc does not take the "extern C" override in cpp source - in this case you can *temporary* change extern to extern "C" {} in defint to check it out.
It compiles and works fine when updating the libXi libraries to 1.2.0 and inputproto to 1.5.0 (Dependency of libXi 1.2.0). Might be good to modify the configure script to check for libXi >= 1.2.0.
Thanks, I've added support for _XiGetDevicePresenceNotifyEvent() function to kxkb cmake script. Change pushed in trunk.