22
33## Prerequesites
44
5- * A recent C++ compiler that supports ( most of) the C++11 standard.
6- This either implies at least GCC 4.7 (we recommend 4.8 or later) or Clang 3.2 (we recommend 3.3 or later) .
5+ If you use [ CMake ] to compile, most of the prerequesites are downloaded automatically if they aren't
6+ already found on your system .
77
8- * The [ Boost] ( https://boost.org/ ) libraries at least of version 1.53.0.
9- Especially ` boost::program_options ` is required.
8+ ### Required
109
11- * The [ CMake] build tool (at least version 2.8).
10+ * A recent C++ compiler that supports (most of) the C++11 standard. This implies either: GCC 4.7
11+ (we recommend 4.8 or later) or Clang 3.2 (we recommend 3.3 or later).
1212
13- * The [ Eigen3 ] library is required for everything using the \em PFASST++ library.
14- It will be automatically downloaded if it is not found on the system .
13+ * The [ Boost ] ` boost::program_options ` library (at least version 1.53.0). The [ Boost ]
14+ multiprecision component may also be of interest to \em PFASST++ users .
1515
16- * The [ FFTW3] library is required for (some) of the examples.
17- It will be automatically downloaded and built as well if it is not found on the system.
16+ * The [ Eigen3] library.
1817
19- * The [ Google Testing] and [ Mocking Framework] are required for the unit tests, and are automatically downloaded and
20- built.
18+ ### Optional
19+
20+ * The [ CMake] build tool (at least version 2.8). This is especially useful for developers.
21+
22+ * The [ FFTW3] library is required for some of the examples.
23+
24+ * The [ Google Testing] and [ Google Mocking] are required for the unit tests.
25+
26+ * An MPI implementation.
27+
28+ ### Using [ HashDist] to obtain prerequesites
29+
30+ The [ HashDist] environment management system provides an easy, robust, and version controlled way
31+ for our developers (and users) to download and install all prerequesites * locally* (ie, you don't
32+ need special privileges on your system to use [ HashDist] , and it won't modify your system).
33+
34+ To use [ HashDist]
35+
36+ 1 . Install [ HashDist]
37+
38+ git clone [email protected] :hashdist/hashdist.git 39+ export PATH=$PWD/hashdist/bin:$PATH
40+
41+ 2 . Install prerequesites
42+
43+ cd PFASST
44+ hit build -v tools/hashdist/pfasst-stack.debian.yaml
45+ mv pfasst-stack.debian stack
46+
47+ This may take a while (ie, do this before going for lunch) the first time through. However, once
48+ complete, subsequent builds (using [ CMake] or otherwise) will bypass prerequesite installation, even
49+ if you change [ CMake] build options or start a fresh out-of-source build directory.
2150
2251
2352## Obtaining the Sources
2453
25- Either use _ Git_ to clone the repository (https://github.com/Parallel-in-Time/PFASST.git ) or download the latest
26- release from [ GitHub] [ github_releases ] .
54+ Use _ Git_ to clone the repository (https://github.com/Parallel-in-Time/PFASST.git ) or download the
55+ latest release from [ GitHub] [ github_releases ] .
2756
2857
29- ## Building
58+ ## Building with CMake
3059
31- 1 . Create a directory for out-of-source builds (usually, people are creative and name it ` build ` ) in the source tree
32- (or elsewhere).
60+ 1 . Create a directory for out-of-source builds (usually, people are creative and name it ` build ` ) in
61+ the source tree (or elsewhere).
3362
34632 . Decide on what and how you want to build:
3564
@@ -58,7 +87,7 @@ release from [GitHub][github_releases].
5887
5988 * __ Test Suite__
6089
61- * Deactivate building of the test suite by passing ` -Dpfasst_BUILD_TESTS=OFF ` to the _ CMake_ command line (not
90+ * Deactivate building of the test suite by passing ` -Dpfasst_BUILD_TESTS=OFF ` to the _ CMake_ command line (not
6291 recommended).
6392
6493 * __ Examples__
@@ -81,7 +110,7 @@ release from [GitHub][github_releases].
81110 * In case you also want to install the compiled example programs on your system, specify
82111 ` -Dpfasst_INSTALL_EXAMPLES=ON ` .
83112
84- * For example, to build a release version with _ Clang_ on a Linux system without the examples, the call to
113+ * For example, to build a release version with _ Clang_ on a Linux system without the examples, the call to
85114 _ CMake_ looks like:
86115
87116 cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ -Dpfasst_BUILD_EXAMPLES=OFF ..
@@ -99,18 +128,25 @@ release from [GitHub][github_releases].
99128
100129 make test
101130
102- In case any of the tests do not pass, please [ open an issue on GitHub] [ github_new_issue ] and provide the full log of
131+ In case any of the tests do not pass, please [ open an issue on GitHub] [ github_new_issue ] and provide the full log of
103132 your _ CMake_ and _ make_ invocations.
104133
1051345 . (optional) Install \em PFASST++ headers (and compiled examples if specified so):
106135
107136 make install
108137
138+ ## Building with vanilla make
139+
140+ A sample ` Makefile ` is included in the ` advection_diffusion ` example. This may be of particular
141+ interested to advanced users wishing to incorporate \rm PFASST++ into their existing code bases.
142+
109143
144+ [ Boost ] : https://boost.org/
110145[ CMake ] : http://cmake.org/
111146[ Eigen3 ] : http://eigen.tuxfamily.org/
112147[ Google Testing ] : https://code.google.com/p/googletest/
113- [ Mocking Framework ] : https://code.google.com/p/googlemock/
148+ [ Google Mocking ] : https://code.google.com/p/googlemock/
114149[ FFTW3 ] : http://fftw.org/
115150[ github_releases ] : https://github.com/Parallel-in-Time/PFASST/releases
116151[ github_new_issue ] : https://github.com/Parallel-in-Time/PFASST/issues/new
152+ [ HashDist ] : http://hashdist.readthedocs.org/en/latest/
0 commit comments