Building XFree86

# 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:
   - X Consortium X11R6 distribution with fixes 01-11 applied.
   - `XFree86-3.1.1.diff.gz`
   - `XFree86-contrib-3.1.1.diff.gz` (an optional patch for some of the X Consortium's ``contrib'' distribution)
   - If upgrading from XFree86 version 3.1 you will only need the `3.1-3.1.1.diff.gz` patch, and optionally the `contrib-3.1-3.1.1.diff.gz` patch.
   - The full XFree86 source tree requires about 110MB. An additional 110MB (more for OSs without shared libraries) is required to build everything. About 45-55MB (for OSs with shared libraries) is required to install the full distribution. It is possible to reduce the space required by removing some parts which are not essential to the build process:

     > `

     >      xc/test                      13MB
     >      xc/doc/hardcopy               8MB
     >      xc/doc/specs                 11MB

     > `

     If you don't need to build the fonts, `xc/fonts` can be removed saving 30MB. If you don't want to build PEX or XIE you can remove:

     > `

     >      xc/programs/Xserver/XIE       3MB
     >      xc/programs/Xserver/PEX5      2MB

     > `

     A few more MB can be freed by removing unnecessary directories under `xc/programs/Xserver/hw/`.
   - It is possible to configure a cut-down source tree for building only the XFree86 servers. Building from a cut-down source tree requires about 40-45MB of disk space. The files/directories required to do this are listed in the ServersOnly file (which can be found in `xc/programs/Xserver/hw/XFree86/doc/`).
   - The `XFree86-3.1.1-contrib.diff.gz` patch provides patches to a small part of the X Consortium's contrib distribution. It mostly covers those clients which were in the core distribution of X11R5, but were moved to the contrib distribution for X11R6. To use this patch, you need to have the following files/directories from the final X Consortium R6 contrib release (not the initial contrib-0 version):

     > `

     >               contrib/Imakefile
     >               contrib/programs/Imakefile
     >               contrib/programs/ico/
     >               contrib/programs/listres/
     >               contrib/programs/showfont/
     >               contrib/programs/viewres/
     >               contrib/programs/xbiff/
     >               contrib/programs/xcalc/
     >               contrib/programs/xditview/
     >               contrib/programs/xedit/
     >               contrib/programs/xev/
     >               contrib/programs/xeyes/
     >               contrib/programs/xfontsel/
     >               contrib/programs/xgc/
     >               contrib/programs/xload/
     >               contrib/programs/xman/
     >               contrib/programs/xmessage/

     > `

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