	Running & Compiling WINE in OS/2

Here is what you need to (try to) compile Wine for OS/2:
EMX 0.9c (fix 2)
XFree86 3.2 OS/2 (with development libraries)
bash, gnu make, grep, tar, bison, flex
sed (a working copy of)
xpm
diff and patch are recommended

To compile:
sh 
tools/make_os2.sh
make depend
make (make doesn't work yet... I will need to do some others patch, or
      you may do it...)

Currently:
- configure and make depend work...
- make doesn't work well...
- the selectors numbers (0) are wrong...
- signal handling is horrible... (if any)
- EMX doesn't seem to support mmap
- debugger don't compile at all
- sigcontext.h isn't right (incomplete structure?).

What needs to be redone:
- File functions, 
- I/O access (do it!),
- Communication (modem),
- Interrupt (if int unknow, call current RealMode one...), 
- verify that everything is thread safe (how does Win95/NT handle multi-thread?), 
- move X functions in some files (and make a wrapper, to use PM instead latter), 
- implement mmap (or find something else), 
- make debugger work, 
- return right CPU type, 
- make winsock work


The good things:
- OS/2 have DOS interrupts
- OS/2 have I/O port access
- OS/2 have multi-thread
- Merlin have Open32 (to be used later...)

Robert Pouliot <krynos@clic.net>
January 9, 1997

