・X11R7.1(その2)
その後,しばらくビルドは順調に進んだけど,Xdmx(ってなんだ?)をリンクする際に
gcc -m64 -g -O2 -o Xdmx -rdynamic Xdmx-dmx.o Xdmx-dmxcb.o Xdmx-dmxcmap.o Xdmx-dmxcursor.o Xdmx-dmxdpms.o Xdmx-dmxextension.o ... /usr/X11/lib/libXau.so /usr/X11/lib/libXdmcp.so -lm ../../dix/.libs/libdix.a(devices.o): In function `CoreKeyboardBell': /sources/X/srcs/xserver/dix/devices.c:216: undefined reference to `DDXRingBell' input/libdmxinput.a(dmxinputinit.o): In function `dmxDeviceOnOff': /sources/X/srcs/xserver/hw/dmx/input/dmxinputinit.c:437: undefined reference to `miPointerGetMotionBufferSize' /sources/X/srcs/xserver/hw/dmx/input/dmxinputinit.c:437: undefined reference to `miPointerGetMotionEvents' input/libdmxinput.a(dmxinputinit.o): In function `dmxAddDevice': /sources/X/srcs/xserver/hw/dmx/input/dmxinputinit.c:714: undefined reference to `miRegisterPointerDevice' input/libdmxinput.a(dmxxinput.o): In function `ChangePointerDevice': /sources/X/srcs/xserver/hw/dmx/input/dmxxinput.c:102: undefined reference to `miPointerGetMotionEvents' /sources/X/srcs/xserver/hw/dmx/input/dmxxinput.c:103: undefined reference to `miPointerGetMotionBufferSize' collect2: ld returned 1 exit status make[3]: *** [Xdmx] Error 1 make[3]: Leaving directory `/sources/X/srcs/xserver/hw/dmx'
なんてエラーが発生.ソースコードを grep したら,このあたりの定義は xserver/mi/mipointer.h に
extern int miPointerGetMotionBufferSize( void ) _X_DEPRECATED;
extern int miPointerGetMotionEvents( DeviceIntPtr /*pPtr*/, xTimecoord * /*coords*/, unsigned long /*start*/, unsigned long /*stop*/, ScreenPtr /*pScreen*/ );
という風にあるのだけど,find で定義を探しても
root:/sources/X/srcs# find . -name "*.[ch]" | xargs grep miPointerGetMotionEvents ./driver/xf86-input-evdev/src/evdev_axes.c: miPointerGetMotionEvents, ./driver/xf86-input-mouse/src/mouse.c: miPointerGetMotionEvents, ./driver/xf86-input-vmmouse/src/vmmouse.c: "miPointerGetMotionEvents", ./driver/xf86-input-vmmouse/src/vmmouse.c: miPointerGetMotionEvents, pMse->Ctrl, ./xserver/hw/darwin/darwin.c: miPointerGetMotionEvents, ./xserver/hw/dmx/input/dmxinputinit.c: miPointerGetMotionEvents, ./xserver/hw/dmx/input/dmxmotion.c: * This file provides functions similar to miPointerGetMotionEvents and ./xserver/hw/dmx/input/dmxmotion.c:/** This routine performs the same function as \a miPointerGetMotionEvents: ./xserver/hw/dmx/input/dmxmotion.c: * \a miPointerGetMotionEvents for devices with only 2 axes (i.e., core ./xserver/hw/dmx/input/dmxmotion.c: * Because compatibility with miPointerGetMotionEvents is not possible, ./xserver/hw/dmx/input/dmxxinput.c: new_dev->valuator->GetMotionProc = miPointerGetMotionEvents; ./xserver/hw/xfree86/os-support/bsd/bsd_mouse.c: miPointerGetMotionEvents, ./xserver/hw/xfree86/os-support/sco/sco_mouse.c: miPointerGetMotionEvents, pMse->Ctrl, ./xserver/hw/xfree86/os-support/usl/usl_mouse.c: miPointerGetMotionEvents, pMse->Ctrl, ./xserver/hw/xgl/egl/kinput.c: miPointerGetMotionEvents, ./xserver/hw/xgl/xglinput.c: miPointerGetMotionEvents, ./xserver/hw/xwin/winmouse.c: miPointerGetMotionEvents, ./xserver/mi/mipointer.h:extern int miPointerGetMotionEvents(
と,使っている側は見つかるものの,実際の定義はされてない感じ.
それでは,と 7.0 のソースコードを見たら mi/mipointer.c に
/* * Pointer/CursorDisplay interface routines */ int miPointerGetMotionBufferSize () { return MOTION_SIZE; } int miPointerGetMotionEvents (pPtr, coords, start, stop, pScreen) DeviceIntPtr pPtr; xTimecoord *coords; unsigned long start, stop; ScreenPtr pScreen; ...
といった定義がされている模様.このあたりを 7.1 の mipointer.c に持っていけば何とかなるのだろうか??