1 Building XFree86

Contents of this section

NOTE: Refer to the appropriate OS-specific README file before attempting to build XFree86. These files contain additional information that you may need to successfully build under your OS.

We highly recommend using GCC-2 to build XFree86. Do not use version 2.6.0 or 2.4.x versions prior to 2.4.5 due to bugs that cause either build or execution failures. Most of the XFree86 3.1.1 binary kits are built with GCC 2.4.5, 2.5.8 or 2.6.3. Use of GCC's -m486 option will yield approximately 5% better performance on a 486, with no degradation (other than larger binaries) on a 386. (gcc-2 is available from prep.ai.mit.edu and other sites archiving GNU source.)

  1. You need the following:
  2. If you are starting from the stock X Consortium PL11 distribution, go to the directory above your xc directory, and run:
          gzip -d < XFree86-3.1.1.diff.gz | patch -p -E
    
    If you are installing in an unmodified tree there shouldn't be any problems. Check for any patch rejections and resolve them. If you've modified some files (e.g. xf86site.def, site.def) you should rename them, and restore the standard versions before patching. If you don't have backups of the originals, individual files can be easily obtained from ftp.x.org:/pub/R6untarred . If you are patching a tree that you've previously used, make sure you run ``make clean'' from the xc directory before applying the diffs. If you are using the patch for the contrib code, go to the directory above your contrib directory, and run:
          gzip -d < XFree86-3.1.1-contrib-diff.gz | patch -p -E
    
  3. If you are starting from the XFree86 3.1 distribution, go to the directory above your xc directory, and run:
          gzip -d < 3.1-3.1.1.diff.gz | patch -p -E
    
    If you are installing in an unmodified tree there shouldn't be any problems. Check for any patch rejections and resolve them. If you've modified some files (e.g. xf86site.def, site.def) you should rename them, and restore the standard versions before patching. If you don't have backups of the originals, individual files for version 3.1.1 can be easily obtained from ftp.xfree86.org:/pub/XFree86/3.1.1/untarred . If you are patching a tree that you've previously used, make sure you run ``make clean'' from the xc directory before applying the diffs. If you are using the patch for the contrib code, go to the directory above your contrib directory, and run:
          gzip -d < contrib-3.1-3.1.1-diff.gz | patch -p -E
    
  4. Read through config/cf/xf86site.def. Set the various parameters to suit your configuration. If it is your first build, you should set BuildFonts, InstallXdmConfig, InstallXinitConfig to YES (as well as InstallFSConfig if you are building the Font Server). If you are using a cut-down source tree for building only the servers, set BuildServersOnly to YES. Set the defines to specify which server(s) you want to build:
     Colour SVGA server (XF86_SVGA):           XF86SVGAServer
     16 colour (S)VGA server (XF86_VGA16):     XF86VGA16Server
     ET4000/W32 accelerated server (XF86_W32): XF86W32Server
     Monochrome server  (XF86_Mono):           XF86MonoServer
     S3 accelerated server (XF86_S3):          XF86S3Server
     8514/A accelerated server (XF86_8514):    XF86I8514Server
     Mach8 accelerated server (XF86_Mach8):    XF86Mach8Server
     Mach32 accelerated server (XF86_Mach32):  XF86Mach32Server
     Mach64 accelerated server (XF86_Mach64):  XF86Mach64Server
     P9000 accelerated server (XF86_P9000):    XF86P9000Server
     AGX accelerated server (XF86_AGX):        XF86AGXServer
    
    To build a dual headed Mono+VGA2 server, set XF86MonoDualServer to YES. To build a dual headed Mono+VGA16 server, set XF86VGA16DualServer to YES. Set ServerToInstall to the server you want linked to X. If this isn't specified, it will default to the first one in the above list which is being built. The drivers you wish to include in the server are also selected in xf86site.def. The drivers used for the SVGA server are set by the XF86SvgaDrivers parameter. This should be a list of the driver directory names (in lower case). The ordering determines the order in which the drivers are probed at startup. The default is to include all supplied drivers. Similarly the following parameters specify drivers for the other servers:
     XF86Vga16Drivers            XF86_VGA16
     XF86Vga2Drivers             XF86_Mono (vga2 drivers)
     XF86MonoDrivers             XF86_Mono, XF86_VGA16 (other mono drivers)
    
    The SVGA, VGA16 and VGA2 screens each have ``generic'' drivers, and these should always be last in the list because their probe will succeed for any VGA card.
  5. If you want to be able to format the XFree86 documentation (which is now in LinuxDoc/SGML form), you will need to get and install linuxdoc-sgml-1.1.tar.gz plus the patches which can be found on ftp.xfree86.org:/pub/XFree86/3.1.1/LinuxDoc . Check in the xf86site.def file and uncomment the appropriate Linuxdoc options.
  6. Before building the distribution, read through the OS-specific README file in xc/programs/Xserver/hw/xfree86/doc that is relevant to you. Once those OS-specific details have been taken care of, go the xc directory and run ``make World'' with the BOOTSTRAPCFLAGS set as described in the OS-specific README.
  7. If all goes well, that will finish successfully in anything from two to twelve hours depending on your system. You should check World.Log to see if there were any problems. If there weren't any then you can do a ``make install'' and a ``make install.man''. Make sure you have enough space in /usr/X11R6 for the install to succeed. If you want to install on a filesystem other than /usr, make a symbolic link to /usr/X11R6 before installing. To install the binary Link Kit (in /usr/X11R6/lib/Server), run:
         make install.linkkit
    
  8. To build the subset of the contrib release supported by XFree86, make sure that you have first built and installed the core distribution. Then go to the contrib directory and run ``xmkmf -a; make''. When that is completed you can do a ``make install'' and a ``make install.man''.

Next Chapter, Previous Chapter

Table of contents of this chapter, General table of contents

Top of the document, Beginning of this Chapter