Building Wasp Lisp Under MinGW for Windows

The first part is information about how to set up MiinGW and MSYS to build Wasp properly, and must be done once per build machine.  The latter describes building WaspVM afterwards.  Like other instructions here, it assumes you know what you are doing in the Windows command shell. 

Installing MinGW and MSYS:

MinGW and MSYS's documentation is very sparse; MinGW is a port of the GNU compiler chain to Windows NT that does not require a special DLL.  It occupies the same space on Win32 for open source developers that Microsoft's Visual C does for Microsoft developers.  (Except with better C99 compliance, POSIX compatibility layer, etc, etc.  If you cut your teeth on POSIX, it's a lot easier to deal with.)

MSYS adds on tools used in POSIX environments to drive GNU-style build processes.  Both of these must be installed to reasonably expect to build Wasp on Win32.  (Visual C is not supported; while most of WaspVM is written in pure C99, everyone has their own opinions what that means, and the build process is written mostly in BASH.)

Download and run the following programs, first, accepting their defaults:

http://prdownloads.sf.net/mingw/MinGW-5.1.4.exe?download
http://prdownloads.sf.net/mingw/MSYS-1.0.10.exe?download 
http://prdownloads.sf.net/mingw/msysDTK-1.0.1.exe?download

Starting MSYS:

If everything went smoothly, you should now have a MSYS window on the desktop.  First, a warning: that window uses rxvt; for some reason the win32 version of rxvt does not get along with the Wasp Lisp REPL, and will often buffer terminal output long after it should have been flushed.  It works fine in xterm and the Windows command window, fixing this is a low priority.  Oddly, print works, while send does not.

Open the MSYS window. You should get a horrific lemon yellow window and a shell prompt resembling a UNIX prompt.  (I usually fix this by chainsawing the msys.bat file to not use rxvt..)

Building LibEvent:

We use LibEvent for our I/O scheduling, even under Windows.  Download the following tarball and extract it somewhere MinGW / MSYS can find it; I suggest using wget and tar from within MSYS so you don't have to wrap your brain around how the Windows filesystem is represented within MSYS's shell:

$ wget http://monkey.org/~provos/libevent-1.4.6-stable.tar.gz

$ tar -xvf libevent*gz

$ cd libevent-1.4.6

Next, compile and install LibEvent; you should only have to do this when you are setting up a new MSYS environment..

$ ./configure --prefix=/mingw && make && make install

Now you are ready to move on to..

Building WaspVM: 

Run the following command to kick off the build process.  You should see GNU Autoconf kicking around for a while, a series of compile commands, and, finally, some waspld glue output.  The final product will be in the WaspVM subdirectory, and may be moved wherever.  The ./install script is meant for use on POSIX platforms, and probably will not work here.

$ make
 

Packaging WaspVM

You can make a standalone package of WaspVM using the following command:

$ make

Or, you can use it in place by running:

$ make repl

Have fun, and please let me know if you have any problems..

--Scott.