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-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 that's needed for wine's debugger. (Actually now that it's 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.

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 man
page. 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.


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
