From: Wolfgang Bangerth
Date: Sat, 5 Jan 2013 04:07:33 +0000 (+0000)
Subject: Merge from mainline.
X-Git-Tag: v8.0.0~1079^2~197
X-Git-Url: https://gitweb.dealii.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1385aa485b2ece9cf8e2809535b13c18bc40e127;p=dealii.git
Merge from mainline.
git-svn-id: https://svn.dealii.org/branches/branch_cmake@27928 0785d39b-7218-0410-832d-ea1e28bc413d
---
1385aa485b2ece9cf8e2809535b13c18bc40e127
diff --cc deal.II/Makefile
index 94aa101fa8,529023d904..090d415e21
--- a/deal.II/Makefile
+++ b/deal.II/Makefile
@@@ -1,5 -1,158 +1,159 @@@
-# $Id$
-#
-# Makefile for the whole library
+default:
++<<<<<<< .working
++=======
+ SHELL=/bin/bash
+
+ help:
+ @echo "========================================================================"
+ @echo "= Global Makefile for the deal.II libraries ="
+ @echo "========================================================================"
+ @echo "= ="
+ @echo "= The following targets exist: ="
+ @echo "= all : debug and optimized libraries ="
+ @echo "= debug : the debug version of the deal.II library ="
+ @echo "= optimized : the optimized version of the deal.II library ="
+ @echo "= ="
+ @echo "= contrib : additional libraries in contrib, if there are any ="
+ @echo "= ="
+ @echo "= online-doc : generate the documentation in HTML format ="
+ @echo "= TODO : create a \"TODO\" file from the source files ="
+ @echo "= TAGS : create a TAGS file from include and source files ="
+ @echo "= ="
+ @echo "= clean : removes all object files in subdirs ="
+ @echo "= distclean : removes all object files, libraries, etc in subdirs ="
+ @echo "========================================================================"
+
+ config.log: configure common/template-arguments.in common/dealiitemplates.pm.in
+ $(error Error: configuration not up to date. Please run ./configure or ./reconfigure)
+
+ deps: config.log
+ @cd common/scripts && $(MAKE) $(MAKEOPTIONS)
+ @cd source && if $(MAKE) $(MAKEOPTIONS) Makefile.dep;\
+ then : ;\
+ else rm Makefile.dep && $(MAKE) $(MAKEOPTIONS) Makefile.dep; fi
+ @cd lib && $(MAKE) $(MAKEOPTIONS) external-links
+ @if test ! -d lib/debug ; then mkdir -p lib/debug && echo "Created lib/debug" ; fi
+ @if test ! -d lib/optimized ; then mkdir -p lib/optimized && echo "Created lib/optimized" ; fi
+
+
+
+ all: debug optimized
+
+ debug: deps contrib
+ @cd source && $(MAKE) debug
+
+ optimized: deps contrib
+ @cd source && $(MAKE) optimized
+
+ contrib:
+ @cd contrib && $(MAKE)
+
+ online-doc doc:
+ cd doc && $(MAKE)
+ @echo
+ @echo
+ @echo =======================================================
+ @echo "The online documentation can now be accessed through"
+ @echo " doc/index.html"
+ @echo =======================================================
+ @echo
+ @echo
+
+ TAGS:
+ @cd common ; etags --language=c++ \
+ ../include/deal.II/*/*.h ../source/*/*.cc \
+ ../examples/*/*.cc ; \
+ perl -pi -e 's/ \* .*//g; s&[\t]*/\*.*&&g; s&[\t]*\*/.*&&g;' TAGS
+
+
+ clean: clean-contrib clean-source \
+ clean-doc clean-examples clean-lib clean-tests
+ -rm -f TODO common/TAGS
+
+ clean-contrib:
+ @cd contrib && $(MAKE) clean
+
+ clean-source:
+ @cd source && $(MAKE) CLEAN=yes clean
+
+ clean-doc:
+ @cd doc && $(MAKE) CLEAN=yes clean
+
+ clean-examples:
+ @cd examples && $(MAKE) CLEAN=yes clean
+
+ clean-lib:
+ @cd lib && $(MAKE) CLEAN=yes clean
+
+ # if that directory exists, go into 'tests' and clean up there as well
+ clean-tests:
+ @-cd tests && $(MAKE) clean
+
+ clean-common-scripts:
+ @cd common/scripts && $(MAKE) clean
+
+ distclean: clean
+ @cd lib && $(MAKE) distclean
+ @-cd tests && $(MAKE) distclean
+ @-rm source/*/*.inst
+ @$(MAKE) clean-common-scripts
+
+
+
+ # #############################################################################
+ # targets for build tests. these targets are supposed to be called for regular
+ # build tests that send their results back home to our build test server. note
+ # that this target is supposed to be called right after checking out a version
+ # from our CVS server, so at this time, common/Make.global_options doesn't
+ # exist yet (and isn't included at the top of this file, due to a
+ # conditional), and we first have to set up all this stuff.
+ #
+ # the way this target works is that it first generates a bunch of lines for
+ # the output file that will ultimately be sent home. it then calls ./configure
+ # and stashes away both the output and the return value. if ./configure
+ # succeeds, we extract a little more information concluding the
+ # header. irrespective of this, we then append the output of ./configure to
+ # the log file. if the call to ./configure failed, we send the result back
+ # home and exit.
+ #
+ # if ./configure succeeded, we then go on to the build-test-do target, which
+ # actually compiles something, and when we come back from there we send the
+ # whole thing over to the server
+ build-test:
+ echo AUTOMATED DEAL.II BUILD TEST | tee build-test-log
+ -(./configure $(BUILDTESTFLAGS) 2>&1) > build-test-config
+ echo BEGIN HEADER `date -u '+%Y-%m-%d %T'` | tee -a build-test-log
+ (cd common ; $(MAKE) BUILDTEST=yes -f Make.global_options print-summary) | tee -a build-test-log
+ echo END HEADER `date -u '+%Y-%m-%d %T'` | tee -a build-test-log
+ echo | tee -a build-test-log
+ echo BEGIN CONFIGURE OUTPUT `date -u '+%Y-%m-%d %T'` | tee -a build-test-log
+ cat build-test-config | tee -a build-test-log
+ echo END CONFIGURE OUTPUT `date -u '+%Y-%m-%d %T'` | tee -a build-test-log
+ echo | tee -a build-test-log
+ -$(MAKE) BUILDTEST= build-test-do 2>&1 | tee -a build-test-log
+
+ # target to do the actual compilation tests for an automated build test. build
+ # the library, the example programs, and the doxygen example programs. if the
+ # testsuite has been checked out, run that, too, and send the results to the
+ # testsuite server
+ build-test-do:
+ @echo BEGIN MAKE LIB OUTPUT `date -u '+%Y-%m-%d %T'`
+ $(MAKE) all
+ @echo END MAKE LIB OUTPUT `date -u '+%Y-%m-%d %T'`
+ @echo
+ @echo BEGIN MAKE EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'`
+ cd examples ; $(MAKE)
+ @echo END MAKE EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'`
+ @echo
+ @echo BEGIN MAKE RUN EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'`
+ cd examples/doxygen ; $(MAKE) run
+ @echo END MAKE RUN EXAMPLES OUTPUT `date -u '+%Y-%m-%d %T'`
+ @echo
+ @echo BUILD TEST SUCCESSFUL `date -u '+%Y-%m-%d %T'`
+
+
++>>>>>>> .merge-right.r27927
style-h-files:= $(wildcard include/deal.II/*/*.h)
style-cc-files:= $(wildcard source/*/*.cc)
style-examples:= $(wildcard examples/*/*.cc)
diff --cc deal.II/cmake/config/template-arguments.in
index 9b3290f4a3,8178ad9af6..7e97a5eea3
--- a/deal.II/cmake/config/template-arguments.in
+++ b/deal.II/cmake/config/template-arguments.in
@@@ -36,25 -37,23 +37,35 @@@ SERIAL_VECTORS := { Vector
@DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@;
}
+EXTERNAL_SEQUENTIAL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_VECTOR@;
+ @DEAL_II_EXPAND_TRILINOS_BLOCKVECTOR@;
+ @DEAL_II_EXPAND_PETSC_VECTOR@;
+ @DEAL_II_EXPAND_PETSC_BLOCKVECTOR@
+ }
+
+EXTERNAL_PARALLEL_VECTORS := { @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
+ @DEAL_II_EXPAND_TRILINOS_MPI_BLOCKVECTOR@;
+ @DEAL_II_EXPAND_PETSC_MPI_VECTOR@;
+ @DEAL_II_EXPAND_PETSC_MPI_BLOCKVECTOR@
+ }
+
+ VECTORS_WITH_MATRIX := { Vector;
+ Vector ;
+ Vector;
+
+ BlockVector;
+ BlockVector;
+ BlockVector;
+
+ @DEAL_II_EXPAND_TRILINOS_VECTOR@;
+ @DEAL_II_EXPAND_TRILINOS_MPI_VECTOR@;
+ }
+
DOFHANDLERS := { DoFHandler;
- hp::DoFHandler;
- MGDoFHandler }
+ hp::DoFHandler }
DOFHANDLER_TEMPLATES := { DoFHandler;
- hp::DoFHandler;
- MGDoFHandler }
+ hp::DoFHandler }
TRIANGULATION_AND_DOFHANDLER_TEMPLATES := { Triangulation;
DoFHandler;
diff --cc deal.II/doc/development/toc.html
index cb384205fb,c5a54a5a15..108124d01d
--- a/deal.II/doc/development/toc.html
+++ b/deal.II/doc/development/toc.html
@@@ -34,19 -33,17 +34,18 @@@
- information on Recent changes to the library: If you want to stay
- informed about what is going on with the library itself, you may want
- to take a look at this page. You can browse the repository and
- subscribe to an rss feed too.
Makefiles:
- The library has a file which exports several make variables
- to Makefiles which include it. This information may be used
- to make writing Makefiles more portable and simple. The
- exported variables are explained in this page and we show two
- generic Makefiles, one for small and one for larger projects.
+
+ deal.II CMake documentation:
+ This page provides extensive information about usage and
+ development of the deal.II CMake build system.
+
+
Example CMakeLists.txt:
+ An overview of how to write the CMakeLists.txt input
+ files that control cmake if you want to use it for your
+ own project and want it to compile and link against
+ the deal.II library.
+ Trilinos is a
+ software package that provides lots of functionality for linear
+ algebra, among other things. For example, it includes implementations of a variety of
+ linear solvers, as well as various different sparse and dense matrix and
+ vector formats. Trilinos also has many subpackages that deal with
+ problems that go far beyond linear algebra, for example nonlinear
+ solvers, automatic differentiation packages, uncertainty propagation
+ engines, etc. Of particular interest to deal.II is their ability to
+ provide this functionality both on sequential and parallel (using MPI)
+ computers. Compared to PETSc, which is written in C, Trilinos is written in
+ C++ and can be
+ considered to be a more modern version of PETSc though both packages are
+ under continuing development at their respective national laboratories.
+
+
+
+ deal.II has wrapper classes to the linear algebra
+ parts of Trilinos that provide almost the
+ same interfaces as the built-in deal.II linear
+ algebra classes. We use these interfaces for parallel computations based
+ on MPI since the native deal.II linear algebra classes lack this
+ ability. They are used, among other programs, in step-31 and step-32.
+
+
+
+ While building deal.II with Trilinos is covered in
+ the ReadMe file, we here give an
+ introduction to building Trilinos in such a way that it contains
+ everything that we need from the deal.II side.
+
+
+
+
Installing Trilinos
+
+
+ Note: Trilinos versions 10.6.x, 10.8.0, 10.8.1, 10.10.2, 10.12.1 are not
+ compatible with deal.II. They contain subtle bugs related to (parallel)
- matrices and vectors. Versions tested to work are 10.4.2, 10.8.5, and
- 10.12.2. We recommend only using one of the tested versions for the time
- being.
++ matrices and vectors. Versions tested to work are 10.4.2, 10.8.5,
++ 10.12.2, and 11.0.3. We recommend only using one of the tested versions
++ for the time being.
+
+
+
+ Trilinos uses cmake to configure and
+ build. The following slightly longish set of commands will set up a
+ reasonable configuration:
+
+ You will need to adjust the path into which you want to install Trilinos
+ in the second to last line of the cmake command.
+
+
+
+ Using MPI: If you
+ want to use Trilinos with MPI on parallel machines,
+ use TPL_ENABLE_MPI=ON instead.
+
+
+
+ Parallel builds:
+ If your computer has more than one processor core, use
+ make -jN instead of make in the last two lines
+ above, where N is the number of processors you have.
+
+
+
+ Trilinos sometimes searches for other libraries but can't find
+ them if they are not in the usual directories or have other
+ names. A common example are BLAS or LAPACK. In a case like
+ this, you may have to specifically pass the directories and/or
+ library names under which they can be found
+ to cmake. For example, this may mean to add the
+ following flags to the call above:
+