Skip to content

Building from source

Hannes Hauswedell edited this page May 18, 2016 · 23 revisions

Getting the source

Either download the source from the [releases] (https://github.com/seqan/lambda/releases) page as lambda-vX.Y.Z.tar.gz or check out the master branch with git:

% git clone https://github.com/seqan/lambda.git

The latest master branch is not always guaranteed to build, although I do my best to prevent breakage. Current status of the master branch: Travis CI build status

Build requirements

  • platforms: Linux, FreeBSD, MacOS X or OpenBSD (only 64bit tested for each)
  • compilers: gcc ≥ 4.9.1, clang ≥ 3.8.0 or icc ≥ 16.0.2 (GCC is recommended)
  • cmake ≥ 3.0.0

Other platforms are currently not a priority, but I do accept patches if they don't break anything else.

Build instructions

% tar xzf lambda-vX.Y.Z.tar.gz
% mkdir -p lambda-build/release
% cd lambda-build/release
% cmake ../../lambda-vX.Y.Z
% make -j2

Please be aware that due to excessive use of templating and compile-time optimizations the build might take well over 10min. If your most recent version of GCC is not the default, you have to give it the path with -DCMAKE_CXX_COMPILER=/path/to/g++.

For unknown reasons mac builds are even slower at the moment and can take more than 30min.

Build options

NAME description default since
LAMBDA_FASTBUILD Setting this is useful for debugging, because the build will be faster. Only BLASTP and BLASTX support will be built. off 0.9.0
LAMBDA_NATIVE_BUILD Deactivating this will disable CPU-specific optimization, but in return your binary will work on different hardware than the one you are building from. on 0.9.0
LAMBDA_STATIC_BUILD Activate to include all libs in the binary. This will result in a bigger binary but in return work on different software than the one you are building from (e.g. compiler and OS version). off 0.9.0
LAMBDA_MMAPPED_DB Use memory-mapped IO to access the database. on 0.9.1
LAMBDA_LINGAPS_OPT This activates optimized codepaths for linear gaps costs (i.e. additional gap open cost == 0). It has no drawbacks other than increased compile time and binary size. off 1.0.0

To build portable binaries of Lambda, deactivate native builds and activate static builds, i.e. pass -DLAMBDA_NATIVE_BUILD=0 -DLAMBDA_STATIC_BUILD=1 to cmake.

Please note that it is not possible to build completely static binaries on Mac OS X, but the the flag at least packages the compiler specific bits into the binary.