<?xml version="1.0" encoding="UTF-8"?>
<!--
  Copyright 2002-2004 The Apache Software Foundation

  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

      http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License.
-->
<!DOCTYPE document PUBLIC "-//APACHE//DTD Documentation V2.0//EN" "http://forrest.apache.org/dtd/document-v20.dtd">
<document> 
  <header> 
    <title>Installing Microsoft Windows Third-Party Development Software</title> 
  </header>
  <body>
    <fixme author="KGN">Need docs for unix</fixme>
    <fixme author="KGN">Include docs for downloading and installing MinGW</fixme>
    <section id="win32_cygwin">
      <title>Cygwin</title>
      <p>
	Cygwin provides a UNIX like environment in Windows.  We're not
	using the Cygwin compiler to compile Avida, but we are using
	installing it because it provides easier access to tools such
	as Subversion and wget.
      </p>
      <p>
	<a href="http://www.cygwin.com/">Cygwin download</a>
	Download Cygwin and install it.  When selecting packages, make
	sure you install the following tools:
      </p>
      <ul>
	<li>subversion</li>
	<li>openssh</li>
	<li>wget</li>
	<li>make</li>
	<li>automake</li>
	<li>autoconf</li>
      </ul>
      <p>
	Don't install any of the other stuff, including the Qt
	libraries.  We will compile native libraries.
      </p>
    </section>

    <section id="win32_version_control_system">
      <title>Version Control System</title>
      <section id="win32_subversion">
	<title>Subversion</title>
	<p><strong>Usage:</strong></p>
        <p>
          Basic instructions for use with Avida can be found on
	  <a href="http://devolab.cse.msu.edu/private/">the Devolab's web site.</a>
        </p>
        <fixme author="KGN">That link looks temporary. When it breaks, ask David for the new link.</fixme>
        <p>
          Read more detailed instructions at
          <a href="http://svnbook.red-bean.com/en/1.1/">red-bean.com's online Subversion pages.</a>
	</p>
      </section>
    </section>

    <section id="win32_build_system">
      <title>Build System</title>

      <section id="win32_gcc">
	<title>MinGW</title>
        <p><strong>Requirements:</strong></p>
        <p>None.</p>
	<p>
	  The MinGW project provides a native compiler for Windows
	  based on GCC.  If we compiled with Cygwin, the executable
	  would need the Cygwin compatibility DLL.
	</p>
	<p><strong>Installation:</strong></p>
	<p>
	  Download MinGW at <a href="http://www.mingw.org/">MinGW
	  Home</a>.  Also install MSYS and the MSYS Developer
	  toolkit.  This provides a bash shell and make.  Unpack the
	  latest w32-api, automake, and autoconf tarballs in the MinGW
	  directory.
	</p>
      </section>

      <section id="win32_cmake">
        <title>CMake</title>
        <p><strong>Requirements:</strong></p>
        <p>None.</p>
        <p><strong>Installation:</strong></p>
        <p>
	  Download and run the CMake installer for Windows via
	  <a href="http://www.cmake.org/files/v2.0/CMSetup206.exe">
	    http://www.cmake.org/files/v2.0/CMSetup206.exe
          </a>
        </p>
	<p>
	  Basic instructions for use with Avida can be found in the
	  file "<code>README</code>" in the top-level Avida source
	  code directory. Read more detailed instructions at <a
	  href="http://cmake.org/HTML/Documentation.html">CMake's
	  online documentation pages.</a>
	</p>
      </section>
    </section>

    <section id="win32_avida_ed_gui_requirements">
      <title>Avida-Ed interactive GUI requirements</title>

      <section id="win32_python">
	<title>Python</title>
	<p><strong>What is it?</strong></p>
	<p>
	  Python is an interpreted, interactive, object-oriented
	  programming language.  It permits rapid experimentation with
	  and design of new parts of the Avida-Ed GUI without
	  recompilation of c++ parts of Avida. Our Python code is then
	  embedded in the double-clickable Avida-Ed application, along
	  with a Python interpreter, and is run when Avida-Ed is
	  launched.
        </p>
        <p><strong>Requirements:</strong></p>
        <p>
          Readline is suggested but not required. Using the Python
          interpreter without Readline's command-line editing,
          tab-completion, and history is pretty tedious.  There are no
          other requirements.
        </p>
        <p><strong>Installation:</strong></p>
        <p>
          Download and install Python
          <a href="http://www.python.org/ftp/python/2.4.1/python-2.4.1.msi">
	    http://www.python.org/ftp/python/2.4.1/python-2.4.1.msi
	  </a>
        </p>
	<p>
	  GCC compatible versions of the Python libraries need to be
	  generated.  Cygwin comes with programs called pexports and
	  dlltool to help with this.  <a
	  href="http://www.mingw.org/MinGWiki/index.php/Python%20extensions">Instructions
	  for generating GCC compatible Python library</a>
	</p>
	<p>
	  <code>
	    pexports.exe /c/WINDOWS/system32/python24.dll > python24.def
	    dlltool --dllname python24.dll --def python24.def --output-lib libpython24.a
	    cp libpython24.a c:\python24\libs
	  </code>
	</p>
	<p><strong>Where things are installed:</strong></p>
        <p>
	  Python 2.4 is installed at <code>C:\Python24</code> by
	  default.
	</p>
        <p><strong>Usage:</strong></p>
        <p>Oodles of instruction can be had at <a
        href="http://python.org/doc/2.4/">Python's documentation
        pages.</a>
	</p>
      </section>

      <section id="win32_readline">
        <title>Readline</title>
        <p>
	  Readline isn't absolutely required, but it does help with
	  development and is recommended.  You can pickup a windows
	  Python module at <a
	  href="http://sourceforge.net/projects/uncpythontools/">http://sourceforge.net/projects/uncpythontools/</a>.
	  Download and unpack the Readline Python package
	  <a href="http://easynews.dl.sourceforge.net/sourceforge/uncpythontools/readline-1.12.win32.exe">
	    http://easynews.dl.sourceforge.net/sourceforge/uncpythontools/readline-1.12.win32.exe
          </a>
          into the directory of your choice using cygwin; for example:
        </p>
        <p><strong>Requirements:</strong></p>
        <p>
	  ctypes modules:
	  http://starship.python.net/crew/theller/ctypes
	</p>
        <p>
          <code>$ cd ~/src</code>
          <br/>
          <code>
            $ wget http://easynews.dl.sourceforge.net/sourceforge/uncpythontools/readline-1.12.win32.exe
          </code>
        </p>
        <p>
          Build and install.  This is easy, just click on the installer in explorer or execute it from the command line.
        </p>
      </section>

      <section id="win32_qt3">
        <title>Qt/Windows</title>
	<p>
	  We can use the GPL version of Qt/PyQt, because of the
	  wonderful work from the kde-cygin project and kscraft
	  project.  This does not require Cygwin, and will compile
	  under MinGW.
        </p>
        <p>
          <code>
            $ wget http://prdownloads.sourceforge.net/qtwin/qt-win-free-3.3.4-3-src.tar.bz2?download
	  </code>
          <br/>
          <code>$ tar xvfj qt-win-free-3.3.4-3.src.tar.bz2</code>
	</p>
        <p>
          Qt/Win and some of the third-party software that depends on
          Qt/Win require that certain environment variables be set.
          For example, if you use <code>bash</code> as your shell:
        </p>
        <p>
          <code>$ cd qt-3</code>          
          <br/>
          <code>$ export QTDIR=`pwd`</code>          
          <br/>
	  <code>$ export MINGW=/c/MinGW</code>
	  <br/>
          <code>$ export PATH=$PATH:$QTDIR/bin:$QTDIR/lib:$MINGW/bin:/c/Python24</code>          
          <br/>
          <code>$ export QMAKESPEC=win32-g++</code>          
        </p>
        <note label="Important">
          Record the value of <code>$QTDIR</code>.
          These settings of <code>$QTDIR</code>, <code>$PATH</code>, and <code>$DYLD_LIBRARY_PATH</code>
          will be required later by other third-party software.
          To determine the value of <code>$QTDIR</code>, for example:
          <br/>
          <code>$ echo $QTDIR</code>
          <br/>
          <code>/c/cygwin/home/josh/src/qt-3</code>
        </note>
        <p>
          Configure and build:
        </p>
        <p>
          <code>$ configure.bat</code>          
	</p>
	<p>
	  If the build dies in the middle, execute the following:
	</p>
	<p>
	  <code>$ mingw32-make</code>          
	</p>
      </section>
      
      <section id="win32_sip">
        <title>SIP</title>
        <p>
          SIP requires that the <code>$QTDIR</code>,
          <code>$PATH</code>, and <code>$MINGW</code> environment
          variables point to your Qt/Windows installation, so set them
          accordingly if they aren't already set.  For example, if you
          use <code>bash</code> as your shell:
        </p>
        <p>
          <code>$ export QTDIR=/c/cygwin/home/josh/src/qt-3</code>
          <br/>
          <code>$ export MINGW=/c/mingw</code>
          <br/>
          <code>$ export PATH=$PATH:$QTDIR/bin:$QTDIR/lib:/c/Python24</code>
        </p>
        <p>
          Download and unpack the SIP source archive
	  <a href="http://www.river-bank.demon.co.uk/download/sip/sip-4.3.tar.gz">
	    http://www.river-bank.demon.co.uk/download/sip/sip-4.1.1.tar.gz
          </a>
          into the directory of your choice using MSYS; for example:
        </p>
        <p>
          <code>$ cd /c/cygwin/home/josh/src</code>
          <br/>
          <code>
            $ wget http://www.river-bank.demon.co.uk/download/sip/sip-4.3.tar.gz
          </code>
          <br/>
          <code>$ tar xvfz sip-4.3.tar.gz</code>
        </p>
	<p>
	  Patch to build on Windows.  As documented on this page: <a href="http://kscraft.sourceforge.net/convert_xhtml.php?doc=pyqt-windows-install.xhtml">
	  http://kscraft.sourceforge.net/convert_xhtml.php?doc=pyqt-windows-install.xhtml
	</a>, there is a patch you need to apply to SIP if you download it directly from Riverbank.
	To download and apply the patch:
	</p>
	<p>
	  <code>$ wget http://prdownloads.sourceforge.net/kscraft/sip-4.1.1.diff?download</code>
	  <br/>
	  <code>$ cd sip-4.3</code>
	  <br/>
	  <code>$ patch -p1 &lt; ../sip-4.1.1.diff</code>
	</p>
        <p>
          Configure, build, and install, make SURE you do this in
          either the windows command shell or the MSYS shell.
        </p>
	<p>
	  If you are using MSYS:
	</p>
        <p>
          <code>$ cd sip-4.3</code>
          <br/>
          <code>$ /c/python24/python configure.py -l qt-mt -p win32-g++ DEL_FILE=rm COPY=cp MKDIR=mkdir</code>
          <br/>
          <code>$ make</code>
	  <br/>
          <code>$ make install</code>
        </p>
	<p>
	  If you are using Windows cmd:
	</p>
        <p>
          <code>$ cd sip-4.3</code>
          <br/>
          <code>$ c:\python24\python configure.py -l qt-mt -p win32-g++</code>
          <br/>
          <code>$ mingw32-make</code>
	  <br/>
          <code>$ mingw32-make install</code>
        </p>

      </section>
      
      <section id="win32_pyqt">
        <title>PyQt</title>
        <p>
          PyQt requires that the <code>$QTDIR</code>,
          <code>$PATH</code>, and <code>$MINGW</code> environment
          variables point to your Qt/Windows installation, so set them
          accordingly if they aren't already set.  For example, if you
          use <code>bash</code> as your shell:
        </p>
        <p>
          <code>$ export QTDIR=/c/cygwin/home/josh/src/qt-3</code>
          <br/>
          <code>$ export MINGW=/c/mingw</code>
          <br/>
          <code>$ export PATH=$PATH:$QTDIR/bin:$QTDIR/lib:/c/Python24</code>
        </p>
        <p>
          Download and unpack the PyQt source archive
          <a href="http://www.river-bank.demon.co.uk/download/PyQt/PyQt-mac-gpl-3.13.tar.gz">
            http://www.river-bank.demon.co.uk/download/PyQt/PyQt-mac-gpl-3.13.tar.gz
          </a>
          into the directory of your choice using Terminal.app; for example:
        </p>
        <p>
          <code>$ cd ~/src</code>          
          <br/>
          <code>
            $ wget http://www.river-bank.demon.co.uk/download/PyQt/PyQt-x11-gpl-3.15.tar.gz
          </code>
          <br/>
          <code>$ tar xvfz PyQt-x11-gpl-3.15.tar.gz</code>
        </p>

	<p>
	  Patch to build on Windows.  As documented on this page: <a href="http://kscraft.sourceforge.net/convert_xhtml.php?doc=pyqt-windows-install.xhtml">
	  http://kscraft.sourceforge.net/convert_xhtml.php?doc=pyqt-windows-install.xhtml
	</a>, there is a patch you need to apply to PyQt if you download it directly from Riverbank.
	To download and apply the patch:
	</p>
	<p>
	  <code>$ wget http://easynews.dl.sourceforge.net/sourceforge/kscraft/PyQt-x11-3.13.diff</code>
	  <br/>
	  <code>$ cd PyQt-x11-gpl-3.15</code>
	  <br/>
	  <code>$ patch -p1 &lt; ../PyQt-x11-3.13.diff</code>
	</p>

        <p>
          <code>$ cd PyQt-x11-gpl-3.15</code>
          <br/>
          <code>$ /c/python24/python configure.py</code>
          <br/>
          <code>$ make</code>
	  <br/>
          <code>$ make install</code>
        </p>
	<p>
	  If you are using Windows cmd:
	</p>
        <p>
          <code>$ cd PyQt-x11-gpl-3.15</code>
          <br/>
          <code>$ c:\python24\python configure.py</code>
          <br/>
          <code>$ mingw32-make</code>
	  <br/>
          <code>$ mingw32-make install</code>
        </p>

      </section>
      
      <section id="win32_numeric">
        <title>Numeric</title>
        <p>
          Download and unpack the Numeric Python package source
          archive
          <a href="http://easynews.dl.sourceforge.net/sourceforge/numpy/Numeric-24.0b2.tar.gz">
	    http://easynews.dl.sourceforge.net/sourceforge/numpy/Numeric-24.0b2.tar.gz
          </a>
          into the directory of your choice using MSYS; for example:
        </p>
        <p>
          <code>$ cd ~/src</code>
          <br/>
          <code>
            $ wget http://easynews.dl.sourceforge.net/sourceforge/numpy/Numeric-24.0b2.tar.gz
          </code>
          <br/>
          <code>$ tar xvfz Numeric-24.0b2.tar.gz</code>
        </p>
        <p>
          Build and install:
        </p>
        <p>
          <code>$ cd Numeric-24.0b2</code>
          <br/>
          <code>$ python setup.py build -cmingw32</code>
          <br/>
          <code>$ python setup.py install --skip-build</code>
        </p>
      </section>

      <section id="win32_numarray">
        <title>Numarray</title>
        <p>
          Download and unpack the Numarray Python package source
          archive
	  <a href="http://easynews.dl.sourceforge.net/sourceforge/numpy/numarray-1.3.3.tar.gz">
	    http://easynews.dl.sourceforge.net/sourceforge/numpy/numarray-1.3.3.tar.gz
          </a>
          into the directory of your choice using MSYS; for example:
        </p>
        <p>
          <code>$ cd ~/src</code>
          <br/>
          <code>
            $ wget http://easynews.dl.sourceforge.net/sourceforge/numpy/numarray-1.3.3.tar.gz
          </code>
          <br/>
          <code>$ tar xvfz numarray-1.3.3.tar.gz</code>
        </p>
        <p>
          Build and install:
        </p>
        <p>
          <code>$ cd numarray-1.3.3</code>
          <br/>
          <code>$ python setup.py build -cmingw32</code>
          <br/>
          <code>$ python setup.py install --skip-build</code>
        </p>
      </section>

      <section id="win32_pyqwt">
        <title>PyQwt</title>
        <p>
          PyQwt requires that the <code>$QTDIR</code>,
          <code>$PATH</code>, and <code>$MINGW</code> environment
          variables point to your Qt/Windows installation, so set them
          accordingly if they aren't already set.  For example, if you
          use <code>bash</code> as your shell:
        </p>
        <p>
          <code>$ export QTDIR=/c/cygwin/home/josh/src/qt-3</code>
          <br/>
          <code>$ export MINGW=/c/mingw</code>
          <br/>
          <code>$ export PATH=$PATH:$QTDIR/bin:$QTDIR/lib:/c/Python24</code>
        </p>
        <p>
          Download and unpack the PyQwt-4.2 Python package source archive
          <a href="http://easynews.dl.sourceforge.net/sourceforge/pyqwt/PyQwt-4.2.tar.gz">
            http://easynews.dl.sourceforge.net/sourceforge/pyqwt/PyQwt-4.2.tar.gz
          </a>
          into the directory of your choice using cygwin; for example:
        </p>
        <p>
          <code>$ cd ~/src</code> 
          <br/>
          <code>
            $ wget http://easynews.dl.sourceforge.net/sourceforge/pyqwt/PyQwt-4.2.tar.gz
          </code>
          <br/>
          <code>$ tar xvfz PyQwt-4.2.tar.gz</code>
        </p>
        <p>
          Build and install, using the Windows command shell.
        </p>
        <p>
          <code>$ cd PyQwt-4.2/configure</code>
          <br/>
          <code>$ python configure.py</code>
          <br/>
          <code>$ mingw32-make</code>
          <br/>
          <code>$ mingw32-make install</code>
        </p>
      </section>
      
      <section id="win32_elementtree">
        <title>ElementTree</title>
        <p>
          Download and unpack the ElementTree Python package source archive
          <a href="http://effbot.org/downloads/elementtree-1.2.6-20050316.tar.gz">
            http://effbot.org/downloads/elementtree-1.2.6-20050316.tar.gz
          </a>
          into the directory of your choice
	</p>
	<p>
          <code>$ cd ~/src</code>
          <br/>
          <code>
            $ wget http://effbot.org/downloads/elementtree-1.2.6-20050316.tar.gz
          </code>
          <br/>
          <code>$ tar xfvz elementtree-1.2.6-20050316.tar.gz</code>
        </p>
        <p>
          Build and install:
        </p>
        <p>
          <code>$ cd elementtree-1.2.6-20050316</code>
          <br/>
          <code>$ python setup.py build</code>
          <br/>
          <code>$ python setup.py install</code>
        </p>
      </section>

      <section id="win32_gccxml">
	<title>GCC-XML</title>
	<p>
	  The CVS version of GCC-XML needs to be installed if you're
	  using MinGW.  The 0.6.0 version requires MSVC to be
	  installed.
        </p>
        <p>
          <code>$ cd ~/src</code>
          <br/>
          <code>
            $ cvs -d :pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML login
          </code>
          <br/>
          <code>$ cvs -d :pserver:anoncvs@www.gccxml.org:/cvsroot/GCC_XML co gccxml</code>
        </p>
        <p>
          Configure, build, and install:
        </p>
        <p>
          <code>$ cd gccxml</code>
          <br/>
          <code>$ mkdir build</code>
          <br/>
          <code>$ cd build</code>
          <br/>
          <code>$ cmake .. -G"Unix Makefiles"</code>
          <br/>
          <code>$ make</code>
        </p>
      </section>

      <section id="win32_boost_python">
        <title>Boost.Python</title>
        <p>
          Download and unpack the Boost source archive
	  <a href="http://easynews.dl.sourceforge.net/sourceforge/boost/boost_1_33_0.tar.gz">
            http://easynews.dl.sourceforge.net/sourceforge/boost/boost_1_33_0.tar.gz
          </a>
          into the directory of your choice using cygwin; for example:
        </p>
        <p>
          <code>$ cd ~/src</code>
          <br/>
          <code>
            $ wget http://easynews.dl.sourceforge.net/sourceforge/boost/boost_1_33_0.tar.gz
          </code>
          <br/>
          <code>$ tar xvfz boost_1_33_0.tar.gz</code>
        </p>
        <p>
          Build Boost.Jam, the Boost Build system.  Use the Windows
          command shell to build it.
        </p>
        <p>
          <code>$ cd boost_1_33_0</code>
          <br/>
          <code>$ cd tools\build\jam_src</code>
          <br/>
          <code>$ build.bat gcc-nocygwin</code>
        </p>
        <p>
	  Switch back over to MSYS.  copy bin.ntx86/* to
	  /usr/local/bin
	</p>
        <p>
          <code>$ cp tools/build/jam_src/bin.ntx86/bjam /usr/local/bin</code>
        </p>
        <p>
          Build Boost.Python (warning -- because Boost is a big
          package, most of which we don't need and would take a long
          time to compile, we disable most of Boost, resulting in a
          big and ugly command):
        </p>
        <p>
          <code>$ cd ..\..\..\</code>
          <br/>
	  <code>export PYTHON_ROOT=/c/Python24</code>
	  <br/>
	  <code>export PYTHON_VERSION=2.4</code>
	  <br/>
          <code>$ bjam -sTOOLS=gcc-nocygwin \</code>
          <br/>
          <code>
	    -sBUILD=release \
          </code>
          <br/>
          <code>--prefix=/usr/local \</code>
          <br/>
          <code>--without-serialization \</code>
          <br/>
          <code>--without-test \</code>
          <br/>
          <code>--without-date_time \</code>
          <br/>
          <code>--without-filesystem \</code>
          <br/>
          <code>--without-regexp \</code>
          <br/>
          <code>--without-signals \</code>
          <br/>
          <code>--without-program_options \</code>
          <br/>
          <code>--with-python-root=/c/Python24 \</code>
          <br/>
          <code>-sPYTHON_VERSION=2.4</code>
        </p>
        <p>
          Install Boost.Python (again, a big and ugly command --
          essentially the same as the previous, but appended with
          "<code>install</code>"):
        </p>
        <p>
          <code>$ bjam -sTOOLS=gcc-nocygwin \</code>
          <br/>
          <code>
            "-sBUILD=release"
          </code>
          <br/>
          <code>--prefix=/usr/local \</code>
          <br/>
          <code>--without-serialization \</code>
          <br/>
          <code>--without-test \</code>
          <br/>
          <code>--without-date_time \</code>
          <br/>
          <code>--without-filesystem \</code>
          <br/>
          <code>--without-regexp \</code>
          <br/>
          <code>--without-signals \</code>
          <br/>
          <code>--without-program_options \</code>
          <br/>
          <code>--with-python-root=/c/Python24 \</code>
          <br/>
          <code>-sPYTHON_VERSION=2.4 \</code>
          <br/>
          <code>install</code>
        </p>
	<p>
	  After building it, we still need to compile and install the
	  Boost.Python libraries.
	</p>
	<p>
	  <code>$ cd libs/python/pyste/install</code>
	  <br/>
	  <code>python setup.py install</code>
	</p>
      </section>

      <section id="win32_ipython">
        <title>IPython (optional but recommended)</title>
        <p>
	  First install the Python for Windows extensions <a
	  href="http://easynews.dl.sourceforge.net/sourceforge/pywin32/pywin32-204.win32-py2.4.exe">http://easynews.dl.sourceforge.net/sourceforge/pywin32/pywin32-204.win32-py2.4.exe</a>
	</p>
	<p>
	  <code>$ cd ~/src</code>
	  <br/>
	  <code>$ wget http://easynews.dl.sourceforge.net/sourceforge/pywin32/pywin32-204.win32-py2.4.exe</code>
	  <br/>
	</p>
	<p>
	  Then run the installer
	</p>
	<p>  
        Download and unpack the IPython package source archive for
        Windows <a
        href="http://ipython.scipy.org/dist/ipython-0.6.15.tar.gz">http://ipython.scipy.org/dist/ipython-0.6.15.tar.gz</a>
        into the directory of your choice using cygwin; for example:
        </p>
        <p>
          <code>$ cd ~/src</code>
          <br/>
          <code>
            $ wget http://ipython.scipy.org/dist/ipython-0.6.15.tar.gz
          </code>
          <br/>
          <code>$ tar xvfz ipython-0.6.15.tar.gz</code>
        </p>
        <p>
          Install:
        </p>
        <p>
          <code>$ cd ipython-0.6.15</code>
          <br/>
          <code>$ python setup.py install</code>          
        </p>
      </section>

    </section>

    <section id="win32_avida">
      <title>Building Avida</title>

      <section id="win32_avida_build">
	<title>Compiling Avida</title>
	<p>
	  Building is similiar to building on Mac OSX.  This can all
	  be done in the MSYS environment.
	</p>
	<p>
	  <code>$ mkdir build</code>
	  <br/>
	  <code>$ cd build</code>
	  <br/>
	  <code>$ cmake -G"Unix Makefiles" \</code>
	  <code>   -DAVD_CONSISTENCY_TEST_PRIMITIVE:BOOL=OFF \</code>
	  <code>   -DAVD_PRIMITIVE:BOOL=ON \</code>
	  <code>   -DAVD_UNIT_TESTS:BOOL=OFF \</code>
	  <code>   -DCMAKE_BUILD_TYPE:STRING=Debug \</code>
	  <code>   -DAVD_GUI_NCURSES:BOOL=ON \</code>
	  <code>   -DAVD_PY_BINDINGS:BOOL=ON \</code>
	  <code>   -DBOOST_INCLUDE_PATH:PATH=/usr/local/include/boost-1_33 \</code>
	  <code>   -DBOOST_LIBRARY:FILEPATH=/usr/local/lib/libboost_python-gcc.lib \</code>
	  <code>   -DPYTHON_INCLUDE_PATH:PATH=/c/Python24/include \</code>
	  <code>   -DPYTHON_LIBRARY:FILEPATH=/c/Python24/libs/python24.lib \</code>
	  <code>   -DAVD_GUI_PYQT:BOOL=ON \</code>
	  <code>..</code>
	  <br/>
	</p>
	<p>
	  Before compiling Avida, you will need to set your
	  GCCXML_FLAGS.  Here is one that works for the latest version
	  of MinGW (GCC 3.4.2)
	</p>
	<p>
	  <code>
	    export GCCXML_FLAGS="-D__DBL_MIN_EXP__='(-1021)' -D__FLT_MIN__='1.17549435e-38F' -D__CHAR_BIT__='8' -D__WCHAR_MAX__='65535U' -D__DBL_DENORM_MIN__='4.9406564584124654e-324' -D__FLT_EVAL_METHOD__='2' -D__DBL_MIN_10_EXP__='(-307)' -D__FINITE_MATH_ONLY__='0' -D__GNUC_PATCHLEVEL__='2' -D_stdcall='__attribute__((__stdcall__))' -D__SHRT_MAX__='32767' -D__LDBL_MAX__='1.18973149535723176502e+4932L' -D__LDBL_MAX_EXP__='16384' -D__SCHAR_MAX__='127' -D__USER_LABEL_PREFIX__='_' -D__STDC_HOSTED__='1' -D__WIN32='1' -D__LDBL_HAS_INFINITY__='1' -D__DBL_DIG__='15' -D__FLT_EPSILON__='1.19209290e-7F' -D__GXX_WEAK__='1' -D__tune_i686__='1' -D__LDBL_MIN__='3.36210314311209350626e-4932L' -D__DECIMAL_DIG__='21' -D__LDBL_HAS_QUIET_NAN__='1' -D__GNUC__='3' -D_cdecl='__attribute__((__cdecl__))' -D__DBL_MAX__='1.7976931348623157e+308' -D__WINNT='1' -D__DBL_HAS_INFINITY__='1' -D__WINNT__='1' -D_fastcall='__attribute__((__fastcall__))' -D__cplusplus='1' -D__USING_SJLJ_EXCEPTIONS__='1' -D__DEPRECATED='1' -D__DBL_MAX_EXP__='1024' -D__WIN32__='1' -D__GNUG__='3' -D__LONG_LONG_MAX__='9223372036854775807LL' -D__GXX_ABI_VERSION='1002' -D__FLT_MIN_EXP__='(-125)' -D__DBL_MIN__='2.2250738585072014e-308' -D__FLT_MIN_10_EXP__='(-37)' -D__DBL_HAS_QUIET_NAN__='1' -D__REGISTER_PREFIX__='' -D__cdecl='__attribute__((__cdecl__))' -D__NO_INLINE__='1' -D__i386='1' -D__FLT_MANT_DIG__='24' -D__VERSION__='3.4.2 (mingw-special)' -D_WIN32='1' -D_X86_='1' -Di386='1' -D__i386__='1' -D__SIZE_TYPE__='unsigned int' -D__FLT_RADIX__='2' -D__LDBL_EPSILON__='1.08420217248550443401e-19L' -D__MSVCRT__='1' -D__FLT_HAS_QUIET_NAN__='1' -D__FLT_MAX_10_EXP__='38' -D__LONG_MAX__='2147483647L' -D__FLT_HAS_INFINITY__='1' -D__stdcall='__attribute__((__stdcall__))' -D__EXCEPTIONS='1' -D__LDBL_MANT_DIG__='64' -D__WCHAR_TYPE__='short unsigned int' -D__FLT_DIG__='6' -D__INT_MAX__='2147483647' -DWIN32='1' -D__MINGW32__='1' -D__FLT_MAX_EXP__='128' -D__DBL_MANT_DIG__='53' -D__WINT_TYPE__='short unsigned int' -D__LDBL_MIN_EXP__='(-16381)' -D__WCHAR_UNSIGNED__='1' -D__LDBL_MAX_10_EXP__='4932' -D__DBL_EPSILON__='2.2204460492503131e-16' -D__tune_pentiumpro__='1' -D__fastcall='__attribute__((__fastcall__))' -DWINNT='1' -D__FLT_DENORM_MIN__='1.40129846e-45F' -D__FLT_MAX__='3.40282347e+38F' -D__GNUC_MINOR__='4' -D__DBL_MAX_10_EXP__='308' -D__LDBL_DENORM_MIN__='3.64519953188247460253e-4951L' -D__PTRDIFF_TYPE__='int' -D__LDBL_MIN_10_EXP__='(-4931)' -D__LDBL_DIG__='18' -D__declspec(x)=__attribute__((x)) -iwrapper c:/cygwin/home/gerrishj/src/gccxml/GCC_XML/Support/GCC/3.4 -I/mingw/include -I/mingw/include/c++/3.4.2 -I/mingw/include/c++/3.4.2/mingw32 -I/mingw/lib/gcc/mingw32/3.4.2/include -include c:/cygwin/home/gerrishj/src/gccxml/GCC_XML/Support/GCC/3.4/gccxml_builtins.h"
	  </code>
	</p>
	<p>
	  Then compile Avida
	</p>
	<p>
	  <code>make</code>
	</p>
      </section>

    </section>      

  </body>
</document>
