Project

General

Profile

Installation » History » Revision 25

Revision 24 (Tony Ciavarella, 06/04/2012 03:01 AM) → Revision 25/175 (Tony Ciavarella, 06/04/2012 07:05 PM)

h1. Installation 

 h2. Obtaining the Source Code 

 h3. Release Tarballs 

 Release source tarballs are available on the "Files":http://oss.squalllinesoftware.com/projects/disorder/files page.    This is what you want if you are looking for stability and something ready for production use.    You'll probably want to use the most recent version found on that page. 

 

 h3. SCM 

 The Disorder source code is hosted in a "Bazaar":http://bazaar.canonical.com repository.    This is what you want if you are looking for the very latest bleeding edge of the code for contributing to Disorder or whatever other reason you may have. 

 To get a lightweight checkout of the latest version without all the history (not suitable for Disorder development): 
 <pre>bzr co --lightweight bzr://bzr.squalllinesoftware.com/disorder</pre> http://???.squalllinesoftware.com/???/disorder</pre> 

 To clone the repository including the full history: 
 <pre>bzr branch bzr://bzr.squalllinesoftware.com/disorder</pre> 

 http://???.squalllinesoftware.com/???/disorder</pre> 

 h2. Prerequisites 

 The following third party things are required to use Disorder: 
 * "Boost":http://www.boost.org >= 1.49.0 
 * "Eigen":http://eigen.tuxfamily.org >= 3.0.5 
 * C++ version of the "SEDRIS SRM":http://www.sedris.org/srm_4.4/srm_c_cpp.htm >= 4.4.0 (optional but you will need some kind of sophisticated geospatial library) 
 * A "Python":http://www.python.org interpreter (needed to use the "waf":https://code.google.com/p/waf/ build system) 

 Build and install these things in accordance with the instructions for your operating system provided by each vendor.    Some hints for certain platforms follow. 

 h3. Debian Linux and Derivatives 

 Pat yourself on the back for using a good operating system.    All the dependencies are available via the package system.    To install the Boost and Eigen build dependencies on Debian and maybe other derivatives: 
 <pre>sudo apt-get install libboost-dev libboost-system-dev libboost-thread-dev libboost-date-time-dev libeigen3-dev</pre> 

 If you don't already have python, this will get the required bits of that: 
 <pre>sudo apt-get install python</pre> 

 h2. Configuration 

 If everything is setup properly, this step will be a breeze, but it is important to resolve any errors produced by the configuration step prior to attempting to compile Disorder. 

 h3. Linux 

 From inside the root of the Disorder tree do this in your favorite terminal emulator: 
 <pre>./waf configure --sedris-srm-root=<put the path to the SEDRIS SRM root here></pre> 
 For example, if your SEDRIS SRM is in /opt/sedris/srm: 
 <pre>./waf configure --sedris-srm-root=/opt/sedris/srm</pre> 

 That command will take several seconds and print a bunch of hopefully green stuff.    The output should end up looking something like this: 
 <pre> 
 Setting top to                             : /opt/disorder  
 Setting out to                             : /opt/disorder/bin  
 Checking for 'g++' (c++ compiler)          : /usr/bin/g++  
 Checking for program doxygen               : /usr/bin/doxygen  
 Checking for program tar                   : /bin/tar  
 Checking boost ABI tag                     :   
 Checking boost includes                    : 1_49  
 Checking boost libs                        : ok  
 Checking for boost linkage                 : ok  
 Checking for header boost/asio.hpp         : yes  
 Checking for header boost/bind.hpp         : yes  
 Checking for header boost/date_time.hpp    : yes  
 Checking for header boost/detail/endian.hpp : yes  
 Checking for header boost/format.hpp          : yes  
 Checking for header boost/function.hpp        : yes  
 Checking for header boost/functional/factory.hpp : yes  
 Checking for header boost/ptr_container/ptr_vector.hpp : yes  
 Checking for header boost/scoped_ptr.hpp                 : yes  
 Checking for header boost/static_assert.hpp              : yes  
 Checking for header boost/thread.hpp                     : yes  
 Checking for program pkg-config                          : /usr/bin/pkg-config  
 Checking for 'eigen3'                                    : yes  
 Checking for header Eigen/Dense                          : yes  
 Checking for SEDRIS SRM                                  : /opt/sedris/srm  
 Checking for SEDRIS SRM include directory                : /opt/sedris/srm/src/include  
 Checking for SEDRIS SRM library directory                : /opt/sedris/srm/lib/linux-3.1.0-1-amd64-i386-gnu-/OPT  
 SEDRIS SRM library                                       : /opt/sedris/srm/lib/linux-3.1.0-1-amd64-i386-gnu-/OPT/libsrm.so  
 Checking for header srf_all.h                            : yes  
 'configure' finished successfully (25.518s) 
 </pre> 

 If you get an error instead of that last line saying that 'configure' finished successfully, you must fix whatever is making it unhappy and try again. 

 h4. Clang++ 

 To use the Clang C++ compiler instead of GCC, assuming clang++ is installed on the build system: 
 <pre>CXX=<put the path to clang++ here> ./waf configure --sedris-srm-root=<put the path to the SEDRIS SRM root here></pre> 

 For example: 
 <pre>CXX=/usr/bin/clang++ ./waf configure --sedris-srm-root=/opt/sedris/srm</pre> 

 h3. Windows 

 On windows, your $PATH environment variable needs to include the path to the Python interpreter. 

 Next, you'll probably want to modify the provided batch file to tell Disorder where your prerequisites live.    From inside the root of the disorder tree: 
 <pre>copy tools/configure.bat configure.bat</pre> 

 This file contains some stuff at the top you'll want to edit to match your system configuration. 

 h2. Compiling 

 The basic strategy for building Disorder is to invoke the waf build system with the desired build variant. 

 Disorder has two build variants: 
 * debug: produces a library that contains debugging symbols and disables most compiler optimizations 
 * optimized: produces a library stripped of debugging symbols and enables compiler optimizations for performance 

 It might be reasonable to use the @debug@ variant in a development environment and the @optimized@ variant in a production environment. 

 The @debug@ variant is produced by the @build_debug@ build target and the @optimized@ variant is produced by the @build_optimized@ build target. 

 The results of the build are put in the @bin@ subdirectory.   

 Both variants can coexist in the tree at the same time. 

 h3. Linux 

 On Linux, to build the Disorder @debug@ variant: 
 <pre>./waf build_debug</pre> 

 h3. Windows 

 On Windows, the waf script is invoked indirectly.    To build the @optimized@ variant: 
 <pre>python.exe waf build_optimized</pre> 

 h2. Building Against the Disorder Library