jabberd2 for win32 guide
========================

This guide describes briefly how to build jabberd2 on Windows platforms.

NOTE: Windows platforms prior to Windows 2000 are NOT supported, so this won't
work on Windows 95/98/ME/NT.

Building jabberd2 win32 with Visual Studio 2008 (SP1)
-----------------------------------------------------

Starting from revision #229 complete win32 support with Visual Studio 2005
project files is present and maintained in the repository "win32" folder.
Starting from revision #751 project files require Visual Studio 2008 (SP1).

All libraries shall be installed locally and added to VC Include files and
Library files paths using:
   Tools->Options->Project and Solutions->VC++ Directories.

All libraries' DLL files shall be copied to win32/bin folder and win32/bin/sasl
folder for SASL plugins respectively.

Prerequisites:

   1. http://alpha.gnu.org/gnu/libidn/

      libidn source build using win32/libidn.sln, provides: libidn.lib

   2. http://alpha.gnu.org/gnu/gsasl/

      libgsasl source build using win32/libgsasl.sln, provides: libgsasl.lib

   3. http://www.openssl.org/source/

      OpenSSL source build, provides: libeay32.lib ssleay32.lib

   4. http://sourceforge.net/projects/expat/

      Expat XML Parser source build using expat.dsw, provides: libexpat.lib

   5. http://www.corpit.ru/mjt/udns.html

      udns source build, provides: udns.lib, since there are no VC project files
      provided along with sources, please use patch files provided at:
      http://www.nanoant.com/projects/jabberd2-win32#download

   6. http://www.zlib.net/

      zlib source build, provides: zlib1.lib, convert & use VC project files at:
      projects/visualc6, link to Win32_DLL_ASM_Release. If you encounter MASM
      error:
         .\inffas32.asm(647) : error A2070: invalid instruction operands
      Add a "dword ptr" type qualifier before "[esp]" as described here:
      http://connect.microsoft.com/VisualStudio/feedback/ViewFeedback.aspx?FeedbackID=166511

   7. http://dev.mysql.com/downloads/mysql/5.0.html

      MySQL (auth & storage module) binary, provides: libmysql.lib

   8. http://www.sqlite.org/download.html

      SQLite (auth & storage module) source build, provides: sqlite3.lib.
      Since there are no libraries for VC except DLLs you shall make one using
      sqlite-amalgamation-3.x.zip from SQLite downloads.

      sqlite3 command present in PATH, needed for initial database.

   9. http://tortoisesvn.tigris.org/

      SubWCRev command present in PATH to generate version.h and version.wxi.
      Comes with TortoiseSVN bin folder, added to PATH by TortoiseSVN installer.

  10. http://wix.sourceforge.net/releases/

      WiX 3.0.4401.0 or newer for building MSI jabberd2 setup inside VS2008 IDE

  11. http://www.activestate.com/store/activeperl/download/

      ActivePerl (or any Perl distribution) perl command present in PATH
      (optional for generation of default configuration XML files)

After all prerequisite libraries are configured for use within VC open
win32/jabberd2.sln and build all projects.

You should have now fresh & ready Windows build of jabberd2 at win32/bin folder!

Building jabberd2 win32 with MinGW
----------------------------------

NOTE: MinGW is NOT supported by the jabberd2 project team. If you have problems,
you're welcome to post to jabberd@jabberstudio.org, but thats all. If you file
a bug that can't be reproduced under Unix or MSVC, then the bug will be assumed
not to exist. If anyone would like to step up to maintain this port properly,
please contact us.

You'll need MinGW and MSys installed to get this going, available here:

  http://www.mingw.org/

At the time of writing, the latest MinGW is 3.1.0-1. If you get this
version, you'll need to also get w32api 2.5 (to get the aforementioned
DNS resolution APIs). Later versions of MinGW should include these.

Once all this kit is up and running, its business as usual:

  % ./configure
  % make
  % make install

Note that you'll still need the various external packages as stated at Visual
Studio 2008 section (eg MySQL dev packages) available in order to build a
working server. Getting these up and running under MinGW is outside the scope of
this short guide.

Thanks
------
I'd like to thank Robert Norris for former win32 guide & support.
Also huge thanks go out to Peter Hinz for the original port that was
cannibalised pretty seriously by my predecessor that wouldn't have had a chance
if he hadn't seen his code.
Also I'm sending thanks to Tomasz Sterna (current project maintainer) for
letting me in with my win32 modifications and support.

--
Adam Strzelecki <ono@java.pl>