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, released under the GNU LGPL; see the file
LICENSE for the details.

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 directory
of the Wine source (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 of the Wine source
(see "DOCUMENTATION"), 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 at least 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. Also, as NTFS
  can only be used safely with readonly access for now, we recommend against
  using NTFS, as Windows programs need write access almost everywhere.
  In case of NTFS files, copy over to a writable location.

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.

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.

For requirements in case you intend to build the documentation yourself,
see "DOCUMENTATION" section.

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 read the documentation supplied with the Wine source,
see the "DOCUMENTATION" section.

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/ directory for details.

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

In case of library loading errors
(e.g. "Error while loading shared libraries: libntdll.so"), make sure
to add the library path to /etc/ld.so.conf and run ldconfig as root.

In order to verify the correctness of the environment you need for
Wine to run successfully, you may 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.

See wine.conf man page on how to switch to text mode only support if desired.

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 several 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.sgml.
If you post a bug report, please read the file documentation/bugs.sgml 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. DOCUMENTATION

Some documentation (various Wine Guides etc.) can be found in the
documentation/ directory (apart from also being available on WineHQ).

If you want to process the SGML files in there, then you can run "make"
in the documentation/ directory.
Doing so requires the sgml tools package (for db2html, db2ps, db2pdf) named:
Debian:		docbook-utils
Mandrake:	sgml-tools-A.B.C-DDmdk
SuSE:		docbktls-A.BB.C-DD

8. GETTING MORE INFORMATION

WWW:	A great deal of information about Wine is available from WineHQ at
	http://www.winehq.com/ : various Wine 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 (outdated !) 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/bugs.sgml 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 (in 'diff -u'
format) to julliard@winehq.com or to the wine-patches@winehq.com
mailing list for inclusion in the next release.

--
Alexandre Julliard
julliard@winehq.com
