Descriptions of Important xc Directories and Subdirectories
config
cf contains generic and platform specific imake configuration settings, build rules, and other macros. Cygwin/X specific settings, build rules, and shared library template are contained in cygwin.cf, cygwin.rules, and cygwin.tmpl, respectively. Settings in cygwin.cf can be overridden for a single build host by creating a file called host.def that defines any host specific settings. xorgsite.def may be used as a template for host.def; simply copy xorgsite.def to host.def, then edit and/or uncomment any settings that you wish to override.
imake contains source code for the imake utility that is used to combine the configuration files in cf with the Imakefile in a given directory to produce a Makefile that will work correctly for a given platform; in our case, that platform is Cygwin. Any build problems with imake will stop compilation of the X Window System CVS tree, as there will not be any Makefile's to operate on. This directory will therefore be of interest only when imake fails to build.
makedepend contains source code for the makedepend utility that scans the included files in the .c and .h used by a project to determine which files the build targets depend upon. This directory will only be of interest when makedepend fails to build.
util contains a few general utilities, such as lndir.
doc
hardcopy contains precompiled PostScript documentation for various components of the X Window System. Cygwin/X-specific documentation is not contained in this directory. This directory is of little interest to Cygwin/X programmers.
specs contains the sources to build the documents in hardcopy. This directory is of little interest to Cygwin/X programmers.
util contains a few awk scripts for use in building documentation. This directory is of little interest to Cygwin/X programmers.
fonts contains font definition files used to compile fonts. This directory is of little interest to Cygwin/X programmers.
include contains various X Window System headers that are not generally specific to any one client or library (i.e. X.h, Xproto.h, and keysymdef.h).
lib contains both X client and X Server libraries. Cygwin/X does not generally call any functions in these libraries directly; however, we do have to link to several of these libraries to get our X Server to build. These libraries are maintained by various developers from the X Window System project and there are occasional synchronizations with The Open Group's X.org. Cygwin/X programmers occasionally need to fix Cygwin-related build errors that occur in these libraries.
nls contains locale definition files. This directory is of little interest to Cygwin/X programmers.
programs
Xserver contains the heart of Cygwin/X, namely, the Cygwin/X X Server.
cfb* contains deprecated color framebuffer drawing procedures that are not compatible with the Shadow drawing system that Cygwin/X depends upon. This directory is of no interest to Cygwin/X programmers.
dix contains [drawing]
device independent X
routines. main.c contains the
main
entry-point function for the Cygwin/X X
Server. The X Server startup procedure can be followed by examining
main
.
fb contains the modern framebuffer drawing procedures used by Cygwin/X. This directory is maintained by Keith Packard and is only of interest to Cygwin/X programmers when it fails to build.
hw contains [drawing] hardware dependent functions.
vfb contains the Virtual Framebuffer X Server. The vfb server draws to a system memory framebuffer with the primary purpose of allowing X clients to run on a machine that does not have display hardware.
xfree86 contains source code for the X Window System servers that run on various operating systems that generally have low-level access to the graphics hardware. Cygwin/X does not have low-level access to the graphics hardware, thus Cygwin/X is not able to utilize the X Window System server.
xnest contains source code for the Nested X Server which runs inside of another X Server. xnest is not generally of interest to Cygwin/X programmers.
xwin contains the source code for the Cygwin/X X Server. This is the primary directory that Cygwin/X programmers are interested in.
include contains header files specific to the X Server program, such as graphics context structures. This directory is useful to Cygwin/X programmers when they need to lookup the name or data type of members of various X Server structures.
mi contains machine independent drawing
routines. These drawing routines are used by the Cygwin/X Native GDI
X Server engine. In turn, the machine independent routines depend in
winGetSpans
, winFillSpans
,
and winSetSpans
, which are implemented in the
Native GDI engine.
miext contains various machine independent X extensions.
layer contains source code for the layer extension. This extension is supported by Cygwin/X, however, this directory will be of interest only when layer fails to build.
shadow contains source code for the shadow extension that the Cygwin/X X Server depends upon. This directory is of primary importance to Cygwin/X, but it is maintained by other programmers and is only of direct interest to Cygwin/X programmers when it fails to build. The shadow extension does three things:
Allows the fb graphics routines to draw to an offscreen framebuffer.
Keeps track of the regions of the offscreen framebuffer that have been drawn on.
Calls one of Cygwin/X's engine dependent ShadowUpdate () functions to transfer the updated regions of the offscreen framebuffer to the screen.
os contains operating system dependent X Server functions. However, the functions in the os have been written in such a way that they are actually compatible with most UNIX-style operating systems, include Cygwin.
util contains a few utilities for programmers, such as a memory leak counter. Cygwin/X has never used these utilities, thus this directory is of little interest to Cygwin/X programmers.