Building Ports of Call
Since Ports of Call is header only, there is no build step. However, it can be included in your project in multiple ways: it can be pre-installed, or used in-tree in a larger project.
Installation
Clone Ports of call and install it with:
git clone git@github.com:lanl/ports-of-call.git
mkdir -p ports-of-call/build
cd ports-of-call/build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/directory ..
make install
Including in-tree
If you want to include Ports of Call in a project in-tree, you can
easily just include the two header files. Alternatively, our cmake
build system supports in-tree builds. Simply add the repository as a
subdirectory in your project. ports-of-call defines the CMake target
ports-of-call::ports-of-call
, which sets the appropriate include paths.
For in-tree builds, you can define exactly one of the preprocessor macros
PORTABILITY_STRATEGY_KOKKOS
, PORTABILITY_STRATEGY_CUDA
or PORTABILITY_STRATEGY_NONE
.
If none are set, the default is PORTABILITY_STRATEGY_NONE
.
Note that it is the users repsonsibility to ensure that the appropriate portability strategy is set. Furthermore, ports-of-call does not engage in any dependency resolution, so the user is further required to ensure that the appropriate dependencies are available when building.
CMake
The prefered apporach for integratting into your project is is to use the CMake find_package pattern. If ports-of-call has been installed and is visible to the environment
Spack
Ports of call is available within Spack. If you have spack installed, simply call
spack install ports-of-call
We also provide a spackage for Ports of Call within the the source repository. To use it, call:
spack repo add ports-of-call/spack-repo
spack install ports-of-call
The spack repo supports one variant, +doc
, which adds tooling for
building the docs.