Rather than placing object files and library files right in the
source tree, they're instead put into a parallel build tree.
The build tree is made with the
cd ~/DRI-CVS ln -s xc XFree40 mkdir build cd build lndir -silent -ignorelinks ../XFree40
The build tree will be populated with symbolic links which point back into the CVS source tree.
Advanced users may have several build trees for compiling and testing with different options.
~/DRI-CVS/build/xc/config/cf/host.def file is used
to configure the XFree86 build process.
You can change it to customize your build options or make adjustments
for your particular system configuration
host.def file will look something like this:
#define DefaultCCOptions -Wall (i386) #define DefaultGcc2i386Opt -O2 (Alpha) #define DefaultGcc2AxpOpt -O2 -mcpu=ev6 (or similar) #define LibraryCDebugFlags -O2 #define BuildServersOnly YES #define XF86CardDrivers vga tdfx mga r128 i810 #define LinuxDistribution LinuxRedHat #define DefaultCCOptions -ansi GccWarningOptions -pipe #define BuildXF86DRI YES #define HasGlide3 YES /* Optionally turn these on for debugging */ /* #define GlxBuiltInTdfx YES */ /* #define GlxBuiltInMga YES */ /* #define GlxBuiltInR128 YES */ /* #define DoLoadableServer NO */ #define SharedLibFont NOThe
ProjectRootvariable specifies where the XFree86 files will be installed. You probably don't want to use
/usr/X11R6/because that would overwrite your default X files. The following is recommended:
#define ProjectRoot /usr/X11R6-DRI
Especially note the XF86CardDrivers line to be sure your driver is listed.
If you have 3dfx hardware be sure that the Glide 3x headers are
/usr/include/glide3/ and that the Glide 3x
library is installed at
If you do not have 3dfx hardware comment out the
To compile the complete DRI tree:
cd ~/DRI-CVS/build/xc/ make World >& World.LOGOr if you want to watch the compilation progress:
cd ~/DRI-CVS/build/xc/ make World >& World.LOG & tail -f World.LOGWith the default compilation flags it's normal to get a lot of warnings during compilation.
Building will take some time so you may want to go check your email or visit slashdot.
WARNING: do not use the -j option with make. It's reported that it does not work with XFree86/DRI.
Using your text editor, examine
World.LOG for errors
by searching for the pattern
Verify that the DRI kernel module(s) for your system were built:
cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel ls
For the 3dfx Voodoo, you should see tdfx.o. For the Matrox G200/G400, you should see mga.o. For the ATI Rage 128, you should see r128.o. For the Intel i810, you should see i810.o.
If the DRI kernel module(s) failed to build you should verify that you're using the right version of the Linux kernel. The most recent kernels are not always supported.
If your build machine is running a different version of the kernel
than your target machine (i.e. 2.2.x vs. 2.4.x), make will
select the wrong kernel headers. This can be fixed by explicitly
setting the value of
If the path to your kernel source is
cd ~/DRI-CVS/build/xc/programs/Xserver/hw/xfree86/os-support/linux/drm/kernel make TREE=/usr/src/linux-2.4or alternatively, edit Makefile to include this change.
After fixing the errors, run
make World again.
Later, you might just compile parts of the source tree but it's
important that the whole tree will build first.
The DRI kernel modules are in
To load the appropriate DRI module in your running kernel you can
either use ismod and restart your X server or copy the kernel module
/lib/modules/2.4.x/kernel/driver/char/drm/ then run
depmod and restart your X server.
Make sure you first unload any older DRI kernel modules that might be already loaded.