System Requirements =================== Samtools requires the zlib library , the bzip2 library , liblzma and (optionally) a curses or GNU ncurses library . The bzip2 and liblzma dependencies can be removed if full CRAM support is not needed - see HTSlib's INSTALL file for details. The following programs are required: GNU make C compiler (e.g. gcc or clang) In addition, building the configure script requires: autoheader autoconf Running the configure script uses awk, along with a number of standard UNIX tools (cat, cp, grep, mv, rm, sed, among others). Almost all installations will have these already. Running the test harness (make test) uses: bash perl If you are unsure about this, be sure to use './configure' to determine whether you have these libraries and to help diagnose which packages may need to be installed on your build machine to provide them. Building Configure ================== This step is only needed if configure.ac has been changed, or if configure does not exist (for example, when building from a git clone). The configure script and config.h.in can be built by running: autoheader autoconf -Wno-syntax If you have a full GNU autotools install, you can alternatively run: autoreconf When running these tools, you may see warnings about AC_CONFIG_SUBDIRS. These are expected, and should be ignored. Basic Installation ================== To build and install Samtools, 'cd' to the samtools-1.x directory containing the package's source and type the following commands: ./configure make make install The './configure' command checks your build environment and allows various optional functionality to be enabled (see Configuration below). If you don't want to select any optional functionality, you may wish to omit configure and just type 'make; make install' as for previous versions of samtools. However if the build fails you should run './configure' as it can diagnose the common reasons for build failures. The 'make' command builds samtools and various miscellaneous utilities. If compilation fails you should run './configure' as it can diagnose problems with your build environment that cause build failures. (The bgzip, htsfile, and tabix utilities are provided by HTSlib. If you are not also compiling HTSlib separately, you may wish to compile these utilities in the associated copy of HTSlib. Type 'make all all-htslib' to do this.) The 'make install' command installs the samtools executable and various scripts and executables from misc/ and a manual page to /usr/local. The installation location can be changed by configuring with --prefix=DIR or via 'make prefix=DIR install' (see Installation Locations below). (If you have not also installed HTSlib separately, you may wish to install the bgzip, htsfile, and tabix utilities from the associated copy of HTSlib. Type 'make install install-htslib' to do this.) Typically you will want to enable HTSlib's HTTPS/etc plugin etc. See README for recipes for typical installation. Configuration ============= By default, './configure' examines your build environment, searching for a usable HTSlib and checking for requirements such as the curses development files, and arranges for a plain samtools build. This samtools release contains a copy of the HTSlib source code which will be used to build samtools. If you already have a system-installed HTSlib or another HTSlib that you would prefer to build against, you can arrange this via the --with-htslib option. The following configure options can be used to enable various features and specify further optional external requirements: --with-htslib=DIR Specifies the HTSlib source tree or installation directory that samtools should use to parse bioinformatics file formats etc. Configure will check that DIR appears to contain HTSlib source files or to be the root of an installation directory (i.e., it has 'include' and 'lib' subdirectories containing HTSlib headers and libraries). By default, configure looks for an HTSlib source tree within or alongside the samtools source directory; if there are several likely candidates, you will have to choose one via this option. --with-htslib=system Ignores any nearby HTSlib source trees, and builds samtools using an existing HTSlib installation in a system directory (i.e., a directory already being searched by $CPPFLAGS/$LDFLAGS). --without-curses Omit the curses-based 'tview' subcommand from the build. If you do not have curses on your build machine or otherwise don't want the interactive tview subcommand, this option disables it and skips testing for working curses development files. --enable-configure-htslib When building with an HTSlib source tree, run HTSlib's configure script as well. HTSlib configure options can also be used and will be passed down to the HTSlib configure. See HTSlib's INSTALL documentation for details of these options. If you are building with HTSlib source in a subdirectory of the samtools tree, --enable-configure-htslib is turned on by default and the HTSlib configure script will be run automatically. This is the case for the samtools release tar archives which include an embedded copy of HTSlib. The configure script also accepts the usual options and environment variables for tuning installation locations and compilers: type './configure --help' for details. For example, ./configure CC=icc --prefix=/opt/icc-compiled would specify that samtools is to be built with icc and installed into bin, lib, etc subdirectories under /opt/icc-compiled. Installation Locations ====================== By default, 'make install' installs samtools and the utilities under /usr/local/bin and manual pages under /usr/local/share/man. You can specify a different location to install Samtools by configuring with --prefix=DIR or specify locations for particular parts of HTSlib by configuring with --bindir=DIR and so on. Type './configure --help' for the full list of such install directory options. Alternatively you can specify different locations at install time by typing 'make prefix=DIR install' or 'make bindir=DIR install' and so on. Consult the list of prefix/exec_prefix/etc variables near the top of the Makefile for the full list of such variables that can be overridden. You can also specify a staging area by typing 'make DESTDIR=DIR install', possibly in conjunction with other --prefix or prefix=DIR settings. For example, make DESTDIR=/tmp/staging prefix=/opt would install into bin and share/man subdirectories under /tmp/staging/opt.