1. INTRODUCTION

Wine is a program which allows running Microsoft Windows programs
(including DOS, Windows 3.x and Win32 executables) on Unix.  It
consists of a program loader which loads and executes a Microsoft
Windows binary, and a library that implements Windows API calls using
their Unix or X11 equivalents. The library may also be used for
porting Win32 code into native Unix executables.

Wine is free software, and its license (contained in the file LICENSE)
is BSD style.  Basically, you can do anything with it except claim
that you wrote it.

2. QUICK START

Whenever you compile from source, it is recommended to use the Wine
Installer to build and install wine.  From the top-level Wine
directory (which contains this file), run:

./tools/wineinstall

Run programs as "wine [options] program".  For more information and
problem resolution, read the rest of this file, the Wine manpage,
and the files in the documentation directory in the Wine source.

3. REQUIREMENTS

To compile and run Wine, you must have one of the following:

	Linux version 2.0.36 or above
	FreeBSD-current or FreeBSD 3.0 or later
	Solaris x86 2.5 or later

Linux info:
  Although Linux version 2.0.x will mostly work, certain features
  (specifically LDT sharing) required for properly supporting Win32
  threads were not implemented until kernel version 2.2.  If you get
  consistent thread-related crashes, you may want to upgrade to 2.2.
  Also, some bugs were fixed and additional features were added
  late in the Linux 2.0.x series, so if you have a very old Linux kernel,
  you may want to upgrade to at least the latest 2.0.x release.

FreeBSD info:
  On FreeBSD, you may want to apply an LDT sharing patch too
  (unless you are tracking -current where it finally has
  been committed just recently), and there also is a small sigtrap
  fix thats needed for wine's debugger. (Actually now that its using
  ptrace() by default it may no longer make a difference but it still
  doesn't hurt...) And if you're running a system from the -stable
  branch older than Nov 15 1999, like a 3.3-RELEASE, then you also
  need to apply a signal handling change that was MFC'd at that date.
  Make sure you have the USER_LDT, SYSVSHM, SYSVSEM, and SYSVMSG options
  turned on in your kernel.
  More information including patches for the -stable branch is in
  the ports tree:
  ftp://ftp.freebsd.org/pub/FreeBSD/FreeBSD-current/ports/emulators/wine/files/

Solaris info:
  You will most likely need to build wine with the GNU toolchain
  (gcc, gas, etc.)

Wine requires kernel-level threads to run. Currently, only Linux
version 2.0 or later, FreeBSD-current or FreeBSD 3.0 or later,
and Solaris x86 version 2.5 or later are supported.
Other operating systems which support kernel threads may be supported
in the future.

You need to have the X11 development include files installed
(called xlib6g-dev in Debian and XFree86-devel in RedHat).
To use wine's support for multi-threaded applications, your X libraries
must be reentrant, which is probably the default by now.
If you have libc6 (glibc2), or you compiled the X libraries yourself,
they were probably compiled with the reentrant option enabled.

You also need to have libXpm installed on your system. The sources for
it are available at ftp.x.org and all its mirror sites in the directory
/contrib/libraries. If you are using RedHat, libXpm is distributed as the
xpm and xpm-devel packages. Debian distributes libXpm as xpm4.7, xpm4g,
and xpm4g-dev. SuSE calls these packages xpm and xpm-devel.

On x86 Systems gcc >= 2.7.2 is required.
Versions earlier than 2.7.2.3 may have problems when certain files
are compiled with optimization, often due to problems with header file
management. pgcc currently doesn't work with wine. The cause of this problem
is unknown.

You also need flex version 2.5 or later and yacc.
Bison will work as a replacement for yacc. If you are
using RedHat or Debian, install the flex and bison packages.

In case you want to build the documentation yourself, you'll also
need the DocBook tools (db2html, db2ps, db2pdf).

4. COMPILATION

In case you chose to not use wineinstall, run the following commands
to build Wine:

./configure
make depend
make

This will build the program "wine" and numerous support libraries/binaries.  
The program "wine" will load and run Windows executables.
The library "libwine" ("Winelib") can be used to compile and link
Windows source code under Unix.

To see compile configuration options, do ./configure --help.

To upgrade to a new release by using a patch file, first cd to the
top-level directory of the release (the one containing this README
file). Then do a "make clean", and patch the release with:

    gunzip -c patch-file | patch -p1

where "patch-file" is the name of the patch file (something like
Wine-yymmdd.diff.gz). You can then re-run "./configure", and then
run "make depend && make".


5. SETUP

Once Wine has been built correctly, you can do "make install"; this
will install the wine executable, the Wine man page, and a few other
needed files.

If you want to build the documentation, you can run "make" in the
documentation directory.

Wine requires a configuration file named wine.conf. Its default
location is /usr/local/etc, but you can supply a different name when
configuring wine by using the --prefix or --sysconfdir options to
./configure. You can also override the global configuration file with
a file named "config" in your ~/.wine directory.

The format of this file is explained in the man page. The file
documentation/samples/config contains an example configuration file
which has to be adapted and copied to one of the two locations
mentioned above.

See http://www.winehq.com/config.html for further configuration hints.


6. RUNNING PROGRAMS

When invoking Wine, you may specify the entire path to the executable,
or a filename only.

For example: to run Solitaire:

	wine sol		   (using the searchpath to locate the file)
	wine sol.exe

	wine c:\\windows\\sol.exe  (using a DOS filename)

	wine /usr/windows/sol.exe  (using a Unix filename)

Note: the path of the file will also be added to the path when
      a full name is supplied on the commandline.

Wine is not yet complete, so some programs may crash. Provided you set up
winedbg correctly according to documentation/debugger.sgml, you will be dropped
into a debugger so that you can investigate and fix the problem. For more
information on how to do this, please read the file documentation/debugging.
If you post a bug report, please read the file documentation/bugreports to
see what information is required.

You should backup all your important files that you give Wine access
to, or use a special Wine copy of them, as there have been some cases
of users reporting file corruption. Do NOT run Explorer, for instance,
if you don't have a proper backup, as it renames/cripples several
directories sometimes.


7. GETTING MORE INFORMATION

DOCU:	grep -i "SearchString" `find documentation/`|more

FAQ:	The Wine FAQ is located at http://www.winehq.com/FAQ

WWW:	A great deal of information about Wine is available from WineHQ at
	http://www.winehq.com/, especially various user guides.
        Untested patches against the current release
	are available on the wine-patches mailing list; see 
	http://www.winehq.com/dev.shtml#ml for more information.

HOWTO:	The Wine HOWTO is available at
	http://www.westfalen.de/witch/wine-HOWTO.txt .

Usenet:	Please browse old messages on http://www.dejanews.com/ to check whether 
	your problem is already fixed before posting a bug report to the 
	newsgroup. 

	The best place to get help or to report bugs is the Usenet newsgroup
	comp.emulators.ms-windows.wine. Please read the file 
	documentation/bugreports to see what information should be included 
	in a bug report.

IRC:	Online help is available at channel #WineHQ on IRCnet.

CVS:	The current Wine development tree is available through CVS.
	Go to http://www.winehq.com/dev.shtml for more information.

If you add something, or fix a bug, please send a patch ('diff -u'
format preferred) to julliard@winehq.com or to the
wine-patches@winehq.com mailing list for inclusion in the next
release.

--
Alexandre Julliard
julliard@winehq.com
