Setting up the build environment on Windows

Assuming Windows XP 32.

Subversion

Doesn't really matter which one. Certified binaries of The Real McCoy are available at http://www.collab.net/downloads/subversion/ (command-line only) if you have an account (or are willing to register). There are other (non-certified) sources such as SlikSVN (http://www.sliksvn.com/en/download, command-line only) and TortoiseSVN (http://tortoisesvn.net/downloads, with Windows Explorer integration, which is really neat).

MSYS

Download the latest version of the MSYS Base System from http://sourceforge.net/projects/mingw/files/MSYS%20Base%20System/ and run it. If it asks, tell it you don't have MinGW installed.

Now that MSYS is installed, you can start the “MSYS (rxvt)” shortcut it installed, and it'll be almost like you were home on the Unix farm.

MinGW

As of November 2009, the automated installer is useless; it installs gcc 3 instead of 4. You'll have to install MinGW manually using MSYS.

The following command will create and mount a directory for MinGW:

mount C:/MinGW /mingw

Next, download the packages you will need.

GCC: http://sourceforge.net/projects/mingw/files/GCC%20Version%204/Current%20Release_%20gcc-4.4.0/gcc-full-4.4.0-mingw32-bin-2.tar.lzma

BinUtils: http://sourceforge.net/projects/mingw/files/GNU%20Binutils/binutils-2.20/binutils-2.20-1-mingw32-bin.tar.gz

MinGW API: http://sourceforge.net/projects/mingw/files/MinGW%20API%20for%20MS-Windows/Current%20Release_%20w32api-3.13/w32api-3.13-mingw32-dev.tar.gz

MinGW Runtime: http://sourceforge.net/projects/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-dev.tar.gz and http://sourceforge.net/projects/mingw/files/MinGW%20Runtime/mingwrt-3.16/mingwrt-3.16-mingw32-dll.tar.gz

Then extract everything:

$ for f in *tar.gz ; do tar zxvf $f -C /mingw ; done
$ for f in *tar.lzma ; do tar --lzma -xvf $f -C /mingw ; done

Let's see if our C compiler works:

$ which gcc
/mingw/bin/gcc.exe
$ cat >hello.c
#include <stdio.h>
int main(void) { printf("Hello, C world!\n"); return 0; }
^D
$ gcc -o hello hello.c
$ ./hello.exe
Hello, C world!

And C++:

$ which g++
/mingw/bin/g++.exe
$ cat >hello.cc
#include <iostream>
int main() { std::cout << "Hello, C++ world!" << std::endl; return 0; }
^D
$ g++ -o hello hello.cc
$ ./hello.exe
Hello, C++ world!

And Fortran 90:

$ which gfortran
/mingw/bin/gfortran.exe
$ cat >hello.f90
PROGRAM HelloWorld
PRINT *, "Hello, Fortran world!"
END PROGRAM HelloWorld
^D
$ gfortran -o hello hello.f90
$ ./hello.exe
Hello, Fortran world!

Additional Unix-like utilities

You may want to install other programs, such as vim (http://sourceforge.net/projects/mingw/files/MSYS vim/vim-7.2-1/).

WiX

Microsoft's tool for creating installation packages: http://sourceforge.net/projects/wix/files/. Ironically, it does not come with its own installer.