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
	NetBSD-current

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.). Warning : installing gas does *not* ensure that it
  will be used by gcc. Recompiling gcc after installing gas or 
  symlinking cc, as and ld to the gnu tools is said to be necessary.

NetBSD info:
  Make sure you have the USER_LDT, SYSVSHM, SYSVSEM, and SYSVMSG options
  turned on in your kernel.

File systems info:
  Wine should run on most file systems. However, Wine will fail to start
  if umsdos is used for the /tmp directory. A few compatibility problems have
  also been reported using files accessed through Samba.

Wine requires kernel-level threads to run. Currently, only Linux
version 2.0 or later, FreeBSD-current or FreeBSD 3.0 or later,
Solaris x86 version 2.5 or later, and NetBSD-current 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 (and its header files, e.g. xpm.h)
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
packages xpm and xpm-devel.  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.

Don't forget to add vital registry entries by applying winedefault.reg
with programs/regapi/. See documentation/ for details.

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".
As this program is alpha, it doesn't run a truly thorough test yet, though,
so it should be taken as a first verification step only.

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 at least partially be fixed by using
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
