1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
|
Building XFree86® from a Source Distribution
David Dawes, Matthieu Herrb
6 February 2005
Abstract
This document describes how to build XFree86 from the source dis-
tribution and is designed to be used in conjunction with the oper-
ating system (OS) specific README files.
NOTE: Refer to the appropriate OS-specific README file before
attempting to build XFree86. These files often contain additional
information that you need to successfully build for your OS.
We highly recommend using gcc to build XFree86, but XFree86 also generally
builds with the native compiler for each OS platform;
1. How to get the XFree86 4.4.99.901 source
The recommended way of getting the XFree86 4.4.99.901 source is to obtain it
directly from the XFree86 CVS repository. There are several ways of doing
that, and they are described at our CVS web page
<URL:http://www.xfree86.org/cvs/> The CVS tag for this release is
"xf-4_4_99_901".
Alternatively you can download the source for the XFree86 4.4.99.901 snapshot
as a tarball from ftp://ftp.xfree86.org/pub/XFree86/devel-
snaps/XFree86-4.4.99.901.tar.bz2. This can be extracted by running:
bzip2 -d < XFree86-4.4.99.901.tar.bz2 | tar vxf -
All methods will produce one main source directory called xc.
2. Configuring the source before building
In most cases it shouldn't be necessary to configure anything before build-
ing.
If you do want to make configuration changes, it is recommended that you
start by going to the xc/config/cf directory, and copying the file
xf86site.def to host.def. Then read through the host.def file (which is
heavily commented), and set your configuration parameters. Usually you can
find the default settings by checking the .cf file(s) relevant to your OS.
A good rule to follow is only to change things that you understand as it's
easy to create build problems by changing the default configuration. Check
the configuration parameters specified in the xc/config/cf/README.
3. Using a shadow directory of symbolic links for the build
A recommended practice is to use a shadow directory of symbolic links to do
the build of XFree86 as this allows you to keep the source directory unmodi-
fied during the build. It has the following benefits:
o When you are using CVS to maintain your source tree, the update process
is not disturbed by foreign files not under CVS's control.
o It is possible to build XFree86 for several different Operating System
or architectures from the same sources, shared by read-only NFS mounts.
o It is possible to build XFree86 with different configuration options, by
putting a real copy of the host.def file in each build tree and by cus-
tomizing it separately in each build tree.
To make a shadow directory of symbolic links, use the following steps:
o create the directory at the top of the build tree. It is often created
at the same level that the xc directory, but this is not mandatory.
cd the directory containing the xcdirectory
mkdir build
o use the "lndir" command to make the shadow tree:
cd build
lndir ../xc
Note that you can refer to the xc directory with an absolute path if
needed.
See the lndir(1) manual page for details.
If lndir is not already installed on your system, you can build it manually
from the XFree86 sources by running the following commands:
cd xc/config/util
make -f Makefile.ini lndir
cp lndir some directory in your PATH
Occasionally there may be stale links in the build tree, like when files in
the source tree are removed or renamed. These can be cleaned up by running
the "cleanlinks" script from the build directory (see the cleanlinks(1) man-
ual page). Rarely there will be changes that will require the build tree to
be re-created from scratch. A symptom of this can be mysterious build prob-
lems. The best solution for this is to remove the build tree, and then re-
create it using the steps outlined above.
4. Building and installing the distribution
Before building the distribution, read through the OS-specific README file in
xc/programs/Xserver/hw/xfree86/doc that is relevant to you. Once you have
addressed the OS-specific details, go your build directory (either the xc
directory or the shadow tree created before) and run "make World" with the
BOOTSTRAPCFLAGS set as described in the OS-specific README (if necessary, but
most systems supported by XFree86 don't need BOOTSTRAPCFLAGS). It is advis-
able to redirect stdout and stderr to World.Log so that you can track down
problems that might occur during the build.
With Bourne-like shells (Bash, the Korn shell, zsh, etc.) use a command like:
make World > World.log 2>&1
Witch C-shell variants (csh, tcsh, etc), use:
make World >& World.log
You can follow the progress of the build by running:
tail -f World.log
in a terminal.
When the build is finished, you should check the World.Log file to see if
there were any problems. If there weren't any then you can install the bina-
ries. By default the "make World" process will stop when the first error is
found. To restart the build process after correcting the problems, just run
'make'. If Imakefiles or part of the build configuration was changed as part
of correcting the problem, either re-run "make World", or run "make Every-
thing".
If you would prefer "make World" to continue as best it can past errors, then
run it in the following way instead of the way described above:
for Bourne-like shells:
make WORLDOPTS=-k World > World.log 2>&1
for C-shell variants:
make WORLDOPTS=-k World >& World.log
To do the install, run "make install" and "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.
5. Reconfiguring the server (source distribution)
To build a different set of servers or servers with a different set of driv-
ers installed:
1. Make sure the source for any new drivers is in the correct place (e.g.,
driver source should be in a subdirectory of xc/pro-
grams/Xserver/hw/xfree86/drivers).
2. Change the settings of the server defines in host.def to specify which
servers you wish to build. Also, change the driver lists to suit your
needs.
3. From xc/programs/Xserver, run:
make Makefile
make Makefiles
make includes
make depend
make
6. Other useful make targets
There are some other useful targets defined in the top level Makefile of
XFree86:
o Everything after a make World, make Everything does everything a make
World does, except the cleaning of the tree. It is a way to quickly
rebuild the tree after a source patch, but it is not 100% bullet proof.
There are cases were it is better to force a full build by using make
World.
o clean does a partial cleaning of the source tree. Removes object files
and generated manual pages, but leaves the Makefiles and the generated
dependencies files in place. After a make clean you need to re-run
make includes
make depend
make
to rebuild the XFree86.
o distclean does a full cleaning of the source tree, removing all gener-
ated files. After a make distclean, make World is the only option to
rebuild XFree86.
o includes generates all generated header files and in-tree symbolic links
needed by the build. These files are removed by a make clean.
o depend recomputes the dependencies for the various targets in all Make-
files. Depending on the operating system, the dependencies are stored in
the Makefile, or as a separate file, called .depend. This target needs
the generated include files produced by make includes.
o VerifyOS displays the detected operating system version. If the numbers
shown do not match your system, you probably need to set them manually
in host.def and report the problem to <XFree86@XFree86.org>.
Generated from XFree86: xc/programs/Xserver/hw/xfree86/doc/sgml/BUILD.sgml,v 3.17 dawes Exp $
$XFree86$
|