Skip to content

Commit 7022b7f

Browse files
committed
Merge pull request #149 from memmett/feature/build-docs
Update install instructions. LGTM.
2 parents 1a19376 + b8ca785 commit 7022b7f

File tree

1 file changed

+56
-20
lines changed

1 file changed

+56
-20
lines changed

doc/source/installing.md

Lines changed: 56 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,34 +2,63 @@
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

3463
2. 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

105134
5. (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

Comments
 (0)