more simultaneous build processes (assuming you have that many
processor cores) will greatly accelerate building the library.
+ <li> If you do not intend to modify the <acronym>deal.II</acronym>
+ sources and recompile things, then you can remove
+ the <code>build/</code> directory after the last step.
+
<li>The <acronym>deal.II</acronym> <code>cmake</code> system can accept a
significant number of configuration parameters. See the
discussion <a href="#configuration-options">below</a>.
<a name="configuration-options"></a>
<h3>Configuration options</h3>
+ <p>
+ <acronym>deal.II</acronym> has a large number of optional interfaces to
+ other libraries. By default, <code>cmake</code> will enable interfaces
+ to all external libraries it can find in default paths, but this
+ behavior can all be selected using command line switches to the initial
+ call to <code>cmake</code>.
+ </p>
<a name="optional">
<h4>Selecting optional behavior</h4></a>
- You can give several flags to ./configure:
<ul>
<li>
<p>
- <code>--enable-shared</code>: Compile the files of deal.II into
- shared libraries, rather than statically linked
- libraries. Enabling this option saves disk space, link time and
- start-up time, so this is the default. Some systems
- might not support shared libraries, in which case you should
- call ./configure with the parameter
- <code>--disable-shared</code>.
+ <i>Threading</i>: By default, deal.II supports parallelism between
+ multiple cores on the same machine using both threads and a
+ task-based model built on the
+ <a href="http://threadingbuildingblocks.org/"
+ target="_top">Threading Building Blocks</a>. You can switch
+ threading off by passing the <code>XXXXXX HOW EXACTLY DO I DO
+ THIS??? XXXXX</code> argument to <code>cmake</code>.
</p>
<li>
<p>
- <code>--enable-threads</code>: This flag indicates that those
- parts of the library that support this compute in parallel,
- using multiple threads, making programs significantly faster on
- machines with multiple cores or processors. The default is to
- use multiple threads since most machines today have several
- processor cores. If this is not desired,
- use <code>--disable-threads</code>.
-
- <li>
- <p>
- <code>--enable-mpi</code>: If given this
- flag, <code>./configure</code> chooses <code>mpiCC</code>
- and <code>mpicc</code> as the C++ and C compilers, respectively,
- unless the <code>$CXX</code> and <code>$CC</code> environment
- variables have specifically been set to something else. If these
- compilers exist and indeed support MPI, then this also switches
- on support for MPI in the library.
- </p>
-
- <li>
- <p>
- <code>--with-cpu=...</code>: Enable specific optimization
- flags for a particular processor. Programs compiled with these options
- might not execute on another system, but may be faster on the
- particular CPU selected.
- </p>
-
- <p>
- For a complete list of supported values of this switch, you may
- take a look at the file <code>aclocal.m4</code> in the top-level
- directory. However, the most commonly used value
- is <code>--with-cpu=native</code>, indicating that the compiler
- should determine the CPU we are running on by itself and
- optimize for it.
- </p>
-
- <li>
- <p>
- <code>--with-doxygen=...</code>: Select the specified executable
- of <code>doxygen</code> over the one automatically found by
- <code>./configure</code>. May also be used if no
- <code>doxygen</code> can be found automatically.
- </p>
+ <i>MPI</i>: To enable parallel computations beyond a single node
+ using the <a href="http://mpi-forum.org/" target="_top">Message
+ Passing Interface (MPI)</a>, pass the
+ <code>-DDEAL_II_WITH_MPI=ON</code> argument
+ to <code>cmake</code>. If <code>cmake</code> found MPI but you
+ specifically do not want to use it, then
+ pass <code>-DDEAL_II_WITH_MPI=OFF</code>.
+ </p>
</ul>
<p>
- <code>./configure</code> stores the paths to some
+ <code>cmake</code> stores the paths to some
programs, such as the compilers or the Perl interpreter. The
compiler which will be used when compiling the library (or your
own application) is therefore selected at the time of
<a name="optional-software"></a>
<h4>Optional interfaces to other software packages</h4>
- <p> <acronym>deal.II</acronym> comes with built-in support for a
- number of external software packages. These packages are
- sometimes detected automatically, sometimes they must be enabled explicitly
- during configuration by adding the option <tt>--with-package</tt>.
- Supported software packages are (the following list contains
- trademarks belonging to their owners):
+ <p>
+ When configuring interfacing to external libraries,
+ the <code>cmake</code> script by default tries to find any of these
+ libraries in a number of standard locations on your file system. For
+ <i>optional</i> interfaces, it gives up if they are not there and
+ <acronym>deal.II</acronym> will be built without them. However, there
+ are three interfaces that we <i>need</i> to have: to BOOST, UMFPACK and
+ the Threading Building Blocks. If they are not found in places
+ like <code>/usr/</code> then <code>cmake</code> will resort to versions
+ of these libraries that we provide bundled as part of the
+ <acronym>deal.II</acronym> tar files.
+ </p>
+
+ <p>
+ The following paragraphs describe how the interfaces to the various
+ packages <acronym>deal.II</acronym> interacts with can be configured.
</p>
+ <dl>
+ <a name="petsc"></a>
+ <dt><a href="http://www.mcs.anl.gov/petsc/"
+ target="_top">PETSc</a></dt>
+ <dd>
+ <p>
+ <a href="http://www.mcs.anl.gov/petsc/" target="_top">PETSc</a> is a
+ library that supports parallel linear algebra and many other things.
+ To interface with it, add <code>-DPETSC_DIR=/path/to/petsc
+ -DPETSC_ARCH=architecture</code> to the argument list
+ for <code>cmake</code>. The values for these arguments must be the
+ same as those specified when building PETSc. Alternatively, you can
+ also set environment variables <code>PETSC_DIR, PETSC_ARCH</code>
+ and <code>cmake</code> will pick them up.
+ </p>
+
+ <p>
+ To disable the PETSc interfaces in cases where <code>cmake</code>
+ automatically finds it, use <code>-DDEAL_II_WITH_PETSC=OFF</code>
+ More information on configuring and building PETSC can be
+ found <a href="readme-petsc-trilinos.html" target="body">here</a>.
+ </p>
+ </dd>
+
+ <a name="slepc"></a>
+ <dt><a href="http://www.grycap.upv.es/slepc/" target="_top">SLEPc</a></dt>
+ <dd>
+ <p>
+ <a href="http://www.grycap.upv.es/slepc/" target="_top">SLEPc</a> is
+ a library for eigenvalue computations that builds on PETSc. Its
+ configuration works just like that for PETSc, except that the
+ variable to set is <code>SLEPC_DIR</code> (it uses the same
+ architecture as specified in <code>PETSC_ARCH</code>).
+ For the interface with SLEPc to work, <acronym>deal.II</acronym>'s
+ interface to PETSc must also be configured correctly (see above).
+ </p>
+ </dd>
+
+ <a name="trilinos"></a>
+ <dt><a href="http://trilinos.sandia.gov" target="_top">Trilinos</a></dt>
+ <dd>
+ <p>
+ <a href="http://trilinos.sandia.gov" target="_top">Trilinos</a> is a
+ library for parallel linear algebra and all sorts of other things as
+ well.
+ To interface with it,
+ add <code>-DTRILINOS_DIR=/path/to/trilinos</code> to the argument
+ list for <code>cmake</code>. Alternatively, you can
+ also set an environment variable <code>TRILINOS_DIR</code>
+ and <code>cmake</code> will pick up this path.
+ </p>
+
+ <p>
+ To disable the Trilinos interfaces in cases where <code>cmake</code>
+ automatically finds it, use <code>-DDEAL_II_WITH_PETSC=OFF</code>
+ More details about compatibility and
+ configuration can be found <a href="readme-petsc-trilinos.html"
+ target="body">here</a>.
+ </p>
+ </dd>
+ </dl>
+
+OLD TEXT OLD TEXT OLD TEXT
<dl>
<dt>TECPLOT</dt>
<dd>Autodetected if one of the variables <tt>$TECHOME</tt>,
<a href="http://www.cise.ufl.edu/~davis/">Timothy A. Davis</a>.
</dd>
- <a name="petsc"></a>
- <dt>Petsc</dt>
- <dd>
- <p>
- <acronym>deal.II</acronym> can interface to
- the <a href="http://www.mcs.anl.gov/petsc/"
- target="_top">PETSc</a> library. The simplest way to do so is to
- set the <code>PETSC_DIR</code> and <code>PETSC_ARCH</code>
- environment variables. More information and configuration
- options can be found by issuing <code>./configure --help</code>
- at the command line, or, <a href="readme-petsc-trilinos.html"
- target="body">here</a>.
- </p>
-
- <p>
- (<acronym>deal.II</acronym>) version 7.2 (and higher) support
- PETSc 3.x.x only; earlier releases are no longer supported.
- </p>
- </dd>
-
- <a name="slepc"></a>
- <dt>Slepc</dt>
- <dd>
- <p>
- <acronym>deal.II</acronym> can also interface to
- the <a href="http://www.grycap.upv.es/slepc/"
- target="_top">SLEPc</a> library. The way to do it is to set
- the <code>SLEPC_DIR</code> environment variable by
- passing <code>--with-slepc=/path/to/slepc</code>
- to <acronym>deal.II</acronym>'s <code>./configure</code> script.
- The use of SLEPc is optional, however, for the interface with
- SLEPc to work at all, <acronym>deal.II</acronym>'s interface to
- PETSc must also be configured correctly (see the notes above on
- how to do this).
- </p>
- </dd>
-
- <a name="trilinos"></a>
- <dt>Trilinos</dt>
- <dd>
- <p>
- <acronym>deal.II</acronym> can also interface
- to <a href="http://trilinos.sandia.gov" target="_top">Trilinos</a>. The
- simplest way to use these interfaces is to
- pass <code>--with-trilinos=/path/to/trilinos</code>
- to <acronym>deal.II</acronym>'s <code>./configure</code> script. Note
- that not all versions of Trilinos are compatible
- with <acronym>deal.II</acronym>. More details about compatibility and
- configuration can be found <a href="readme-petsc-trilinos.html"
- target="body">here</a>.
- </p>
- </dd>
<a name="metis"></a>
<dt>Metis</dt>