How to compile moonshot-ui from git on MS Windows using mingw and MSYS
----------------------------------------------------------------------

I recommend you set up a build environment according to the following page:

  http://afuera.me.uk/jhbuild-windows/

However, use the configuration file in the source tree at ./windows/jhbuildrc
instead of creating a new one. This means that the last two commands you execute
become (from inside the moonshot-ui source tree):

  jhbuild -f ./windows/jhbuildrc bootstrap
  jhbuild -f ./windows/jhbuildrc


You will also need to install the following tools:

  * MS Windows Platform SDK v7.0 and .NET framework 3.5:

      https://www.microsoft.com/downloads/en/details.aspx?FamilyID=c17ba869-9671-4330-a63e-1fd44e0e2505&displaylang=en

    You need the 'Win32 Developer Tools' component for MIDL.EXE, and 'Visual C compilers'
    to LIB.EXE. The rest are not important.

  * Windows Installer XML 3.5:

      http://wix.codeplex.com/releases/view/60102

  * ImageMagick (for converting .svg icons to .png in 'make icons'):

     http://www.imagemagick.org/download/binaries/ImageMagick-6.7.3-7-Q16-windows-dll.exe

I suggest you put all these things in their default locations (the installers
will sometimes ignore attempts to install them in other places).

You currently also need a patched version of the w32api mingw package, to
expose some RPC functions. This issue is on the mingw issue tracker here:

  https://sourceforge.net/tracker/?func=detail&aid=3302807&group_id=2435&atid=302435

Until the fix gets merged, download the following patched version and simply
extract into c:\tools\mingw:

  http://afuera.me.uk/junk/w32api-3.17-2-mingw-patch3302807-dev.tar.lzma

(Alternately you can fetch the source for the w32api package from
 www.sourceforge.net/projects/mingw and apply the patch yourself)


You will need to compile and install the msrpc-mingw package, which wraps
MIDL.EXE and the RPC API to make it usable from gcc.

  git clone git://github.com/ssssam/msrpc-mingw.git
  cd msrpc-mingw
  MIDL=/c/Program\ Files/Microsoft SDKs/Windows/v7.0/bin/MIDL.exe ./waf configure --prefix=c:/build
  ./waf
  ./waf install

You can then configure moonshot from the MSYS shell:

  ACLOCAL="aclocal -I/c/build/share/aclocal" PKG_CONFIG_PATH=/c/build/lib/pkgconfig \
    ./autogen.sh --disable-maintainer-mode --prefix=/c/build

The configure script looks for various tools that it may not be able to locate
automatically. In these cases you will get an error message, and you can set the
environment variable described there to the location of the program. For example,
if LIB.EXE is not found you will need to run

  ACLOCAL="aclocal -I/c/build/share/aclocal" PKG_CONFIG_PATH=/c/build/lib/pkgconfig \
    MSVC_LIB="/c/Program Files/...VC location../bin/lib.exe" \
    ./autogen.sh --disable-maintainer-mode

If this succeeds, you're ready to build!

  make
  make icons
  make installer

The icons and installer targets make a few assumptions based on the install
prefix. You may have to edit Makefile.am to edit the paths if you haven't
followed the instructions exactly.

Weird things that might go wrong
--------------------------------

MSYS is a little fragile, here are some things to try if you get weird failures
of any component:

  * Make sure your PATH looks like this:
      /c/build/bin:/c/tools/python:/usr/local/bin:/mingw/bin:/bin
    so that there are no entries before these that might override a shell tool.

  * Sometimes TMP is set and this breaks some of the tools. Run:
      export TMP=
    to fix this.

  * Don't ever use \ in paths (except to escape spaces) - always use /c/build/bin
    not c:\build\bin. Otherwise shell scripts break all over the place.
