Third-party dependencies
GEOS makes use of multiple third-party libraries (TPLs) and tools, some of which are mandatory and some optional. We only test against specific versions, and sometimes even require development snapshots (specific git commits). Not all of these guarantee backwards compatibility, so we strongly recommend building with these specific versions.
List of third-party libraries and tools
The two tables below lists the dependencies with their specific versions and relevant CMake variables. Some of these libraries may have their own system prerequisites.
Libraries
The following libraries are linked to by GEOS:
Name |
Version |
Enable option |
Path variable |
Description |
---|---|---|---|---|
0.2.0 |
|
|
Library for collecting metadata from HPC application runs, and distributing that metadata to subscriber tools. |
|
2.4.0 |
|
|
Instrumentation and performance profiling library. |
|
0.5.0 |
mandatory |
|
Simplified Data Exchange for HPC Simulations. |
|
2.2.2 |
mandatory |
|
Copy-hiding array abstraction to automatically migrate data between memory spaces. |
|
0.12.1 |
mandatory |
|
Collection of C++ software abstractions that enable architecture portability for HPC applications. |
|
1.10.5 |
mandatory |
|
High-performance data management and storage suite. |
|
2015-12-15 |
|
|
Mathematical Expression Parser and JIT Compiler. |
|
1.8.0 |
mandatory |
|
Light-weight, simple and fast XML parser for C++ with XPath support. |
|
4.0.3 |
mandatory (with MPI) |
|
Parallel Graph Partitioning library. Should be built with 64-bit |
|
5.8.1 |
|
|
A suite of sparse matrix software. |
|
0f6efc3 |
|
|
General purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations. |
|
2186a8f |
|
|
Library of high performance preconditioners and solvers for large sparse linear systems on massively parallel computers. |
|
3.13.0 |
|
|
Suite of data structures and routines for the scalable (parallel) solution of scientific applications. |
|
12.18.1 |
|
|
Collection of reusable scientific software libraries, known in particular for linear solvers. |
|
4.10.3 |
mandatory |
|
A Mesh and Field I/O Library and Scientific Database. |
|
9.0.0-rc3 |
|
|
Open source software for manipulating and displaying scientific data. |
Tools
The following tools are used as part of the build process to support GEOS development:
Name |
Version |
Enable option |
Path variable |
Description |
---|---|---|---|---|
1.8.20 |
|
|
De facto standard tool for generating documentation from annotated C++ sources. |
|
1.8.5 |
|
|
A tool that makes it easy to create intelligent and beautiful documentation. |
|
401a409 |
|
|
A source code beautifier for C, C++, C#, ObjectiveC, D, Java, Pawn and VALA. |
Some other dependencies (GoogleTest, GoogleBenchmark) are provided through BLT build system which is embedded in GEOS source. No actions are needed to build them.
If you would like to create a Docker image with all dependencies, take a look at Dockerfiles that are used in our CI process.
Building bundled dependencies
To simplify the process of building TPLs, we provide a git repository thirdPartyLibs. It contains source copies of exact TPL versions required and is updated periodically. It also contains a CMake script for building all TPLs in a single command.
The recommended steps to build TPLs are:
Create a host-config file that sets all system-specific CMake variables (compiler and library paths, configuration flags, etc.) Take a look at host-config examples.
Configure via
config-build.py
script:cd thirdPartyLibs python scripts/config-build.py --hostconfig=/path/to/host-config.cmake --buildtype=Release --installpath=/path/to/install/dir -DNUM_PROC=8
where
--buildpath
or-bp
is the build directory (by default, created under current).--installpath
or-ip
is the installation directory(wrapsCMAKE_INSTALL_PREFIX
).--buildtype
or-bt
is a wrapper to theCMAKE_BUILD_TYPE
option.--hostconfig
or-hc
is a path to host-config file.all other command-line options are passed to CMake.
Run the build:
cd <buildpath> make
Warning
Do not provide
-j
argument tomake
here, since the top-level make only launches sub-project builds. Instead use-DNUM_PROC
option above, which is passed to each sub-project’smake
command.
You may also run the CMake configure step manually instead of relying on config-build.py
.
The full TPL build may take anywhere between 15 minutes and 2 hours, depending on your machine, number of threads and libraries enabled.
Note
An exception from the above pattern, sphinx
is currently not a part of the TPL bundle and must be installed with your Python or package manager.
Note
PETSc build currently downloads pt-scotch from the internet.
If you do not have access to internet, modify the ./configure step of petsc in CMakeLists.txt and change the --download-ptscotch
option accordingly.
pt-scotch also relies on bison and flex.
Installing dependencies individually
You may also install each individual TPL separately, either manually or through a package manager. This is a more difficult route, since you are responsible for configuring dependencies in a compatible manner. Again, we strongly recommend using the exact versions listed above, to avoid possible build problems.
You may look at our TPL CMake script to see how we configure TPL builds.