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 (called Winelib) 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 man page,
the files in the documentation directory in the Wine source, and
especially the wealth of information found at http://www.winehq.com.

3. REQUIREMENTS

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

	Linux version 2.0.36 or above
	FreeBSD 4.x or FreeBSD 5-CURRENT
	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:
  Make sure you have the USER_LDT, SYSVSHM, SYSVSEM, and SYSVMSG options
  turned on in your kernel.
  More information including patches for the 4-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.

Don't forget to uninstall any conflicting previous Wine installation
first.  Try either "dpkg -r wine" or "rpm -e wine" or "make uninstall"
before installing.

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

Wine requires a configuration file named named "config" in your
~/.wine directory. The format of this file is explained in the config file
man page (documentation/wine.conf.man).
The file documentation/samples/config contains an example configuration file
which has to be adapted and copied to the location mentioned above.

See http://www.winehq.com/support.shtml for further configuration hints.

In order to verify the correctness of the environment you need for
Wine to run successfully, run "./tools/winecheck | less".  You'll get
a percentage score indicating "Wine configuration correctness".

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. Not even other MS apps such as e.g. Messenger are safe,
as they launch Explorer somehow. This particular corruption (!$!$!$!$.pfr)
can be fixed with http://home.nexgo.de/andi.mohr/download/decorrupt_explorer


7. GETTING MORE INFORMATION

WWW:	A great deal of information about Wine is available from WineHQ at
	http://www.winehq.com/ : various user guides, application database,
	bug tracking. This is probably the best starting point.

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

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

Usenet:	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.

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

IRC:	Online help is available at channel #WineHQ on irc.openprojects.net.

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

Mailing lists:
	There are several mailing lists for Wine developers; see 
	http://www.winehq.com/dev.shtml#ml 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
