-0. LICENSE
+1. INTRODUCTION
-You may without charge, royalty or other payment, copy and
-distribute copies of this work and derivative works of this work
-in source or binary form provided that: (1)
-you appropriately publish on each copy an appropriate copyright
-notice; (2) faithfully reproduce all prior copyright notices
-included in the original work (you may also add your own
-copyright notice); and (3) agree to indemnify and hold all prior
-authors, copyright holders and licensors of the work harmless
-from and against all damages arising from use of the work.
+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.
-You may distribute sources of derivative works of the work
-provided that (1) (a) all source files of the original work that
-have been modified, (b) all source files of the derivative work
-that contain any party of the original work, and (c) all source
-files of the derivative work that are necessary to compile, link
-and run the derivative work without unresolved external calls and
-with the same functionality of the original work ("Necessary
-Sources") carry a prominent notice explaining the nature and date
-of the modification and/or creation. You are encouraged to make
-the Necessary Sources available under this license in order to
-further the development and acceptance of the work.
+Wine is free software, released under the GNU LGPL; see the file
+LICENSE for the details.
-EXCEPT AS OTHERWISE RESTRICTED BY LAW, THIS WORK IS PROVIDED
-WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES OF ANY KIND, INCLUDING
-BUT NOT LIMITED TO, ANY IMPLIED WARRANTIES OF FITNESS FOR A
-PARTICULAR PURPOSE, MERCHANTABILITY OR TITLE. EXCEPT AS
-OTHERWISE PROVIDED BY LAW, NO AUTHOR, COPYRIGHT HOLDER OR
-LICENSOR SHALL BE LIABLE TO YOU FOR DAMAGES OF ANY KIND, EVEN IF
-ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
-1. COMPILATION:
+2. QUICK START
-You must have one of:
+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:
- Linux version 0.99.13 or above
- NetBSD-current
- FreeBSD-current or FreeBSD 1.1
+./tools/wineinstall
-To build Wine, first do a "./Configure" and then a "make" (or "gmake"
-if you're running *BSD). The executable "wine" will be built. "wine"
-will load and run 16-bit Windows' executables.
+Run programs as "wine program". For more information and problem
+resolution, read the rest of this file, the Wine man page, and
+especially the wealth of information found at http://www.winehq.org.
+3. REQUIREMENTS
-2. SETUP:
+To compile and run Wine, you must have one of the following:
-Wine requires you to have a file /usr/local/etc/wine.conf (you can
-supply a different name when configuring wine) or a file called .winerc
-in your homedirectory.
+ Linux version 2.0.36 or above
+ FreeBSD 5.3 or later
+ Solaris x86 2.5 or later
+ NetBSD-current
+ MacOS X 10.4 or later
-The formatstyle of this config file is just like a windows .ini file.
+As Wine requires kernel-level thread support to run, only the operating
+systems mentioned above are supported.
+Other operating systems which support kernel threads may be supported
+in the future.
-Here's an explanation of each section:
+Linux info:
+ While Linux 2.2.x should still work and Linux 2.0.x may still work
+ (older 2.0.x versions had thread-related crashes),
+ it's best to have a current kernel such as 2.4.x or 2.6.x.
-* [drives]
+FreeBSD info:
+ Wine should build on FreeBSD 4.x and FreeBSD 5.x, but versions before
+ FreeBSD 5.3 will generally not work properly.
+
+ More information can be found in the FreeBSD ports tree at
+ <ftp://ftp.freebsd.org/pub/FreeBSD/ports/ports/emulators/wine/>.
-format: <driveletter> = <rootdirectory>
-default: none
+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.
-This section is used to specify the root directory of each `dos'drive
-as windows' applications require a dos/mswindows based diskdrive &
-directory scheme.
+NetBSD info:
+ Make sure you have the USER_LDT, SYSVSHM, SYSVSEM, and SYSVMSG options
+ turned on in your kernel.
-If you mounted you dos-partition as /dos and installed microsoft windows
-in c:\windows than you should specify c=/dos in the drives section.
+MacOS info:
+ You need Xcode 2.4 or later to build properly on x86.
-* [wine]
-format: windows = <directory>
-default: c:\windows
+Supported file systems:
+ 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.
-Used to specify an different windows directory.
+Basic requirements:
+ You need to have the X11 development include files installed
+ (called xlib6g-dev in Debian and XFree86-devel in Red Hat).
-format: system = <directory>
-default: c:\windows\system
+Build tool requirements:
+ 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.
-Used to specify an different system directory.
+ Of course you also need "make" (most likely GNU make).
-format: temp = <directory>
-default: c:\temp
+ You also need flex version 2.5 or later and bison.
-Used to specify a directory where windows applications can store temporary
-files.
+Optional support libraries:
+ Run ./configure --verbose to see the optional libraries that could
+ be used but aren't found on your system.
-format: path = <directories separated by semi-colons>
-default: c:\windows;c:\windows\system
-Used to specify the path which will be used to find executables and DLL's.
+4. COMPILATION
-format: systemresources = <filename>
-default: c:\temp
+In case you chose to not use wineinstall, run the following commands
+to build Wine:
-Used to specify the name of sysres.dll, a dll which is used by wine itself.
+./configure
+make depend
+make
-* [serialports]
+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.
-format: com[12345678] = <devicename>
-default: none
+To see compile configuration options, do ./configure --help.
-Used to specify the devices which are used as com1 - com8.
+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:
-* [parallelports]
+ bunzip2 -c patch-file | patch -p1
-format: lpt[12345678] = <devicename>
-default: none
+where "patch-file" is the name of the patch file (something like
+wine-0.9.x.diff.bz2). You can then re-run "./configure", and then
+run "make depend && make".
-Used to specify the devices which are used as lpt1 - lpt8.
-* [spy]
+5. SETUP
-format: file = <filename or CON when logging to stdout>
-default: none
+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.
-used to specify the file which will be used as logfile.
+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.
-format: exclude = <message names separated by semicolons>
-default: none
+See the Support area at http://www.winehq.org/ for configuration
+hints.
-Used to specify which messages will be excluded from the logfile.
+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.
-format: include = <message names separated by semicolons>
-default: none
-Used to specify which messages will be included in the logfile.
+6. RUNNING PROGRAMS
-
-
-3. RUNNING PROGRAMS
-
-When invoking wine, you must specify the entire path to the executable,
+When invoking Wine, you may specify the entire path to the executable,
or a filename only.
-For example: to run Windows' solitaire:
-
- wine sol (using the searchpath to locate the file)
- wine sol.exe
-
- wine c:\\windows\\sol.exe (using a dosfilename)
-
- wine /usr/windows/sol.exe (using a unixfilename)
+For example: to run Solitaire:
-note: the path of the file will also be added to the path when
- a full name is supplied on the commandline.
+ wine sol (using the search Path as specified in
+ wine sol.exe the config file to locate the file)
-Have a nice game of solitaire, but be careful. Emulation isn't perfect.
-So, occassionally it will crash.
+ wine c:\\windows\\sol.exe (using DOS filename syntax)
+ wine /usr/windows/sol.exe (using Unix filename syntax)
+ wine sol.exe /parameter1 -parameter2 parameter3
+ (calling program with parameters)
-4. EXAMPLE CONFIGFILE
+Wine is not yet complete, so several programs may crash. In that crash
+you will be dropped into the debugger so that you can investigate and
+fix the problem. For more information on how to do this, please check
+the debugging section of the Wine Developer's Guide.
-----------------------------------------------------------------------------
-[drives]
-a=/mnt/fd0
-c=/dos
-d=~/Wine
-[wine]
-windows=c:\windows
-system=c:\windows\system
-temp=c:\temp
-path=c:\windows;c:\windows\system;c:\winapps\word\;c:\winapps\pctools
-systemresources=./sysres.dll
+7. GETTING MORE INFORMATION
-[serialports]
-com1=/dev/cua1
-com2=/dev/cua1
+WWW: A great deal of information about Wine is available from WineHQ at
+ http://www.winehq.org/ : various Wine Guides, application database,
+ bug tracking. This is probably the best starting point.
-[parallelports]
-lpt1=/dev/lp0
+FAQ: The Wine FAQ is located at http://www.winehq.org/FAQ
-[spy]
-;File=CON
-;File=spy.log
-Exclude=WM_TIMER;WM_SETCURSOR;WM_MOUSEMOVE;WM_NCHITTEST;WM_NCACTIVATE;WM_GETDLGCODE;
-Include=WM_COMMAND;
+Usenet: You can discuss Wine-related issues and get help
+ on comp.emulators.ms-windows.wine.
-----------------------------------------------------------------------------
+Bugs: Report bugs to Wine Bugzilla at http://bugs.winehq.org
+ Please search the bugzilla database to check whether your
+ problem is already found before posting a bug report. You can
+ also post bug reports to comp.emulators.ms-windows.wine.
+IRC: Online help is available at channel #WineHQ on irc.freenode.net.
-5. BUILD:
+GIT: The current Wine development tree is available through GIT.
+ Go to http://www.winehq.org/site/git for more information.
- The documentation for the build program is in the file build-spec.txt
+Mailing lists:
+ There are several mailing lists for Wine users and developers;
+ see http://www.winehq.org/forums for more information.
+Wiki: The Wine Wiki is located at http://wiki.winehq.org
-6. FINALE:
-
-Good luck,
+If you add something, or fix a bug, please send a patch (in 'diff -u'
+format) to wine-patches@winehq.org list for inclusion in the next
+release.
- If you successfully add anything, please send me a copy.
-
-Bob Amstadt
-bob@amscons.com
-
-
-7. WHAT'S NEW
-
-WHAT'S NEW with Wine-940602: (see ChangeLog for details)
- - CLOCK.EXE runs.
- - ABORT command added to debugger.
- - Windows environment is now imported from the UNIX environment.
- - Use of save unders and backing store are now the default. Resource
- and command line options have been added to disable these things.
- - Assorted new driver functions
- - GetAsyncKeyState()
- - More metafile support
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940524: (see ChangeLog for details)
- - New menu functions
- - EnumObjects()
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940518: (see ChangeLog for details)
- - debugger improvements
- - bug fixes to get some dialog boxes working.
- - skeleton for passing MCI functions.
- - beginnings of metafile support.
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940510: (see ChangeLog for details)
- - debugger improvements
- - mmsystem
- - ShellAbout() and AboutDlgProc()
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940505: (see ChangeLog for details)
- - faster color_stretch()
- - SetSysMenu(), GetCursor(), GetDesktopWindow()
- - WSAGetXbyY() now non-blocking
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940420: (see ChangeLog for details)
- - new property functions
- - new listbox and combo box functions
- - GrayString() and CallGrayStringProc()
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940412: (see ChangeLog for details)
- - menuing improvements
- - drawing performance improvements
- - beginnings of hooks
- - MDI maximizing and tiling
- - improvements in winsock implementation
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940405: (see ChangeLog for details)
- - Mouse activation of menus working again
- - GetprocAddress()
- - SetDIBitsToDevice()
- - FindWindow()
- - int 10hm 25h and 26h
- - in, inb, out, outb emulation
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940329: (see ChangeLog for details)
- - MDI: child windows can be created, activated and cascaded.
- - -depth option
- - support for dithered brushes
- - GetNearestColor(), RealizeDefaultPalette(),
- GetSystemPaletteEntries(), and SelectPalette()
- - System colors read from WIN.INI
- - Keyboard menu manipulation (mouse is temporarily broken)
- - GetFreeSystemResources()
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940322: (see ChangeLog for details)
- - Speed improvements in bitmaps and mouse messages
- - More MDI support. More to come next week...
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940315: (see ChangeLog for details)
- - Beginnings of MDI support. More to come next week...
- - Stress DLL
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940309: (see ChangeLog for details)
- - New "exclude" and "include" filters for spy feature. See sample
- wine.ini for details.
- - -desktop and -name options (see ChangeLog)
- - GetFreeSpace() and CreateIcon()
- - and many many bug fixes!
-
-WHAT'S NEW with Wine-940301: (see ChangeLog for details)
- - NEW Configure script to set compile time options!
- - Support for filesystems with short (less than 14 chars) filenames.
- - Clipboard functions!
- - and more...
-
-WHAT'S NEW with Wine-940223: (see ChangeLog for details)
- - FreeBSD support
- - FloodFill()
- - Desktop window support
- - Menu fixes
- - and more...
-
-WHAT'S NEW with Wine-940216: (see ChangeLog for details)
- - Many many bug fixes
- - Switched to using Imakefile's instead of Makefile's.
- - Lot's of changes for libwine.a
-
-WHAT'S NEW with Wine-940209: (see ChangeLog for details)
- - Many many bug fixes
- - Minor directory structure reorganization
- - New GetModule*() functions.
- - WINSOCK DLL
- - First stab at Wine as a library
-
-WHAT'S NEW with Wine-940201: (see ChangeLog for details)
- - Support for huge data structures.
- - FreeBSD support.
- - Many many bug fixes
-
-WHAT'S NEW with version 0.8: (see ChangeLog for details)
- - Eliminated Xt-dependent code. Thanks to Alexandre and Martin.
- - EnumWindows() and EnumChildWindows()
- - Activating and deactivating of windows.
- - More work on system menus.
-
-WHAT'S NEW with version 0.7: (see ChangeLog for details)
- - Eliminated Xt-dependent code. Thanks to Alexandre and Martin.
- - Other bug fixes.
- - IsWIndowEnabled() and EnableWindow() now implemented.
- - New command line options.
-
-WHAT'S NEW with version 0.6: (see ChangeLog for details)
- - Working towards elimination of Xt-dependent code. Thanks to
- Alexandre and Martin.
- - Other bug fixes.
- - I added a rudimentary spy facility which can be turned
- on from the wine.ini file. See the sample wine.ini
- for details
-
-WHAT'S NEW with version 0.5: (see ChangeLog for details)
- - Working towards elimination of Xt-dependent code.
- - StretchBlt()
- - GetClassName() & GetClassInfo()
- - Implemented loader relocation types 5 and 6.
-
-WHAT'S NEW with version 0.4.14: (see ChangeLog for details)
- - Bug fixes and enhancements
- - Comm functions
- - Text caret functions
-
-WHAT'S NEW with version 0.4.13: (see ChangeLog for details)
- - Bug fixes
- - GetCapture()
- - More keyboard handling
- - Polyline() and Polygon()
-
-WHAT'S NEW with version 0.4.12: (see ChangeLog for details)
- - Bug fixes
- - New DOS file functions
- - Experimental Imakefiles
-
-WHAT'S NEW with version 0.4.11: (see ChangeLog for details)
- - Bug fixes
- - New cursor functions
- - New file system handling
- - Atoms
-
-WHAT'S NEW with version 0.4.10: (see ChangeLog for details)
- - Bug fixes
- - More scroll bar functions
- - More icon and cursor handling
-
-WHAT'S NEW with version 0.4.9: (see ChangeLog for details)
- - Bug fixes
- - real MessageBox()
- - New resource functions
- - Icon functions
- - Selector manipulation functions
- - Catch()/Throw()
-
-WHAT'S NEW with version 0.4.7: (see ChangeLog for details)
- - More dialog box functions
- - More DOS interrupts
- - NetBSD compatibility patches
-
-WHAT'S NEW with version 0.4.5: (see ChangeLog for details)
- - Bug fixes
- - focus routines
- - dialog box functions
- - improvements to control windows
-
-WHAT'S NEW with version 0.4.4: (see ChangeLog for details)
- - Bug fixes
- - New static control class
- - Preliminary listbox, combobox and scrollbar controls
- - System initialization file is now called "wine.ini", and
- may be located in the user's current directory, the
- user's home directory or any directory specified by
- the WINEPATH environment variable.
- - The loader now searches the directories specified by the
- WINEPATH environment variable for programs and DLLs.
- - Internal debugger now works on 386BSD.
-
-WHAT'S NEW with version 0.4.3: (see ChangeLog for details)
- - Bug fixes
- - Resource loading now able to load DLL resources
- - Button control now based on GDI calls
- - Preliminary system color support
- - Miscellaneous window functions
- - Limited debugging facility (sometimes hangs)
-
-WHAT'S NEW with version 0.4.2: (see ChangeLog for details)
- - Bug fixes
- - 32-bit callback functions allowed
- - .INI file handling
- - lstr* functions and ANSI<->OEM conversion functions.
-
-WHAT'S NEW with version 0.4.1: (see ChangeLog for details)
- - Bug fixes
- - Memory usage changes.
-
-WHAT'S NEW with version 0.4.0: (see ChangeLog for details)
- - Wine now compiles and runs under NetBSD. Patches are
- required for NetBSD.
- - Wine stat patches included. Add "-DWINESTAT" to the definition
- of COPTS in the main Makefile to activate.
- - Preliminary keyboard handling.
- - Button control window implemented.
- - many other new functions added.
-
-WHAT'S NEW with version 0.3.1: (see ChangeLog for details)
- - LineDDA() completed
- - numerous bug fixes
- - INT 1Ah implemented
- - SOUND DLL implemented
- - More of WIN87EM DLL implemented
- - OpenFile() and friends implemented
-
-WHAT'S NEW with version 0.3.0: (see ChangeLog for details)
- - Mouse capture
- - Text justification and underlining
- - Clipping
- - LoadBitmap() completed
- - Code generated by the Borland compiler should now work
-
-WHAT'S NEW with version 0.2.8: (see ChangeLog for details)
- - Text functions from Alexandre
- - INT 21h from Eric
- - Menu improvements from David
- - Bug fixes and GetProcAddress() stub from me
-
-WHAT'S NEW with version 0.2.7: (see ChangeLog for details)
- - sol.exe gets further. I did some debugging and now solitaire
- stops when it tries to call GetTextExtent(). Any volunteers?
- - Many DC updates from Alexandre.
- - Menu updates to support underlining characters from David Metcalfe.
-
-WHAT'S NEW with version 0.2.6: (see ChangeLog for details)
- - More region updates from Alexandre
-
-WHAT'S NEW with version 0.2.5: (see ChangeLog for details)
- - Regions implemented by Alexandre
- - More menuing code from me
-
-WHAT'S NEW with version 0.2.4: (see ChangeLog for details)
- - Many improvements to GDI from Alexandre
- - Many improvements to menu handling by me.
-
-WHAT'S NEW with version 0.2.3: (see ChangeLog for details)
- - Bug fixes with SendMessage() and PostMessage()
- - Preliminary menu support
-
-WHAT'S NEW with version 0.2.2: (see ChangeLog for details)
- - Misc bug fixes
- - More bitmap code
- - Timers
- - Memory DC's
-
-WHAT'S NEW with version 0.2.1:
- - I have placed things into sub-directories. The organization is
- not finalized. I imagine that the directory structure will
- change as is necessary. Files in the ./misc directory need
- to be split apart and placed in apropriate directories.
- - Tons of code from Alexandre. He has constructed the framework
- for handling GDI objects. He has also provided code for DCEs.
- - Local heap functions have been completed.
- - Bug fixes in global.c and win.c
- - New function GlobalQuickAlloc() combines GlobalAlloc() and
- GlobalLock() into a single function call.
- - New patch kit for Linux 0.99 pl11 kernel. Thanks to Linus
- who has graciously included our patches into the ALPHA patch
- release cycle.
-
-WHAT'S NEW with version 0.2.0:
- - Alexandre Julliard has provided a replacement for the Tcl code.
- The new code uses Xlib and Xt directly with no intervening
- interpretted language. This should reduce the learning
- curve for casual hackers.
- - I changed all GLOBAL_ names to Global.
-
-WHAT'S NEW with version 0.1.1:
- - I have completed global memory allocation, but I don't like it.
- It is not 100% compatible with Windows. I need some more kernel
- modifications for 100% compatibility.
- - Alexandre Julliard has provided written better emulation for
- the Windows message queue.
-
-WHAT'S NEW with version 0.1.0:
- - Latest patches from Alexandre Julliard.
- - minor bug fix in if1632.S
-
-WHAT'S NEW with version 0.0.5:
- - Patches from Alexandre Julliard. Some integration with Tcl.
- - Generic interface for callback procedures. This will allow
- callbacks into DLLs.
- - MakeProcInstance() has been implemented but untested.
-
-WHAT'S NEW with version 0.0.4:
- - Eric Youngdale modified wine.c and selector.c to allow loading
- of Windows DLLs.
- - Added global memory allocation routines (GlobalAlloc, GlobalFree,
- and GlobalLock)
- - Bitmap resource loading into global memory.
-
-WHAT'S NEW with version 0.0.3:
- - Fixed bug with sector sizes.
- - Registers at program startup are now set correctly.
- - Segment fixups for relocatable-segment internal entry points.
- - Fixed bug in DOS PSP structure.
- - Some resource loading is done.
- - Added "return" ordinal type to build program.
- - Added comment capability to build program.
-
-WHAT'S NEW with version 0.0.2:
-
- - Again thanks to Eric Youngdale for some very useful comments.
- - The Windows startup code created by Micrsoft C 7.0 now runs
- to completion.
- - Added a new patch to the kernel to increase the usable size of
- the ldt to the full 32 entries currently allowed.
- - Imported name relocations are now supported.
- - Source code for my infamous test program is now included.
- - A handful of basic Windows functions are now emulated. See
- "kernel.spec" for examples of how to use the build program.
-
-WHAT'S NEW with version 0.0.1:
-
- - Eric Youngdale contributed countless improvements in memory
- efficiency, bug fixes, and relocation.
- - The build program has been completed. It now lets you specify
- how the main DLL entry point should interface to your emulation
- library routines. A brief description of how to build these
- specifications is included in the file "build-spec.txt".
- - The code to dispatch builtin DLL calls is complete, but untested.
+--
+Alexandre Julliard
+julliard@winehq.org