Fixed references to old documentation location.
[wine] / documentation / compiling.sgml
1   <chapter id="compiling">
2     <title>Compiling Wine</title>
3     <para>How to compile wine, and problems that may arise...</para>
4
5     <sect1 id="compiling-wine">
6       <title>Compiling Wine</title>
7
8       <sect2>
9         <title>Tools required</title>
10         <para>
11           <itemizedlist>
12             <listitem>
13               <para>
14                 gcc -- 2.7.x required (Wine uses attribute stdcall).
15                 Versions earlier than 2.7.2.3 barf on shellord.c
16                 -- compile without optimizing for that file.
17                 In addition EGCS 1.1.x and GCC 2.95.x are reported
18                 to work fine.
19               </para>
20             </listitem>
21             <listitem>
22               <para>
23                 flex >= 2.5.1 (required for the debugger and wrc,
24                 and lex won't do)
25               </para>
26             </listitem>
27             <listitem>
28               <para>
29                 bison (also required for debugger. Don't know whether BSD yacc
30                 would work.)
31               </para>
32             </listitem>
33             <listitem>
34               <para>
35                 X11 libs and include files
36               </para>
37             </listitem>
38             <listitem>
39               <para>
40                 Xpm libs and include files
41               </para>
42             </listitem>
43             <listitem>
44               <para>
45                 texinfo >= 3.11 (optional, to compile the documentation.)
46               </para>
47             </listitem>
48             <listitem>
49               <para>
50                 autoconf (if you want to remake configure, which is
51                 not normally required)
52               </para>
53             </listitem>
54             <listitem>
55               <para>
56                 XF86DGA extension (optional, detected by configure,
57                 needed for DirectX support)
58               </para>
59             </listitem>
60             <listitem>
61               <para>
62                 Open Sound System (optional, detected by configure,
63                 for sound support)
64               </para>
65             </listitem>
66           </itemizedlist>
67         </para>
68         <para>
69           The Red Hat RPMs are gcc-XXX, flex-XXX, XFree86-devel-XXX, xpm-XXX,
70           and xpm-devel, where XXX is the version number.
71         </para>
72       </sect2>
73
74       <sect2>
75         <title>Space required</title>
76         <para>
77           You also need about 230 MB of available disk space for compilation.
78           The compiled libwine.so binary takes around 5 MB of disk space,
79           which can be reduced to about 1 MB by stripping ('strip wine').
80           Stripping is not recommended, however, as you can't submit
81           proper crash reports with a stripped binary any more.
82         </para>
83       </sect2>
84       
85       <sect2>
86         <title>Common problems</title>
87         <para>
88           If you get a repeatable sig11 compiling shellord.c, thunk.c
89           or other files, try compiling just that file without optimization.
90           Then you should be able to finish the build.
91         </para>
92       </sect2>
93
94       <sect2>
95         <title>OS specific issues</title>
96         <para>
97           <itemizedlist>
98             <listitem>
99               <para>
100                 FreeBSD -- In order to run Wine, the FreeBSD kernel
101                 needs to be compiled with
102
103                 <informaltable frame="all">
104                   <tgroup cols="2">
105                     <tbody>
106                       <row>
107                         <entry>options</entry>
108                         <entry>USER_LDT</entry>
109                       </row>
110                       <row>
111                         <entry>options</entry>
112                         <entry>SYSVSHM</entry>
113                       </row>
114                       <row>
115                         <entry>options</entry>
116                         <entry>SYSVSEM</entry>
117                       </row>
118                       <row>
119                         <entry>options</entry>
120                         <entry>SYSVMSG</entry>
121                       </row>
122                     </tbody>
123                   </tgroup>
124                 </informaltable>
125
126
127                 If you need help, read the chapter "<ulink url="http://www.freebsd.org/handbook/kernelconfig-building.html">Building and Installing a Custom Kernel</ulink>" in the "<ulink url="http://www.freebsd.org/handbook/">FreeBSD handbook</ulink>. You'll need to be running FreeBSD 3.x or later.
128               </para>
129             </listitem>
130             <listitem>
131               <para>
132                 SCO Unixware, Openserver -- UW port is supported by SCO.
133               </para>
134             </listitem>
135             <listitem>
136               <para>
137                 OS/2 -- not a complete port. See <ulink url="http://odin.netlabs.org/ProjectAbout.phtml">Odin</ulink> for a project which uses some Wine code.
138               </para>
139             </listitem>
140             <listitem>
141               <para>
142                 Solaris x86 2.x -- Needs GNU toolchain (gcc, gas, flex as above, yacc may work) to compile, seems functional (980215). 
143               </para>
144             </listitem>
145             <listitem>
146               <para>
147                 DGUX, HP, Irix, or other Unixes; non-intel Linux.
148                 No ports have been seriously attempted.
149                 For non-intel Unixes, only a winelib port is relevant.
150                 Alignment may be a problem.
151               </para>
152             </listitem>
153             <listitem>
154               <para>
155                 Macintosh/Rhapsody/BeOS -- no ports have been attempted.
156               </para>
157             </listitem>
158           </itemizedlist>
159         </para>
160       </sect2>
161     </sect1>
162   </chapter>
163
164 <!-- Keep this comment at the end of the file
165 Local variables:
166 mode: sgml
167 sgml-parent-document:("wine-doc.sgml" "set" "book" "part" "chapter" "")
168 End:
169 -->