Requirements¶
Binary Releases¶
Pre-compiled binaries of the latest release of Salmon for a number different platforms are available available under the Releases tab of Salmon’s GitHub repository. You should be able to get started quickly by finding a binary from the list that is compatible with your platform. Additionally, you can obtain a Docker image of the latest version from DockerHub using:
> docker pull combinelab/salmon
Requirements for Building from Source¶
A C++17 conformant compiler
CMake 3.24 or newer. Salmon uses the CMake build system to check, fetch and install dependencies, and to compile and install Salmon. CMake is available for all major platforms (though Salmon is currently unsupported on Windows.)
Installation¶
After downloading the Salmon source distribution and unpacking it, change into the top-level directory:
> cd salmon
Salmon now provides CMakePresets.json presets for common workflows:
devfor local developmentreleasefor optimized buildsasanfor AddressSanitizer buildsci-system-depsfor package-first CIci-fetch-fallbackfor pinned fallback dependency builds
The preferred configure flow is:
> cmake --preset dev
Salmon prefers system packages for dependencies and can fall back to pinned
source builds when SALMON_FETCH_MISSING_DEPS=ON. Required backend
dependencies are:
zlib-ngin compatibility mode for zlib functionalityhtslibfor SAM/BAM/CRAM I/Omimallocas the preferred allocator when ASan is disabled
Dependency resolution policy:
SALMON_USE_SYSTEM_DEPS=ON(default): preferfind_package()and use installed packages when available.SALMON_FETCH_MISSING_DEPS=ON(default): fetch pinned fallbacks for missing required dependencies.SALMON_FETCH_MISSING_DEPS=OFF: fail configure when required dependencies are not available from the system.
Supported CMake cache options are:
SALMON_ENABLE_TESTSSALMON_ENABLE_BENCHMARKSSALMON_WARNINGS_AS_ERRORSSALMON_ENABLE_LTOSALMON_ENABLE_ASANSALMON_USE_SYSTEM_DEPSSALMON_FETCH_MISSING_DEPSSALMON_USE_ZLIB_NGSALMON_USE_MIMALLOCSALMON_USE_HTSLIB
Legacy knobs like FETCH_BOOST and TBB_RECONFIGURE are not part of the
supported interface.
Examples:
development configure:
> cmake --preset dev
release configure:
> cmake --preset release
If you prefer to pass flags manually, you can still run the CMake configure step as follows:
> cmake [FLAGS] ..
The above command is the CMake configuration step. Next, run the build:
> make
If the build is successful, the appropriate executables and libraries should be created. Note that CMake has colored output by default, and link steps may appear in red; this does not itself indicate a build failure.
Finally, after everything is built, the libraries and executable can be installed with:
> make install
You can test the installation by running
> make test
This should run a simple test and tell you if it succeeded or not.