1
2             Info on using Mesa 3.0 with Linux Quake I and Quake II
3
4
5
6Disclaimer
7----------
8
9I am _not_ a Quake expert by any means.  I pretty much only run it to
10test Mesa.  There have been a lot of questions about Linux Quake and
11Mesa so I'm trying to provide some useful info here.  If this file
12doesn't help you then you should look elsewhere for help.  The Mesa
13mailing list or the news://news.3dfx.com/3dfx.linux.glide newsgroup
14might be good.
15
16Again, all the information I have is in this file.  Please don't email
17me with questions.
18
19If you have information to contribute to this file please send it to
20me at brianp@elastic.avid.com
21
22
23
24Linux Quake
25-----------
26
27You can get Linux Quake from http://www.idsoftware.com/
28
29Quake I and II for Linux were tested with, and include, Mesa 2.6.  You
30shouldn't have too many problems if you simply follow the instructions
31in the Quake distribution.
32
33
34
35RedHat 5.0 Linux problems
36-------------------------
37
38RedHat Linux 5.x uses the GNU C library ("glibc" or "libc6") whereas
39previous RedHat and other Linux distributions use "libc5" for its
40runtime C library.
41
42Linux Quake I and II were compiled for libc5.  If you compile Mesa
43on a RedHat 5.x system the resulting libMesaGL.so file will not work
44with Linux Quake because of the different C runtime libraries.
45The symptom of this is a segmentation fault soon after starting Quake.
46
47If you want to use a newer version of Mesa (like 3.x) with Quake on
48RedHat 5.x then read on.
49
50The solution to the C library problem is to force Mesa to use libc5.
51libc5 is in /usr/i486-linux-libc5/lib on RedHat 5.x systems.
52
53Emil Briggs (briggs@tick.physics.ncsu.edu) nicely gave me the following
54info:
55
56>   I only know what works on a RedHat 5.0 distribution. RH5 includes
57> a full set of libraries for both libc5 and glibc. The loader ld.so
58> uses the libc5 libraries in /usr/i486-linux-libc5/lib for programs
59> linked against libc5 while it uses the glibc libraries in /lib and
60> /usr/lib for programs linked against glibc.
61> 
62> Anyway I changed line 41 of mklib.glide to
63>     GLIDELIBS="-L/usr/local/glide/lib -lglide2x -L/usr/i486-linux-libc5/lib"
64> 
65> And I started quake2 up with a script like this
66> #!/bin/csh
67> setenv LD_LIBRARY_PATH /usr/i486-linux-libc5/lib
68> setenv MESA_GLX_FX f
69> ./quake2 +set vid_ref gl
70> kbd_mode -a
71> reset
72
73
74I've already patched the mklib.glide file.  You'll have to start Quake
75with the script shown above though.
76
77
78
79**********************
80
81Daryll Strauss writes:
82
83Here's my thoughts on the problem. On a RH 5.x system, you can NOT build
84a libc5 executable or library. Red Hat just doesn't include the right
85stuff to do it.
86
87Since Quake is a libc5 based application, you are in trouble. You need
88libc5 libraries.
89
90What can you do about it? Well there's a package called gcc5 that does
91MOST of the right stuff to compile with libc5. (It brings back older
92header files, makes appropriate symbolic links for libraries, and sets
93up the compiler to use the correct directories) You can find gcc5 here: 
94ftp://ecg.mit.edu/pub/linux/gcc5-1.0-1.i386.rpm
95
96No, this isn't quite enough. There are still a few tricks to getting
97Mesa to compile as a libc5 application. First you have to make sure that
98every compile uses gcc5 instead of gcc. Second, in some cases the link
99line actually lists -L/usr/lib which breaks gcc5 (because it forces you
100to use the glibc version of things)
101
102If you get all the stuff correctly compiled with gcc5 it should work.
103I've run Mesa 3.0B6  and its demos in a window with my Rush on a Red Hat
1045.1 system. It is a big hassle, but it can be done. I've only made Quake
105segfault, but I think that's from my libRush using the wrong libc. 
106
107Yes, mixing libc5 and glibc is a major pain. I've been working to get
108all my libraries compiling correctly with this setup. Someone should
109make an RPM out of it and feed changes back to Brian once they get it
110all working. If no one else has done so by the time I get the rest of my
111stuff straightened out, I'll try to do it myself.
112
113							- |Daryll
114
115
116
117*********************
118
119David Bucciarelli (tech.hmw@plus.it) writes:
120
121I'm using the Mesa-3.0beta7 and the RedHat 5.1 and QuakeII is
122working fine for me.  I had only to make a small change to the
123Mesa-3.0/mklib.glide file, from:
124
125
126    GLIDELIBS="-L/usr/local/glide/lib -lglide2x
127-L/usr/i486-linux-libc5/lib -lm"
128
129to:
130
131    GLIDELIBS="-L/usr/i486-linux-libc5/lib -lglide2x"
132
133and to make two symbolic links:
134
135[david@localhost Mesa]$ ln -s libMesaGL.so libMesaGL.so.2
136[david@localhost Mesa]$ ln -s libMesaGLU.so libMesaGLU.so.2
137
138I'm using the Daryll's Linux glide rpm for the Voodoo2 and glibc (it
139includes also the Glide for the libc5). I'm not using the /dev/3Dfx and
140running QuakeII as root with the following env. var:
141
142export
143LD_LIBRARY_PATH=/dsk1/home/david/src/gl/Mesa/lib:/usr/i486-linux-libc5/lib
144
145I think that all problems are related to the glibc, Quake will never
146work if you get the following output:
147
148[david@localhost Mesa]$ ldd lib/libMesaGL.so
149        libglide2x.so => /usr/lib/libglide2x.so (0x400f8000)
150        libm.so.6 => /lib/libm.so.6 (0x40244000)
151        libc.so.6 => /lib/libc.so.6 (0x4025d000)
152        /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x00000000)
153
154You must get the following outputs:
155
156[david@localhost Mesa]# ldd lib/libMesaGL.so
157        libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
158(0x400f3000)
159
160[root@localhost quake2]# ldd quake2
161        libdl.so.1 => /lib/libdl.so.1 (0x40005000)
162        libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x40008000)
163        libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x40010000)
164
165[root@localhost quake2]# ldd ref_gl.so
166        libMesaGL.so.2 =>
167/dsk1/home/david/src/gl/Mesa/lib/libMesaGL.so.2 (0x400eb000)
168        libglide2x.so => /usr/i486-linux-libc5/lib/libglide2x.so
169(0x401d9000)
170        libX11.so.6 => /usr/i486-linux-libc5/lib/libX11.so.6
171(0x40324000)
172        libXext.so.6 => /usr/i486-linux-libc5/lib/libXext.so.6
173(0x403b7000)
174        libvga.so.1 => /usr/i486-linux-libc5/lib/libvga.so.1
175(0x403c1000)
176        libm.so.5 => /usr/i486-linux-libc5/lib/libm.so.5 (0x403f5000)
177        libc.so.5 => /usr/i486-linux-libc5/lib/libc.so.5 (0x403fd000)
178
179
180***********************
181
182Steve Davies (steve@one47.demon.co.uk) writes:
183
184
185Try using:
186
187    export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib
188    ./quake2 +set vid_ref gl
189
190to start the game... Works for me, but assumes that you have the
191compatability libc5 RPMs installed.
192
193
194***************************
195
196WWW resources - you may find additional Linux Quake help at these URLs:
197
198
199http://quake.medina.net/howto
200
201http://webpages.mr.net/bobz
202
203http://www.linuxgames.com/quake2/
204
205
206
207----------------------------------------------------------------------
208