source: trunk/README @ 3439

Last change on this file since 3439 was 3439, checked in by Peter, 7 years ago

merge release 0.13 into trunk

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
  • Property svn:mime-type set to text/x-trac-wiki
File size: 8.3 KB
[2734]1$Id: README 3439 2015-11-20 05:41:52Z peter $
[1939]3= About yat =
[1939]5This directory contains the yat library. For an overview of the
6project, visit
11= Configuring and building yat =
[1262]13 1. If you checked out this project from the subversion repository you
14    must run '`bootstrap`' to initialize the build system.
15 2. Issue '`./configure`' to create the Makefiles. Optionally run
16    configure with '`--enable-debug`', which will turn on debug
17    options.
18 3. Compile with '`make`'.
[2213]19 4. '`make doc`' will generate documentation.
20 5. Optionally do '`make check`' to run test programs.
[1303]21 6. Issue '`make install`' to install the package on your system,
22    documentation will not be installed if documentation was not
[1939]23    generated above. Default installation location is `/usr/local`;
[1303]24    this can be changed with
25    '`./configure --prefix=/dir/to/install/to`'.
[2437]26 7. Optionally do '`make installcheck`' to verify that intallation
27    completed correctly.
[1939]29The `configure` script has additional options; `./configure --help`
30will offer you those choices or refer to Requirements below.
[1059]32= Requirements =
[1262]34Except for the obviously needed C++ compiler there are a few packages
35and programs required for compiling yat and generate supporting
36material. The configure script will look for required programs and
37report failure to meet the requirements. Here we list some of the
[1557]38requirements, but omit required standard utilities such as echo and
[1262]39sed since these are normally available.
[1262]41== Required packages ==
[1262]43=== GSL ===
[1262]45GNU Scientific Library, [ GSL] version
[1939]461.8 or later. If you have GSL installed in a non-standard location,
[2129]47`./configure --with-gsl=DIR` can be useful to provide the location of
48GSL. The `gsl-config` script, which is used to retrieve needed
49compiler and linker flags, is expected to be found in `DIR/bin/`. The
50check for existing GSL can be turned off with option
51`--without-gsl`. This can be useful, for example, if gsl-config is not
52available at configure time but header file will be available at make
[1262]55=== BLAS ===
[1262]57A C implementation of Basic Linear Algebra Subprograms
58([ BLAS]) is required. GSL comes with a
59reference implementation, but you should consider getting a hardware
60optimized implementation. ATLAS provides optimized BLAS (see below).
[1939]62The `configure` script searches for many different BLAS libraries in a
[2019]63specific order (for details refer to `m4/yat_cblas.m4`). If you want
64to use a specific CBLAS library, `./configure --with-cblas=LIB` may be
[2028]65useful. Note, however, that the chosen/detected CBLAS library is not
66hard-coded into the installed libyat, but a user can choose a
[2029]67different CBLAS when she links her application. A way to access which
[2028]68CBLAS was detected during the configuration is to access the
69yat-config script directly or via the autoconf macros included in the
70distribution. If you do want to hard-code a choice of CBLAS into the
71installed libyat, you may provide the appropriate value to LIBS. The
72following line, for example:
[2733]74  #> ./configure LIBS=-lcblas
[2410]76will hard-code the choice of -lcblas into libyat.
[1325]78=== Boost ===
[2153]80[ Boost] version 1.35 or later. If you have Boost
[1939]81installed in a non-standard location, `./configure --with-boost=DIR`
82can be useful to provide the location of Boost. Boost header files are
[2786]83expected to be found in `DIR/include/` and boost libraries are
[2916]84expected to be found in `DIR/lib/`. The `configure` script tries to
85detect libraries `boost_thread` and `boost_thread`. The name of a
86boost library typically depends on its configuration (see boost's
87naming convention) and there may be several versions/configurations of
88the same library installed. The `configure` tries to pick one of the
89available libraries, wchih can be overridden with `./configure
90--with-boost-thread=foo` and `configure --with-boost-system=foo`,
91respectively. The check for boost can be turned off with
[1262]94=== quiet nan ===
[1262]96Quiet NaN's must be supported.
[1353]98=== infinity ===
100infinity for type double must be supported.
[1262]102== Optional packages ==
[3364]104=== HTSLIB ===
[3364]106In order to enable functionality related to bam files, either htslib
107( or its predecessor samtools
108( must be available. Header file
109<sam.h> is required as well as either 'libhts' or 'libbam'. The configure
110script will try to detect whether <sam.h> is available as 'sam.h',
111'htslib/sam.h', 'bam/sam.h', or 'samtools/sam.h'. If you have header
112files installed outside compiler's search path, you can help the
113compiler with `./configure CPPFLAGS=-I<include dir>` when header files
114are found in directory `<include dir>`. Configure detects whether
[3439]115header files are from htslib or old samtools and looks for either
116libhts or libbam accordingly. If library is installed outside linker's
117search path, in `<libdir>`, you can run `./configure LDFLAGS=-L<lib
118dir>`. You can build yat without bam support by running `./configure
[3439]121The samtools program is needed for some tests related to bam
[3364]122functionality. If samtools is not found by configure, these tests will
123be skipped. If you have samtools available outside PATH, you can help
124configure to find it with `./configure SAMTOOLS=/path/to/samtools`.
[2943]126=== ZLIB ===
128Zlib available from is required to build samtools
129and consequently needed to build yat too, unless you turn off samtools
130support (please refer to samtools section above). Header file `zlib.h`
131and library libz are required. If installed in an unconventional
132location you can help the compiler/linker with `CPPFLAGS=-I<include
133dir>` and `LDFLAGS=-L<lib dir>`, respectively.
[1262]135=== ATLAS ===
[1059]137GSL supplies a reference implementation of BLAS. You may want to
[1262]138consider using hardware optimized BLAS. The
139[ ATLAS] software provides an
140automatic hardware optimized BLAS library.
142The detection of ATLAS is supported by the yat configuration script
143but in many cases the ATLAS libraries are installed in
[1262]144non-conventional directory locations. As an example, on Fedora 8,
145ATLAS libraries are
[1059]146located in /usr/lib/atlas or /usr/lib64/atlas depending on your
147hardware architecture. If you have ATLAS installed and the configure
148script fails to locate it, try to add the location to the atlas
[1078]149libraries when running configure:
[2733]151  #> ./configure LDFLAGS="-L/usr/lib64/atlas"
[1262]153=== Doxygen ===
[1442]155[ Doxygen] 1.5 (or newer) is required for
[2557]156generation of the API documentation. If doxygen application is
157missing, generation of API documentation is disabled.
[1272]159= Documentation =
[2488]161The API documentation for the latest release is available in HTML and
162can be found through If you wish to build a
163local copy, issue `make doc` and you will find the documents in
[2870]164directory `doc/html/`.
[1368]166= Developers =
[2733]168See file README.developer for developer specific information.
[2080]170= Mac OS X =
172On Mac OS X you can create a universal library, a library that works
173on multiple systems. You can do this by specifying multiple `-arch`
174options to the compiler (but not to the preprocessor):
176 #> ./configure CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
177                CXXCPP="g++ -E" --disable-dependency-tracking
179This will produce a universal yat library with 4 architectures. If
180your OS X does not support both Power-PC and Intel-based processors,
181you can omit these architectures. Also, required libraries, GSL and
182CBLAS, need to be available as universal libraries with desired
[2119]187Copyright (C) 2003 Jari Häkkinen, Peter Johansson
188Copyright (C) 2004 Jari Häkkinen
189Copyright (C) 2006, 2007, 2008 Jari Häkkinen, Peter Johansson
[3439]190Copyright (C) 2009, 2010, 2011, 2012, 2013, 2014, 2015 Peter Johansson
[1437]192This file is part of yat library,
194The yat library is free software; you can redistribute it and/or
195modify it under the terms of the GNU General Public License as
[1486]196published by the Free Software Foundation; either version 3 of the
[1262]197License, or (at your option) any later version.
199The yat library is distributed in the hope that it will be useful, but
200WITHOUT ANY WARRANTY; without even the implied warranty of
202General Public License for more details.
204You should have received a copy of the GNU General Public License
[1487]205along with yat. If not, see <>.
Note: See TracBrowser for help on using the repository browser.