FAQ for Cygnus Win32 ==================== Author: Dalibor Topic <robilad@kaffe.org> Preparation =========== You need the latest Cygwin. Since there are no Cygwin releases, only a steady stream of updates and improvements, it is safe to say that you need the latest. You can get Cygwin from http://www.cygwin.com You also need Jikes to build the class library. I'd recommend the latest version, at time of writing that is 1.22. You can get jikes from http://jikes.sf.net You also need to apply one or two patches to jikes, in order to fix some Cygwin specific bugs in it. See http://sourceforge.net/tracker/index.php?func=detail&aid=1202863&group_id=128803&atid=712760 http://sourceforge.net/tracker/index.php?func=detail&aid=1202185&group_id=128803&atid=712760 for details. The first patch is for jikes 1.22, the second one is for jikes CVS head. There is a jikes package in Cygwin now, but it can not be used yet to compile GNU Classpath, which Kaffe uses as its class library. There is a Kaffe port to mingw32, and it would be great if someone volunteered to merge it into the main tree. For more information, see http://www.kaffe.org/pipermail/kaffe/2003-January/092896.html http://kaffe.org/pipermail/kaffe/2004-April/097829.html Configuration ============= I tried various configuration options, and eventually settled for ../kaffe/configure --with-gc=kaffe-gc --disable-native-awt \ --with-staticvm --with-staticbin --with-threads=unix-jthreads \ --enable-pure-java-math --disable-shared --with-pic=no --with-gc=kaffe-gc sets the gc to kaffe's gc. it's the default, anyway, but I've had configure scripts do odd things on cygwin, so I set it manually to work around whatever made me set it manually. You may not need to set it explicitely. --disable-native-awt disables the AWT build. I was not interested in building graphical applications for Cygwin/XFree86 and enabling it means dealing with X11 headers, Gtk+, ... which I didn't have a need for. If someone makes the Qt4 peers work with Qt4-win32, please send you patches, screenshots and success stories to the Kaffe mailing list kaffe@kafe.org. --with-staticvm --with-staticbin was the combination that works for me, without linking problems. I preferred to avoid the linkage constraints on DLLs, though patches that make it all work without the need for static binaries would be appreciated. Send them to the mailing list, as well. --with-threads=unix-jthreads sets the threading model to jthreads, since the default pthreads seem to spend a few seconds getting stuck somewhere deep in windows/cygwin libraries, and eventually produce a warning message from Cygwin that only confuses the test scripts. --enable-pure-java-math If you are not using crypto and don't have gmp installed. --disable-shared Is necessary to make sure that libtool does not try to build shared libraries. --with-pic=no Is necessary to avoid problems compiling the trampoline code. Status ====== With this setup, and after a round or two of make && make check, I get 146 passes out of 150 regression tests with the interpreter engine. There probably are various issues that the compiler warnings should be able to help interested developers fix. As usual, I'd appreciate patches.