Skip to content

Building from source

Hannes Hauswedell edited this page Oct 13, 2016 · 23 revisions

Getting the source

Either download the source from the [releases] (https://github.com/seqan/lambda/releases) page as lambda-lambda-vX.Y.Z.tar.gz and unzip the file:

% tar xzf lambda-lambda-vX.Y.Z.tar.gz

Or check out the master branch with git:

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

The master branch should always be in a buildable state, unless this indicator is red: Travis CI build status [in that case use the latest release!]

If you want to use a locally installed version of the SeqAn library, remove the --recursive from the call.

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

% mkdir -p lambda-build/release
% cd lambda-build/release
% cmake ../../lambda              # or in the case of a release ../../lambda-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++.

Note that if you overwrite the compiler, you might also have to specify new paths to standard libraries, e.g.

% cmake ../../lambda \
-DCMAKE_CXX_COMPILER=clang++39 \
-DCMAKE_CXX_FLAGS="-L/usr/local/llvm39/lib" \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-rpath=/usr/local/llvm39/lib/"

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.