Refer to xc/programs/Xserver/hw/xfree86/INSTALL
for details about
building and configuring the distribution.
I build XFree86 under a Tahoe Binary Environment with a Mach 2.5
kernel and I make sure that the Mach 3.0 "release" include files and
libraries are not on my path. The Mach interface (API) is slightly
different between the Mach 2.5 kernel and Mach 3.0 kernel, but the
Mach 3.0 kernel was designed to be upwardly compatible with Mach 2.5
kernel. This means that if you build XFree86 with Mach 2.5 includes
and libraries
If you choose to build with the Mach 3.0 headers and libraries, the
applications will only work with the Mach 3.0 kernel. The Mach kernel
calls made in some of the vga*/*/*driver.c
and SuperProbe use the
Mach 2.5 calls names. To build with Mach 3.0 these latter few Mach
2.5 dependencies must be changed.
There are several different Mach Operating Systems available. One is distributed by Mt.Xinu. The others are distributed by CMU; CMU distributes two different OS's; Mach 2.5 - a monolithic kernel and Mach 3.0 a micro kernel with Unix as a server. Both OS's from CMU use the same set of binaries which were developed from the BSD4.3 Tahoe release. (Note the Mt.Xinu system uses a later "generation" of application programs. Lastly, the environment used internally at CMU is still different from what is distributed externally. This environment supports AFS and Kerberos and ...) The CMU Tahoe environment uses a gcc 1.36 compiler with a bsd derived cpp (not __STDC__); the Mt.Xinu system uses gcc 1.37.
We do not build XFree86 under all these systems, just one -- CMU Tahoe environment distributed with Mach 2.5. It should be possible to build XFree86 using any application environment and with either Mach 2.5 or Mach 3.0. Please let us know of any difficulties.
>
++Some changes are necessary to the Original Tahoe environment to build++
++X11R6. A few "new" functions are called and were thus added to ++
++/lib/libc.a(mbtowc.c, putenv.c, strdup.c, and strtol.c) and a few old++
++ header files were modified to guard against multiple inclusions ++
++(/usr/include/{time.h,utmp.h}). These three files should be ++
++dated May 31 1994; if they are not, "sup" to get the latest copies. ++
++The X11R6 build was done with the gcc 2.3.3 compiler that is shipped ++
++with Mach 3.0. You probably want to use this gcc, or maybe even get ++
++a later version. THERE IS ONE DEPENDENCY ON THE COMPILER IN ++
++xc/config/cf/mach.cf; CPP IS SPECIFIED AS: ++
++#define CppCmd /usr/mach3/lib/gcc-lib/i386-mach/2.3.3/cpp ++
++#define PreProcessCmd /usr/mach3/lib/gcc-lib/i386-mach/2.3.3/cpp ++
++THIS ASSUMES THAT THE COMPILER AND MACH3 "RELEASE" ARE ROOTED AT ++
++/usr/mach3. IF YOU DO NOT FOLLOW THIS PRACTICE OR USE ANOTHER ++
++COMPILER, YOU MUST CHANGE THESE TWO LINES ACCORDINGLY. Before you ++
++start the compilation you must type: ++
++ limit datasize unlimited ++
++Two of the .c files (lib/X11/StrKeysym.c and ++
++programs/Xserver/XIE/mixie/fax/faxtabs.c) generate intermediaries ++
++that exceed the default limit of 6Meg for data. Lastly, if you are ++
++building the Local CMU Environment make sure that /usr/cs/include is ++
++NOT on your CPATH. ++
The normal XFree86 distribution makes all the servers in bin/ setuid
root; this is not necessary. In Mach, access to I/O privileges is not
controlled by root; rather it is controlled by /dev/iopl
. What is
necessary for Mach is that the X servers be able to open /dev/iopl
for
read/write. There are many ways to achieve this effect.
$XConsortium: Mach.sgml,v 1.3 95/01/27 16:14:25 kaleb Exp $ $XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/Mach.sgml,v 3.4 1995/01/28 16:01:49 dawes Exp $
Next Chapter, Previous Chapter
Table of contents of this chapter, General table of contents
Top of the document, Beginning of this Chapter