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 tables below list the dependencies and the relevant CMake variables.
The exact versions that GEOS is tested with are defined in the
thirdPartyLibs CMake script
(and, for Spack builds, in scripts/spack_configs/versions.yaml of the same repository), which is the reference.
Some of these libraries may have their own system prerequisites.
Libraries
The following libraries are linked to by GEOS:
Name |
Enable option |
Path variable |
Description |
|---|---|---|---|
|
|
Library for collecting metadata from HPC application runs, and distributing that metadata to subscriber tools. |
|
|
|
Instrumentation and performance profiling library. |
|
mandatory |
|
Simplified Data Exchange for HPC Simulations. |
|
mandatory |
|
Copy-hiding array abstraction to automatically migrate data between memory spaces (includes Umpire). |
|
mandatory |
|
Collection of C++ software abstractions that enable architecture portability for HPC applications. |
|
mandatory |
|
Formatting library. |
|
mandatory |
|
High-performance data management and storage suite. |
|
mandatory |
|
Light-weight, simple and fast XML parser for C++ with XPath support. |
|
|
|
Mathematical Expression Parser and JIT Compiler (used by |
|
|
|
Serial graph partitioning library. |
|
|
|
Parallel graph partitioning library. Should be built with 64-bit |
|
|
|
Graph partitioning library (alternative to ParMETIS). |
|
|
|
A suite of sparse matrix software. |
|
|
|
General purpose library for the direct solution of large, sparse, nonsymmetric systems of linear equations. |
|
|
|
Library of high performance preconditioners and solvers for large sparse linear systems on massively parallel computers. |
|
|
|
Driver for configuring hypre solvers from YAML files. |
|
|
|
Suite of data structures and routines for the scalable (parallel) solution of scientific applications. |
|
|
|
Collection of reusable scientific software libraries, known in particular for linear solvers. |
|
|
|
A Mesh and Field I/O Library and Scientific Database. |
|
|
|
Open source software for manipulating and displaying scientific data (VTK mesh input and output). |
Tools
The following tools are used as part of the build process to support GEOS development:
Name |
Enable option |
Path variable |
Description |
|---|---|---|---|
|
|
De facto standard tool for generating documentation from annotated C++ sources. |
|
|
|
A tool that makes it easy to create intelligent and beautiful documentation. |
|
|
|
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.
Docker images with all dependencies already compiled are published for every TPL update (see Fastest path: Docker or GitHub Codespaces). The Dockerfiles used to create them are part of the thirdPartyLibs repository.
Building bundled dependencies
To simplify the process of building TPLs, we provide a git repository thirdPartyLibs. It contains a CMake script that downloads the exact TPL versions required and builds all of them in a single command (the build machine therefore needs internet access). A step-by-step example is given in the Quick Start Guide.
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.pyscript:cd thirdPartyLibs python3 scripts/config-build.py --hostconfig=/path/to/host-config.cmake --buildtype=Release --installpath=/path/to/install/dir -DNUM_PROC=8
The options are the same as for GEOS (see Building GEOS).
-DNUM_PROC=Nsets the number of cores used to build each library (default: all cores of the machine).Run the build:
cd <buildpath> make
Warning
Do not provide
-jargument tomakehere, since the top-level make only launches sub-project builds. Instead use the-DNUM_PROCoption above, which is passed to each sub-project’smakecommand.
You may also run the CMake configure step manually instead of relying on config-build.py.
The full TPL build may take anywhere between 30 minutes and a few 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.
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 used by the thirdPartyLibs repository, to avoid possible build problems.
You may look at our TPL CMake script to see how we configure TPL builds.