Move the implementation of comctl32._TrackMouseEvent to
[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                 texinfo >= 3.11 (optional, to compile the documentation.)
41               </para>
42             </listitem>
43             <listitem>
44               <para>
45                 autoconf (if you want to remake configure, which is
46                 not normally required)
47               </para>
48             </listitem>
49             <listitem>
50               <para>
51                 XF86DGA extension (optional, detected by configure,
52                 needed for DirectX support)
53               </para>
54             </listitem>
55             <listitem>
56               <para>
57                 Open Sound System (optional, detected by configure,
58                 for sound support)
59               </para>
60             </listitem>
61           </itemizedlist>
62         </para>
63         <para>
64           The Red Hat RPMs are gcc-XXX, flex-XXX, and
65           XFree86-devel-XXX, where XXX is the version number.
66         </para>
67       </sect2>
68
69       <sect2>
70         <title>Space required</title>
71         <para>
72           You also need about 230 MB of available disk space for compilation.
73           The compiled libwine.so binary takes around 5 MB of disk space,
74           which can be reduced to about 1 MB by stripping ('strip wine').
75           Stripping is not recommended, however, as you can't submit
76           proper crash reports with a stripped binary any more.
77         </para>
78       </sect2>
79       
80       <sect2>
81         <title>Common problems</title>
82         <para>
83           If you get a repeatable sig11 compiling shellord.c, thunk.c
84           or other files, try compiling just that file without optimization.
85           Then you should be able to finish the build.
86         </para>
87       </sect2>
88
89       <sect2>
90         <title>OS specific issues</title>
91         <para>
92           <itemizedlist>
93             <listitem>
94               <para>
95                 FreeBSD -- In order to run Wine, the FreeBSD kernel
96                 needs to be compiled with
97
98                 <informaltable frame="all">
99                   <tgroup cols="2">
100                     <tbody>
101                       <row>
102                         <entry>options</entry>
103                         <entry>USER_LDT</entry>
104                       </row>
105                       <row>
106                         <entry>options</entry>
107                         <entry>SYSVSHM</entry>
108                       </row>
109                       <row>
110                         <entry>options</entry>
111                         <entry>SYSVSEM</entry>
112                       </row>
113                       <row>
114                         <entry>options</entry>
115                         <entry>SYSVMSG</entry>
116                       </row>
117                     </tbody>
118                   </tgroup>
119                 </informaltable>
120
121
122                 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.
123               </para>
124             </listitem>
125             <listitem>
126               <para>
127                 SCO Unixware, Openserver -- UW port is supported by SCO.
128               </para>
129             </listitem>
130             <listitem>
131               <para>
132                 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.
133               </para>
134             </listitem>
135             <listitem>
136               <para>
137                 Solaris x86 2.x -- Needs GNU toolchain (gcc, gas, flex as above, yacc may work) to compile, seems functional (980215). 
138               </para>
139             </listitem>
140             <listitem>
141               <para>
142                 DGUX, HP, Irix, or other Unixes; non-intel Linux.
143                 No ports have been seriously attempted.
144                 For non-intel Unixes, only a winelib port is relevant.
145                 Alignment may be a problem.
146               </para>
147             </listitem>
148             <listitem>
149               <para>
150                 Macintosh/Rhapsody/BeOS -- no ports have been attempted.
151               </para>
152             </listitem>
153           </itemizedlist>
154         </para>
155       </sect2>
156     </sect1>
157   </chapter>
158
159 <!-- Keep this comment at the end of the file
160 Local variables:
161 mode: sgml
162 sgml-parent-document:("wine-doc.sgml" "set" "book" "part" "chapter" "")
163 End:
164 -->